Skip to content

Commit

Permalink
[YQL-18456] Fix GROUPING for JOIN'ed source (merge to stable) (ydb-pl…
Browse files Browse the repository at this point in the history
  • Loading branch information
nepal authored May 24, 2024
1 parent c2973da commit f56741f
Show file tree
Hide file tree
Showing 9 changed files with 106 additions and 13 deletions.
10 changes: 9 additions & 1 deletion ydb/library/yql/sql/v1/select.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2578,10 +2578,18 @@ class TNestedProxySource: public IProxySource {
hintColumn = TStringBuilder() << "GroupingHint" << Hints.size();
ui64 hint = 0;
if (GroupByColumns.empty()) {
const bool isJoin = GetJoin();
for (const auto& groupByNode: GroupBy) {
auto namePtr = groupByNode->GetColumnName();
YQL_ENSURE(namePtr);
GroupByColumns.insert(*namePtr);
TString column = *namePtr;
if (isJoin) {
auto sourceNamePtr = groupByNode->GetSourceName();
if (sourceNamePtr && !sourceNamePtr->empty()) {
column = DotJoin(*sourceNamePtr, column);
}
}
GroupByColumns.insert(column);
}
}
for (const auto& column: columns) {
Expand Down
4 changes: 2 additions & 2 deletions ydb/library/yql/tests/sql/dq_file/part0/canondata/result.json
Original file line number Diff line number Diff line change
Expand Up @@ -376,9 +376,9 @@
],
"test.test[aggregate-group_by_ru_join_qualified-default.txt-Debug]": [
{
"checksum": "31a298ea601ddc6e0ff0628b7aee9511",
"checksum": "170a9101b3c4ee7f7878bd92a222439e",
"size": 6282,
"uri": "https://{canondata_backend}/1871182/4d40c08aee85fb231923402132a00b2ae47137cc/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Debug_/opt.yql_patched"
"uri": "https://{canondata_backend}/1937150/7402ba064edb4a08491a39a474f221b5e8f453b0/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Debug_/opt.yql_patched"
}
],
"test.test[aggregate-group_by_ru_join_qualified-default.txt-Plan]": [
Expand Down
22 changes: 22 additions & 0 deletions ydb/library/yql/tests/sql/dq_file/part8/canondata/result.json
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,28 @@
}
],
"test.test[aggregate-group_by_rollup_with_filter--Results]": [],
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Analyze]": [
{
"checksum": "12d2f7f78fd479c6ee5d8de5c95e9973",
"size": 9950,
"uri": "https://{canondata_backend}/1600758/9ce2ecd88b57ecedef1530f890d737b6cf95d1ba/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Analyze_/plan.txt"
}
],
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Debug]": [
{
"checksum": "1a99f42cca3e3282357824842ba45a1c",
"size": 6462,
"uri": "https://{canondata_backend}/1600758/9ce2ecd88b57ecedef1530f890d737b6cf95d1ba/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Debug_/opt.yql_patched"
}
],
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Plan]": [
{
"checksum": "12d2f7f78fd479c6ee5d8de5c95e9973",
"size": 9950,
"uri": "https://{canondata_backend}/1600758/9ce2ecd88b57ecedef1530f890d737b6cf95d1ba/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Plan_/plan.txt"
}
],
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Results]": [],
"test.test[aggregate-group_by_session_aliases--Analyze]": [
{
"checksum": "d87907e840b433d102869bc453199616",
Expand Down
14 changes: 14 additions & 0 deletions ydb/library/yql/tests/sql/hybrid_file/part3/canondata/result.json
Original file line number Diff line number Diff line change
Expand Up @@ -517,6 +517,20 @@
"uri": "https://{canondata_backend}/1942671/a6ef6234ecec8bdd9b5f7ec30206378c9f7268ef/resource.tar.gz#test.test_aggregate-group_by_ru_join_agg--Plan_/plan.txt"
}
],
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Debug]": [
{
"checksum": "c3ef2af8f10ce77ee9015bf0c4c79db9",
"size": 13401,
"uri": "https://{canondata_backend}/1777230/beb165d6e79c23450ff315cfcef6d301bcdcad8a/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Debug_/opt.yql_patched"
}
],
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Plan]": [
{
"checksum": "6e93bcf7ef21f067a35b81529de60ba0",
"size": 18269,
"uri": "https://{canondata_backend}/1777230/beb165d6e79c23450ff315cfcef6d301bcdcad8a/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Plan_/plan.txt"
}
],
"test.test[aggregate-group_by_session_aliases--Debug]": [
{
"checksum": "c82e11207402f4c17a6af0781f699588",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -379,9 +379,9 @@
],
"test.test[aggregate-group_by_ru_join_qualified-default.txt-Debug]": [
{
"checksum": "2de50f8558654eb2bced8e384b220726",
"size": 12106,
"uri": "https://{canondata_backend}/1936842/15d1b251a19a947bc78bcd914d26903ce91d665f/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Debug_/opt.yql_patched"
"checksum": "fba060d0a3484cfccfbf38359a7ca991",
"size": 12112,
"uri": "https://{canondata_backend}/1937150/43d73f3af108e6801b6104b96ce51a46f26b2cbc/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Debug_/opt.yql_patched"
}
],
"test.test[aggregate-group_by_ru_join_qualified-default.txt-Plan]": [
Expand Down
18 changes: 16 additions & 2 deletions ydb/library/yql/tests/sql/sql2yql/canondata/result.json
Original file line number Diff line number Diff line change
Expand Up @@ -2295,11 +2295,18 @@
"uri": "https://{canondata_backend}/1942278/beab6e829114ea03a5df7881bc0d363cdf567406/resource.tar.gz#test_sql2yql.test_aggregate-group_by_ru_join_agg_/sql.yql"
}
],
"test_sql2yql.test[aggregate-group_by_ru_join_grouping]": [
{
"checksum": "3a0b2a005b9f895baf3d97cb3423e330",
"size": 5822,
"uri": "https://{canondata_backend}/1903280/ab0a81bc2e9a5c845965f3189b0aa541c326bedf/resource.tar.gz#test_sql2yql.test_aggregate-group_by_ru_join_grouping_/sql.yql"
}
],
"test_sql2yql.test[aggregate-group_by_ru_join_qualified]": [
{
"checksum": "196aa6941d87e26ef42f2c107018e153",
"checksum": "ccc9d86886fdb63b573d24ea94422d8f",
"size": 4684,
"uri": "https://{canondata_backend}/1942278/beab6e829114ea03a5df7881bc0d363cdf567406/resource.tar.gz#test_sql2yql.test_aggregate-group_by_ru_join_qualified_/sql.yql"
"uri": "https://{canondata_backend}/1903280/ab0a81bc2e9a5c845965f3189b0aa541c326bedf/resource.tar.gz#test_sql2yql.test_aggregate-group_by_ru_join_qualified_/sql.yql"
}
],
"test_sql2yql.test[aggregate-group_by_ru_join_simple]": [
Expand Down Expand Up @@ -20747,6 +20754,13 @@
"uri": "https://{canondata_backend}/1880306/64654158d6bfb1289c66c626a8162239289559d0/resource.tar.gz#test_sql_format.test_aggregate-group_by_ru_join_agg_/formatted.sql"
}
],
"test_sql_format.test[aggregate-group_by_ru_join_grouping]": [
{
"checksum": "d672281f481d0202c45207901dd7b6b1",
"size": 351,
"uri": "https://{canondata_backend}/1903280/ab0a81bc2e9a5c845965f3189b0aa541c326bedf/resource.tar.gz#test_sql_format.test_aggregate-group_by_ru_join_grouping_/formatted.sql"
}
],
"test_sql_format.test[aggregate-group_by_ru_join_qualified]": [
{
"checksum": "19d2225658a174037c0c87b8833482e7",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
USE plato;

$t = select distinct key from Input;

select
key, subkey,
max(value) as max_val,
grouping(a.key, a.subkey) as g_ks,
grouping(a.subkey, a.key) as g_sk,
grouping(a.key) as g_k,
grouping(a.subkey) as g_s,
from Input as a
join $t as b on a.key = b.key
group by rollup(a.key, a.subkey);
Original file line number Diff line number Diff line change
Expand Up @@ -345,9 +345,9 @@
],
"test.test[aggregate-group_by_ru_join_qualified-default.txt-Debug]": [
{
"checksum": "04b16b1a4c4d3dde20fc59e0d639c1d7",
"size": 10127,
"uri": "https://{canondata_backend}/1925842/f6c2faae03131a33de092bcf32cecce3e4715165/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Debug_/opt.yql"
"checksum": "2f14245ec79cc47f9627e6db4a2712ae",
"size": 10117,
"uri": "https://{canondata_backend}/1937150/405a288927b41cb521a886c3ea36bf5749dfa5c2/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Debug_/opt.yql"
}
],
"test.test[aggregate-group_by_ru_join_qualified-default.txt-Plan]": [
Expand All @@ -359,9 +359,9 @@
],
"test.test[aggregate-group_by_ru_join_qualified-default.txt-Results]": [
{
"checksum": "8f427bb3f5cfaee6547cfdff5f583d25",
"checksum": "740116a9fb4cf92c9affe155b283ff69",
"size": 4409,
"uri": "https://{canondata_backend}/1946324/67e5945dc28520630af9ac756d628fe05ed75ccf/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Results_/results.txt"
"uri": "https://{canondata_backend}/1937150/405a288927b41cb521a886c3ea36bf5749dfa5c2/resource.tar.gz#test.test_aggregate-group_by_ru_join_qualified-default.txt-Results_/results.txt"
}
],
"test.test[aggregate-group_compact_sorted_with_diff_order--Debug]": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,27 @@
"uri": "https://{canondata_backend}/937458/1e755da0096e05267f6799f8a52aa91931cfd0fa/resource.tar.gz#test.test_aggregate-group_by_rollup_with_filter--Results_/results.txt"
}
],
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Debug]": [
{
"checksum": "03ba18c64f9646628b54c395546d9da4",
"size": 10879,
"uri": "https://{canondata_backend}/1937150/4459582cc65335f3d937232300e125218ede7d86/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Debug_/opt.yql"
}
],
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Plan]": [
{
"checksum": "79c0cfbb9331af7c81e7e1695d89cca1",
"size": 15862,
"uri": "https://{canondata_backend}/1937150/4459582cc65335f3d937232300e125218ede7d86/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Plan_/plan.txt"
}
],
"test.test[aggregate-group_by_ru_join_grouping-default.txt-Results]": [
{
"checksum": "bfe58549276810f7ce6e67cd44d7c6df",
"size": 6019,
"uri": "https://{canondata_backend}/1937150/4459582cc65335f3d937232300e125218ede7d86/resource.tar.gz#test.test_aggregate-group_by_ru_join_grouping-default.txt-Results_/results.txt"
}
],
"test.test[aggregate-group_by_session_aliases--Debug]": [
{
"checksum": "9e84fc0079d8c4b93709d463336c6a0e",
Expand Down

0 comments on commit f56741f

Please sign in to comment.