Skip to content

Commit

Permalink
[YQL-18511] Fix GROUPING + CASE (merge to stable) (ydb-platform#5142)
Browse files Browse the repository at this point in the history
  • Loading branch information
nepal authored Jun 3, 2024
1 parent ce0c215 commit 7c04f77
Show file tree
Hide file tree
Showing 8 changed files with 128 additions and 22 deletions.
4 changes: 2 additions & 2 deletions ydb/library/yql/sql/v1/sql_expression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1299,7 +1299,7 @@ TNodePtr TSqlExpression::CaseRule(const TRule_case_expr& rule) {
TSqlExpression condExpr(Ctx, Mode);
branches.back().Pred = condExpr.Build(block.GetRule_expr2());
if (caseExpr) {
branches.back().Pred = BuildBinaryOp(Ctx, Ctx.Pos(), "==", caseExpr, branches.back().Pred);
branches.back().Pred = BuildBinaryOp(Ctx, Ctx.Pos(), "==", caseExpr->Clone(), branches.back().Pred);
}
if (!branches.back().Pred) {
return {};
Expand Down Expand Up @@ -1998,7 +1998,7 @@ TSqlExpression::TCaseBranch TSqlExpression::ReduceCaseBranches(TVector<TCaseBran
}

TCaseBranch result;
result.Pred = new TCallNodeImpl(Ctx.Pos(), "Or", preds);
result.Pred = new TCallNodeImpl(Ctx.Pos(), "Or", CloneContainer(preds));
result.Value = BuildBuiltinFunc(Ctx, Ctx.Pos(), "If", { left.Pred, left.Value, right.Value });
return result;
}
Expand Down
14 changes: 7 additions & 7 deletions ydb/library/yql/tests/sql/dq_file/part12/canondata/result.json
Original file line number Diff line number Diff line change
Expand Up @@ -265,23 +265,23 @@
],
"test.test[aggregate-group_by_rollup_grouping_hum--Analyze]": [
{
"checksum": "16fe9ffb97171d021e5c287c959d9311",
"checksum": "23f6ef9781306d246a286e3afc242460",
"size": 9749,
"uri": "https://{canondata_backend}/1924537/0523ff3f89d8412877feb189a6b3030e42c5b76f/resource.tar.gz#test.test_aggregate-group_by_rollup_grouping_hum--Analyze_/plan.txt"
"uri": "https://{canondata_backend}/1880306/234eadcde1cd54bffae64f4516628981e02b093d/resource.tar.gz#test.test_aggregate-group_by_rollup_grouping_hum--Analyze_/plan.txt"
}
],
"test.test[aggregate-group_by_rollup_grouping_hum--Debug]": [
{
"checksum": "7c379bdedd14af0c8544fc3db6002e66",
"size": 8102,
"uri": "https://{canondata_backend}/1924537/0523ff3f89d8412877feb189a6b3030e42c5b76f/resource.tar.gz#test.test_aggregate-group_by_rollup_grouping_hum--Debug_/opt.yql_patched"
"checksum": "4319b6b703eeb3d8c81578b361cf4830",
"size": 8114,
"uri": "https://{canondata_backend}/1937492/aea45ebe3429c347732f6b883339604063f92d6f/resource.tar.gz#test.test_aggregate-group_by_rollup_grouping_hum--Debug_/opt.yql_patched"
}
],
"test.test[aggregate-group_by_rollup_grouping_hum--Plan]": [
{
"checksum": "16fe9ffb97171d021e5c287c959d9311",
"checksum": "23f6ef9781306d246a286e3afc242460",
"size": 9749,
"uri": "https://{canondata_backend}/1924537/0523ff3f89d8412877feb189a6b3030e42c5b76f/resource.tar.gz#test.test_aggregate-group_by_rollup_grouping_hum--Plan_/plan.txt"
"uri": "https://{canondata_backend}/1880306/234eadcde1cd54bffae64f4516628981e02b093d/resource.tar.gz#test.test_aggregate-group_by_rollup_grouping_hum--Plan_/plan.txt"
}
],
"test.test[aggregate-group_by_rollup_grouping_hum--Results]": [],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -379,16 +379,16 @@
],
"test.test[aggregate-group_by_rollup_grouping_hum--Debug]": [
{
"checksum": "23dd5c3a8d70373a290ce55c65b0e8ea",
"size": 13410,
"uri": "https://{canondata_backend}/1924537/3c3b53650a01a6c339b04189e5cff2a925335730/resource.tar.gz#test.test_aggregate-group_by_rollup_grouping_hum--Debug_/opt.yql_patched"
"checksum": "644c58ae1fa6c2d445799331b38a3074",
"size": 13420,
"uri": "https://{canondata_backend}/1924537/14e797d0b8163c5715f39d1cd8d7cca217a146e0/resource.tar.gz#test.test_aggregate-group_by_rollup_grouping_hum--Debug_/opt.yql_patched"
}
],
"test.test[aggregate-group_by_rollup_grouping_hum--Plan]": [
{
"checksum": "fe0ce9cc8e51f79585fd526923ce1fa9",
"checksum": "c36b55d1a5faee071d3bf6f4de678eff",
"size": 17571,
"uri": "https://{canondata_backend}/1924537/3c3b53650a01a6c339b04189e5cff2a925335730/resource.tar.gz#test.test_aggregate-group_by_rollup_grouping_hum--Plan_/plan.txt"
"uri": "https://{canondata_backend}/1924537/14e797d0b8163c5715f39d1cd8d7cca217a146e0/resource.tar.gz#test.test_aggregate-group_by_rollup_grouping_hum--Plan_/plan.txt"
}
],
"test.test[aggregate-group_by_session--Debug]": [
Expand Down
20 changes: 17 additions & 3 deletions ydb/library/yql/tests/sql/sql2yql/canondata/result.json
Original file line number Diff line number Diff line change
Expand Up @@ -2241,9 +2241,9 @@
],
"test_sql2yql.test[aggregate-group_by_rollup_grouping_hum]": [
{
"checksum": "cee052ae0f5665666ac9295ad15d0a6d",
"size": 7308,
"uri": "https://{canondata_backend}/1942278/beab6e829114ea03a5df7881bc0d363cdf567406/resource.tar.gz#test_sql2yql.test_aggregate-group_by_rollup_grouping_hum_/sql.yql"
"checksum": "00a492807658102553f3b98142b215be",
"size": 7560,
"uri": "https://{canondata_backend}/1936947/a21ecf863255ddca1b96365dab953533651483f7/resource.tar.gz#test_sql2yql.test_aggregate-group_by_rollup_grouping_hum_/sql.yql"
}
],
"test_sql2yql.test[aggregate-group_by_rollup_grouping_hum_bind]": [
Expand Down Expand Up @@ -2638,6 +2638,13 @@
"uri": "https://{canondata_backend}/1937027/973c239492ba32946806ddc66cf0af4b38c06ae8/resource.tar.gz#test_sql2yql.test_aggregate-table_row_aggregation_/sql.yql"
}
],
"test_sql2yql.test[aggregate-yql-18511]": [
{
"checksum": "cca030f77b003f0ee9f627e04304fad1",
"size": 21501,
"uri": "https://{canondata_backend}/1689644/9f0cb0061bf69b8a694d5c2f0375cda28d1cca57/resource.tar.gz#test_sql2yql.test_aggregate-yql-18511_/sql.yql"
}
],
"test_sql2yql.test[ansi_idents-basic_columns]": [
{
"checksum": "fadc1b514b58a7b9461bc04ed451c197",
Expand Down Expand Up @@ -21104,6 +21111,13 @@
"uri": "https://{canondata_backend}/1880306/64654158d6bfb1289c66c626a8162239289559d0/resource.tar.gz#test_sql_format.test_aggregate-table_row_aggregation_/formatted.sql"
}
],
"test_sql_format.test[aggregate-yql-18511]": [
{
"checksum": "df8e0cf815bdc93797f7c8a221c52a96",
"size": 2024,
"uri": "https://{canondata_backend}/1689644/9f0cb0061bf69b8a694d5c2f0375cda28d1cca57/resource.tar.gz#test_sql_format.test_aggregate-yql-18511_/formatted.sql"
}
],
"test_sql_format.test[ansi_idents-basic_columns]": [
{
"checksum": "3dd79117537033cdbba42231978e98a8",
Expand Down
1 change: 1 addition & 0 deletions ydb/library/yql/tests/sql/suites/aggregate/yql-18511.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
providers yt
70 changes: 70 additions & 0 deletions ydb/library/yql/tests/sql/suites/aggregate/yql-18511.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
/* yt can not */

$round_period = ($day, $period) -> {
RETURN
CASE
WHEN $period = 'd' THEN $day
WHEN $period = 'w' THEN DateTime::MakeDate(DateTime::StartOfWeek($day))
WHEN $period = 'm' THEN DateTime::MakeDate(DateTime::StartOfMonth($day))
ELSE $day
END
};

$data =
SELECT
$round_period(day, 'd') AS day,
$round_period(day, 'w') AS week,
$round_period(day, 'm') AS month,
IF(user_card_cnt <= 10, user_card_cnt, 11) AS user_cards_segm,
is_proven_owner,
user_id,
FROM (
SELECT
Date("2024-04-29") AS day,
"ALLO" AS mark,
"???" AS model,
5 AS user_card_cnt,
'ACTIVE' AS status,
999 AS user_id,
1 AS is_proven_owner,
UNION ALL
SELECT
Date("2024-04-29") AS day,
"ALLO" AS mark,
"!!!!!!" AS model,
50 AS user_card_cnt,
'ACTIVE' AS status,
1111 AS user_id,
0 AS is_proven_owner,
);

SELECT
day,
GROUPING(day) AS grouping_day,
week,
GROUPING(week) AS grouping_week,
month,
GROUPING(month) as grouping_month,
CASE
WHEN GROUPING(week) == 1 AND GROUPING(month) == 1 THEN 'd'
WHEN GROUPING(day) == 1 AND GROUPING(month) == 1 THEN 'w'
WHEN GROUPING(day) == 1 AND GROUPING(week) == 1 THEN 'm'
ELSE NULL
END AS period_type,
user_cards_segm,
if(GROUPING(user_cards_segm) = 1, -300, user_cards_segm) AS __user_cards_segm__,
GROUPING(user_cards_segm) as grouping_user_cards_segm,
COUNT(DISTINCT user_id) AS all_user_qty,
FROM $data AS t
GROUP BY
GROUPING SETS(
-- day grouping
(day),
(day, user_cards_segm),
-- -- week grouping
(week),
(week, user_cards_segm),
-- -- month grouping
(month),
(month, user_cards_segm)
)
Original file line number Diff line number Diff line change
Expand Up @@ -239,16 +239,16 @@
],
"test.test[aggregate-group_by_rollup_grouping_hum--Debug]": [
{
"checksum": "4ef768471dd9fccaafde00aa56310ffa",
"size": 9853,
"uri": "https://{canondata_backend}/1809005/977edd58b353af582025a25127f98ea301dd01a5/resource.tar.gz#test.test_aggregate-group_by_rollup_grouping_hum--Debug_/opt.yql"
"checksum": "9da92c19263936a6edf484323a4739bd",
"size": 9863,
"uri": "https://{canondata_backend}/1924537/ecb5b23ceaf7191462db08eb0bd1c3a6b0a9be3a/resource.tar.gz#test.test_aggregate-group_by_rollup_grouping_hum--Debug_/opt.yql"
}
],
"test.test[aggregate-group_by_rollup_grouping_hum--Plan]": [
{
"checksum": "0d6d807bd49dea9da866a475f4cbc3a9",
"checksum": "71e9dccb832ca9ab92776f9e31ae85eb",
"size": 12250,
"uri": "https://{canondata_backend}/1809005/977edd58b353af582025a25127f98ea301dd01a5/resource.tar.gz#test.test_aggregate-group_by_rollup_grouping_hum--Plan_/plan.txt"
"uri": "https://{canondata_backend}/1924537/ecb5b23ceaf7191462db08eb0bd1c3a6b0a9be3a/resource.tar.gz#test.test_aggregate-group_by_rollup_grouping_hum--Plan_/plan.txt"
}
],
"test.test[aggregate-group_by_rollup_grouping_hum--Results]": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,27 @@
"uri": "file://test.test_aggregate-table_funcs_group_by-default.txt-Results_/extracted"
}
],
"test.test[aggregate-yql-18511--Debug]": [
{
"checksum": "91e08be96e1cdc41ab2b5d99cb5a9873",
"size": 4994,
"uri": "https://{canondata_backend}/1689644/c0f46178539faf548e942cfa605777b1db80a183/resource.tar.gz#test.test_aggregate-yql-18511--Debug_/opt.yql"
}
],
"test.test[aggregate-yql-18511--Plan]": [
{
"checksum": "b4dd508a329723c74293d80f0278c705",
"size": 505,
"uri": "https://{canondata_backend}/1689644/c0f46178539faf548e942cfa605777b1db80a183/resource.tar.gz#test.test_aggregate-yql-18511--Plan_/plan.txt"
}
],
"test.test[aggregate-yql-18511--Results]": [
{
"checksum": "8e843998b10eabfd56dac6e4866dec47",
"size": 9260,
"uri": "https://{canondata_backend}/1689644/c0f46178539faf548e942cfa605777b1db80a183/resource.tar.gz#test.test_aggregate-yql-18511--Results_/results.txt"
}
],
"test.test[bigdate-compare_small_big-default.txt-Debug]": [
{
"checksum": "ad3bd9df4b0035d680ea8db2fe4e6944",
Expand Down

0 comments on commit 7c04f77

Please sign in to comment.