Skip to content

Commit 473d388

Browse files
committed
[YQL-18456] Fix GROUPING for JOIN'ed source (ydb-platform#4756)
1 parent 4137016 commit 473d388

File tree

9 files changed

+106
-13
lines changed

9 files changed

+106
-13
lines changed

ydb/library/yql/sql/v1/select.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2578,10 +2578,18 @@ class TNestedProxySource: public IProxySource {
25782578
hintColumn = TStringBuilder() << "GroupingHint" << Hints.size();
25792579
ui64 hint = 0;
25802580
if (GroupByColumns.empty()) {
2581+
const bool isJoin = GetJoin();
25812582
for (const auto& groupByNode: GroupBy) {
25822583
auto namePtr = groupByNode->GetColumnName();
25832584
YQL_ENSURE(namePtr);
2584-
GroupByColumns.insert(*namePtr);
2585+
TString column = *namePtr;
2586+
if (isJoin) {
2587+
auto sourceNamePtr = groupByNode->GetSourceName();
2588+
if (sourceNamePtr && !sourceNamePtr->empty()) {
2589+
column = DotJoin(*sourceNamePtr, column);
2590+
}
2591+
}
2592+
GroupByColumns.insert(column);
25852593
}
25862594
}
25872595
for (const auto& column: columns) {

ydb/library/yql/tests/sql/dq_file/part0/canondata/result.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -376,9 +376,9 @@
376376
],
377377
"test.test[aggregate-group_by_ru_join_qualified-default.txt-Debug]": [
378378
{
379-
"checksum": "31a298ea601ddc6e0ff0628b7aee9511",
379+
"checksum": "170a9101b3c4ee7f7878bd92a222439e",
380380
"size": 6282,
381-
"uri": "https://{canondata_backend}/1871182/4d40c08aee85fb231923402132a00b2ae47137cc/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Debug_/opt.yql_patched"
381+
"uri": "https://{canondata_backend}/1937150/7402ba064edb4a08491a39a474f221b5e8f453b0/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Debug_/opt.yql_patched"
382382
}
383383
],
384384
"test.test[aggregate-group_by_ru_join_qualified-default.txt-Plan]": [

ydb/library/yql/tests/sql/dq_file/part8/canondata/result.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,28 @@
395395
}
396396
],
397397
"test.test[aggregate-group_by_rollup_with_filter--Results]": [],
398+
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Analyze]": [
399+
{
400+
"checksum": "12d2f7f78fd479c6ee5d8de5c95e9973",
401+
"size": 9950,
402+
"uri": "https://{canondata_backend}/1600758/9ce2ecd88b57ecedef1530f890d737b6cf95d1ba/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Analyze_/plan.txt"
403+
}
404+
],
405+
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Debug]": [
406+
{
407+
"checksum": "1a99f42cca3e3282357824842ba45a1c",
408+
"size": 6462,
409+
"uri": "https://{canondata_backend}/1600758/9ce2ecd88b57ecedef1530f890d737b6cf95d1ba/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Debug_/opt.yql_patched"
410+
}
411+
],
412+
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Plan]": [
413+
{
414+
"checksum": "12d2f7f78fd479c6ee5d8de5c95e9973",
415+
"size": 9950,
416+
"uri": "https://{canondata_backend}/1600758/9ce2ecd88b57ecedef1530f890d737b6cf95d1ba/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Plan_/plan.txt"
417+
}
418+
],
419+
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Results]": [],
398420
"test.test[aggregate-group_by_session_aliases--Analyze]": [
399421
{
400422
"checksum": "d87907e840b433d102869bc453199616",

ydb/library/yql/tests/sql/hybrid_file/part3/canondata/result.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,20 @@
517517
"uri": "https://{canondata_backend}/1942671/a6ef6234ecec8bdd9b5f7ec30206378c9f7268ef/resource.tar.gz#test.test_aggregate-group_by_ru_join_agg--Plan_/plan.txt"
518518
}
519519
],
520+
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Debug]": [
521+
{
522+
"checksum": "c3ef2af8f10ce77ee9015bf0c4c79db9",
523+
"size": 13401,
524+
"uri": "https://{canondata_backend}/1777230/beb165d6e79c23450ff315cfcef6d301bcdcad8a/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Debug_/opt.yql_patched"
525+
}
526+
],
527+
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Plan]": [
528+
{
529+
"checksum": "6e93bcf7ef21f067a35b81529de60ba0",
530+
"size": 18269,
531+
"uri": "https://{canondata_backend}/1777230/beb165d6e79c23450ff315cfcef6d301bcdcad8a/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Plan_/plan.txt"
532+
}
533+
],
520534
"test.test[aggregate-group_by_session_aliases--Debug]": [
521535
{
522536
"checksum": "c82e11207402f4c17a6af0781f699588",

ydb/library/yql/tests/sql/hybrid_file/part7/canondata/result.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -379,9 +379,9 @@
379379
],
380380
"test.test[aggregate-group_by_ru_join_qualified-default.txt-Debug]": [
381381
{
382-
"checksum": "2de50f8558654eb2bced8e384b220726",
383-
"size": 12106,
384-
"uri": "https://{canondata_backend}/1936842/15d1b251a19a947bc78bcd914d26903ce91d665f/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Debug_/opt.yql_patched"
382+
"checksum": "fba060d0a3484cfccfbf38359a7ca991",
383+
"size": 12112,
384+
"uri": "https://{canondata_backend}/1937150/43d73f3af108e6801b6104b96ce51a46f26b2cbc/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Debug_/opt.yql_patched"
385385
}
386386
],
387387
"test.test[aggregate-group_by_ru_join_qualified-default.txt-Plan]": [

ydb/library/yql/tests/sql/sql2yql/canondata/result.json

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2302,11 +2302,18 @@
23022302
"uri": "https://{canondata_backend}/1942278/beab6e829114ea03a5df7881bc0d363cdf567406/resource.tar.gz#test_sql2yql.test_aggregate-group_by_ru_join_agg_/sql.yql"
23032303
}
23042304
],
2305+
"test_sql2yql.test[aggregate-group_by_ru_join_grouping]": [
2306+
{
2307+
"checksum": "3a0b2a005b9f895baf3d97cb3423e330",
2308+
"size": 5822,
2309+
"uri": "https://{canondata_backend}/1903280/ab0a81bc2e9a5c845965f3189b0aa541c326bedf/resource.tar.gz#test_sql2yql.test_aggregate-group_by_ru_join_grouping_/sql.yql"
2310+
}
2311+
],
23052312
"test_sql2yql.test[aggregate-group_by_ru_join_qualified]": [
23062313
{
2307-
"checksum": "196aa6941d87e26ef42f2c107018e153",
2314+
"checksum": "ccc9d86886fdb63b573d24ea94422d8f",
23082315
"size": 4684,
2309-
"uri": "https://{canondata_backend}/1942278/beab6e829114ea03a5df7881bc0d363cdf567406/resource.tar.gz#test_sql2yql.test_aggregate-group_by_ru_join_qualified_/sql.yql"
2316+
"uri": "https://{canondata_backend}/1903280/ab0a81bc2e9a5c845965f3189b0aa541c326bedf/resource.tar.gz#test_sql2yql.test_aggregate-group_by_ru_join_qualified_/sql.yql"
23102317
}
23112318
],
23122319
"test_sql2yql.test[aggregate-group_by_ru_join_simple]": [
@@ -20754,6 +20761,13 @@
2075420761
"uri": "https://{canondata_backend}/1880306/64654158d6bfb1289c66c626a8162239289559d0/resource.tar.gz#test_sql_format.test_aggregate-group_by_ru_join_agg_/formatted.sql"
2075520762
}
2075620763
],
20764+
"test_sql_format.test[aggregate-group_by_ru_join_grouping]": [
20765+
{
20766+
"checksum": "d672281f481d0202c45207901dd7b6b1",
20767+
"size": 351,
20768+
"uri": "https://{canondata_backend}/1903280/ab0a81bc2e9a5c845965f3189b0aa541c326bedf/resource.tar.gz#test_sql_format.test_aggregate-group_by_ru_join_grouping_/formatted.sql"
20769+
}
20770+
],
2075720771
"test_sql_format.test[aggregate-group_by_ru_join_qualified]": [
2075820772
{
2075920773
"checksum": "19d2225658a174037c0c87b8833482e7",
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
USE plato;
2+
3+
$t = select distinct key from Input;
4+
5+
select
6+
key, subkey,
7+
max(value) as max_val,
8+
grouping(a.key, a.subkey) as g_ks,
9+
grouping(a.subkey, a.key) as g_sk,
10+
grouping(a.key) as g_k,
11+
grouping(a.subkey) as g_s,
12+
from Input as a
13+
join $t as b on a.key = b.key
14+
group by rollup(a.key, a.subkey);

ydb/library/yql/tests/sql/yt_native_file/part0/canondata/result.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -345,9 +345,9 @@
345345
],
346346
"test.test[aggregate-group_by_ru_join_qualified-default.txt-Debug]": [
347347
{
348-
"checksum": "04b16b1a4c4d3dde20fc59e0d639c1d7",
349-
"size": 10127,
350-
"uri": "https://{canondata_backend}/1925842/f6c2faae03131a33de092bcf32cecce3e4715165/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Debug_/opt.yql"
348+
"checksum": "2f14245ec79cc47f9627e6db4a2712ae",
349+
"size": 10117,
350+
"uri": "https://{canondata_backend}/1937150/405a288927b41cb521a886c3ea36bf5749dfa5c2/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Debug_/opt.yql"
351351
}
352352
],
353353
"test.test[aggregate-group_by_ru_join_qualified-default.txt-Plan]": [
@@ -359,9 +359,9 @@
359359
],
360360
"test.test[aggregate-group_by_ru_join_qualified-default.txt-Results]": [
361361
{
362-
"checksum": "8f427bb3f5cfaee6547cfdff5f583d25",
362+
"checksum": "740116a9fb4cf92c9affe155b283ff69",
363363
"size": 4409,
364-
"uri": "https://{canondata_backend}/1946324/67e5945dc28520630af9ac756d628fe05ed75ccf/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Results_/results.txt"
364+
"uri": "https://{canondata_backend}/1937150/405a288927b41cb521a886c3ea36bf5749dfa5c2/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Results_/results.txt"
365365
}
366366
],
367367
"test.test[aggregate-group_compact_sorted_with_diff_order--Debug]": [

ydb/library/yql/tests/sql/yt_native_file/part8/canondata/result.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,27 @@
374374
"uri": "https://{canondata_backend}/937458/1e755da0096e05267f6799f8a52aa91931cfd0fa/resource.tar.gz#test.test_aggregate-group_by_rollup_with_filter--Results_/results.txt"
375375
}
376376
],
377+
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Debug]": [
378+
{
379+
"checksum": "03ba18c64f9646628b54c395546d9da4",
380+
"size": 10879,
381+
"uri": "https://{canondata_backend}/1937150/4459582cc65335f3d937232300e125218ede7d86/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Debug_/opt.yql"
382+
}
383+
],
384+
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Plan]": [
385+
{
386+
"checksum": "79c0cfbb9331af7c81e7e1695d89cca1",
387+
"size": 15862,
388+
"uri": "https://{canondata_backend}/1937150/4459582cc65335f3d937232300e125218ede7d86/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Plan_/plan.txt"
389+
}
390+
],
391+
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Results]": [
392+
{
393+
"checksum": "bfe58549276810f7ce6e67cd44d7c6df",
394+
"size": 6019,
395+
"uri": "https://{canondata_backend}/1937150/4459582cc65335f3d937232300e125218ede7d86/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Results_/results.txt"
396+
}
397+
],
377398
"test.test[aggregate-group_by_session_aliases--Debug]": [
378399
{
379400
"checksum": "9e84fc0079d8c4b93709d463336c6a0e",

0 commit comments

Comments
 (0)