aboutsummaryrefslogtreecommitdiffstats
path: root/yql
diff options
context:
space:
mode:
authorvvvv <vvvv@yandex-team.com>2025-01-30 19:41:58 +0300
committervvvv <vvvv@yandex-team.com>2025-01-30 20:08:21 +0300
commit5141fceffbd2ef7dfa874344160f08c4a952a1a9 (patch)
tree05e193b4808b3e86fc4232d425a03f0b335ad290 /yql
parentd348358e536b96d156511823d573934c661398df (diff)
downloadydb-5141fceffbd2ef7dfa874344160f08c4a952a1a9.tar.gz
more tests YQL-19494
commit_hash:c575d97795c59fceb00165af9fdc7ff71253c21d
Diffstat (limited to 'yql')
-rw-r--r--yql/essentials/core/peephole_opt/yql_opt_peephole_physical.cpp9
-rw-r--r--yql/essentials/core/yql_aggregate_expander.h3
-rw-r--r--yql/essentials/core/yql_type_annotation.h1
-rw-r--r--yql/essentials/providers/config/yql_config_provider.cpp9
-rw-r--r--yql/essentials/tests/sql/minirun/part0/canondata/result.json21
-rw-r--r--yql/essentials/tests/sql/minirun/part1/canondata/result.json21
-rw-r--r--yql/essentials/tests/sql/minirun/part2/canondata/result.json21
-rw-r--r--yql/essentials/tests/sql/minirun/part3/canondata/result.json21
-rw-r--r--yql/essentials/tests/sql/minirun/part4/canondata/result.json21
-rw-r--r--yql/essentials/tests/sql/minirun/part9/canondata/result.json21
-rw-r--r--yql/essentials/tests/sql/sql2yql/canondata/result.json72
-rw-r--r--yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_all_/formatted.sql9
-rw-r--r--yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_all_mixed_distinct_/formatted.sql10
-rw-r--r--yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_all_only_distinct_/formatted.sql9
-rw-r--r--yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_by_key_/formatted.sql14
-rw-r--r--yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_by_key_mixed_distinct_/formatted.sql15
-rw-r--r--yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_by_key_only_distinct_/formatted.sql14
-rw-r--r--yql/essentials/tests/sql/suites/blocks/agg_all.sql5
-rw-r--r--yql/essentials/tests/sql/suites/blocks/agg_all_mixed_distinct.sql5
-rw-r--r--yql/essentials/tests/sql/suites/blocks/agg_all_only_distinct.sql5
-rw-r--r--yql/essentials/tests/sql/suites/blocks/agg_by_key.sql5
-rw-r--r--yql/essentials/tests/sql/suites/blocks/agg_by_key_mixed_distinct.sql5
-rw-r--r--yql/essentials/tests/sql/suites/blocks/agg_by_key_only_distinct.sql5
23 files changed, 319 insertions, 2 deletions
diff --git a/yql/essentials/core/peephole_opt/yql_opt_peephole_physical.cpp b/yql/essentials/core/peephole_opt/yql_opt_peephole_physical.cpp
index d9107d0cb6..d9f635a76e 100644
--- a/yql/essentials/core/peephole_opt/yql_opt_peephole_physical.cpp
+++ b/yql/essentials/core/peephole_opt/yql_opt_peephole_physical.cpp
@@ -8387,12 +8387,19 @@ TExprNode::TPtr OptimizeToFlow(const TExprNode::TPtr& node, TExprContext& ctx) {
}
- if (node->Head().IsCallable("TableSource")) {
+ if (node->ChildrenSize() == 1 && node->Head().IsCallable("TableSource")) {
if (auto wide = MakeWideTableSource(node->Head(), ctx)) {
return wide;
}
}
+ if (node->ChildrenSize() == 1 && node->Head().IsCallable("Iterator")
+ && node->Head().ChildrenSize() == 1 && node->Head().Head().IsCallable("TableSource")) {
+ if (auto wide = MakeWideTableSource(node->Head().Head(), ctx)) {
+ return wide;
+ }
+ }
+
return node;
}
diff --git a/yql/essentials/core/yql_aggregate_expander.h b/yql/essentials/core/yql_aggregate_expander.h
index bfa40f4650..eed24b61f3 100644
--- a/yql/essentials/core/yql_aggregate_expander.h
+++ b/yql/essentials/core/yql_aggregate_expander.h
@@ -134,8 +134,9 @@ private:
inline TExprNode::TPtr ExpandAggregatePeepholeImpl(const TExprNode::TPtr& node, TExprContext& ctx, TTypeAnnotationContext& typesCtx,
const bool useFinalizeByKey, const bool useBlocks, const bool allowSpilling) {
+ const bool usePhases = typesCtx.PeepholeFlags.contains("useaggphases");
TAggregateExpander aggExpander(!useFinalizeByKey && !useBlocks, useFinalizeByKey, node, ctx, typesCtx,
- true, false, false, typesCtx.IsBlockEngineEnabled() && !allowSpilling);
+ !usePhases, false, usePhases, typesCtx.IsBlockEngineEnabled() && !allowSpilling);
return aggExpander.ExpandAggregate();
}
diff --git a/yql/essentials/core/yql_type_annotation.h b/yql/essentials/core/yql_type_annotation.h
index ac0f0f36bd..da297b406d 100644
--- a/yql/essentials/core/yql_type_annotation.h
+++ b/yql/essentials/core/yql_type_annotation.h
@@ -416,6 +416,7 @@ struct TTypeAnnotationContext: public TThrRefBase {
bool OrderedColumns = false;
TColumnOrderStorage::TPtr ColumnOrderStorage = new TColumnOrderStorage;
THashSet<TString> OptimizerFlags;
+ THashSet<TString> PeepholeFlags;
bool StreamLookupJoin = false;
ui32 MaxAggPushdownPredicates = 6; // algorithm complexity is O(2^N)
diff --git a/yql/essentials/providers/config/yql_config_provider.cpp b/yql/essentials/providers/config/yql_config_provider.cpp
index 5faf09217c..cd03100c44 100644
--- a/yql/essentials/providers/config/yql_config_provider.cpp
+++ b/yql/essentials/providers/config/yql_config_provider.cpp
@@ -963,6 +963,15 @@ namespace {
Types.OptimizerFlags.insert(to_lower(ToString(arg)));
}
}
+ else if (name == "PeepholeFlags") {
+ for (auto& arg : args) {
+ if (arg.empty()) {
+ ctx.AddError(TIssue(pos, "Empty flags are not supported"));
+ return false;
+ }
+ Types.PeepholeFlags.insert(to_lower(ToString(arg)));
+ }
+ }
else if (name == "_EnableStreamLookupJoin" || name == "DisableStreamLookupJoin") {
if (args.size() != 0) {
ctx.AddError(TIssue(pos, TStringBuilder() << "Expected no arguments, but got " << args.size()));
diff --git a/yql/essentials/tests/sql/minirun/part0/canondata/result.json b/yql/essentials/tests/sql/minirun/part0/canondata/result.json
index 55b679803b..99503efb9b 100644
--- a/yql/essentials/tests/sql/minirun/part0/canondata/result.json
+++ b/yql/essentials/tests/sql/minirun/part0/canondata/result.json
@@ -240,6 +240,27 @@
"uri": "file://test.test_bitcast_implicit-sub_bitcast-default.txt-Results_/extracted"
}
],
+ "test.test[blocks-agg_all_mixed_distinct-default.txt-Debug]": [
+ {
+ "checksum": "0b6c16dbdfeb1131454891aa84f0b27c",
+ "size": 1041,
+ "uri": "https://{canondata_backend}/1936842/8073eb626dd657fcbe20d34185c363a1a18c3e7c/resource.tar.gz#test.test_blocks-agg_all_mixed_distinct-default.txt-Debug_/opt.yql"
+ }
+ ],
+ "test.test[blocks-agg_all_mixed_distinct-default.txt-Peephole]": [
+ {
+ "checksum": "ed1fcea38db98750f0319c3638745142",
+ "size": 2750,
+ "uri": "https://{canondata_backend}/1936842/8073eb626dd657fcbe20d34185c363a1a18c3e7c/resource.tar.gz#test.test_blocks-agg_all_mixed_distinct-default.txt-Peephole_/opt.yql"
+ }
+ ],
+ "test.test[blocks-agg_all_mixed_distinct-default.txt-Results]": [
+ {
+ "checksum": "a8938e7db747a8ed62d9df882da5151c",
+ "size": 1372,
+ "uri": "https://{canondata_backend}/1936842/8073eb626dd657fcbe20d34185c363a1a18c3e7c/resource.tar.gz#test.test_blocks-agg_all_mixed_distinct-default.txt-Results_/results.txt"
+ }
+ ],
"test.test[blocks-and-default.txt-Debug]": [
{
"checksum": "47525fa40526e04498f0c41e6bc48f59",
diff --git a/yql/essentials/tests/sql/minirun/part1/canondata/result.json b/yql/essentials/tests/sql/minirun/part1/canondata/result.json
index ff0d370a35..95c90f0f00 100644
--- a/yql/essentials/tests/sql/minirun/part1/canondata/result.json
+++ b/yql/essentials/tests/sql/minirun/part1/canondata/result.json
@@ -209,6 +209,27 @@
"uri": "https://{canondata_backend}/1920236/fd3dfd41a8e63d7fa9cb2e8c3d8e6d8d5f51f2cb/resource.tar.gz#test.test_bigdate-tzstrliterals-default.txt-Results_/results.txt"
}
],
+ "test.test[blocks-agg_all-default.txt-Debug]": [
+ {
+ "checksum": "42c0a3850c436d2ca749b08181dd64c4",
+ "size": 790,
+ "uri": "https://{canondata_backend}/1936997/ed3a7d8870edd79021e442428408c37f03c08cee/resource.tar.gz#test.test_blocks-agg_all-default.txt-Debug_/opt.yql"
+ }
+ ],
+ "test.test[blocks-agg_all-default.txt-Peephole]": [
+ {
+ "checksum": "2fb133577b2bebe665243748a6546c47",
+ "size": 989,
+ "uri": "https://{canondata_backend}/1936997/ed3a7d8870edd79021e442428408c37f03c08cee/resource.tar.gz#test.test_blocks-agg_all-default.txt-Peephole_/opt.yql"
+ }
+ ],
+ "test.test[blocks-agg_all-default.txt-Results]": [
+ {
+ "checksum": "b6f20dcf3fd333936099a02f132ad259",
+ "size": 887,
+ "uri": "https://{canondata_backend}/1936997/ed3a7d8870edd79021e442428408c37f03c08cee/resource.tar.gz#test.test_blocks-agg_all-default.txt-Results_/results.txt"
+ }
+ ],
"test.test[blocks-and_opt_scalar-default.txt-Debug]": [
{
"checksum": "1a4fb294f178b359c444b4f540e0b9e1",
diff --git a/yql/essentials/tests/sql/minirun/part2/canondata/result.json b/yql/essentials/tests/sql/minirun/part2/canondata/result.json
index 93a0b6e07e..e23b86b372 100644
--- a/yql/essentials/tests/sql/minirun/part2/canondata/result.json
+++ b/yql/essentials/tests/sql/minirun/part2/canondata/result.json
@@ -237,6 +237,27 @@
"uri": "https://{canondata_backend}/1925821/c218142dee7e94289607cb3f387a4ea325fdeb89/resource.tar.gz#test.test_binding-tie_scalar_context-default.txt-Results_/results.txt"
}
],
+ "test.test[blocks-agg_by_key_only_distinct-default.txt-Debug]": [
+ {
+ "checksum": "3b377511a09ae02330cd1b3f6faeb5f0",
+ "size": 862,
+ "uri": "https://{canondata_backend}/1937150/3d01c6ab2777fc3b99338655d39a5bcbb1ac89c3/resource.tar.gz#test.test_blocks-agg_by_key_only_distinct-default.txt-Debug_/opt.yql"
+ }
+ ],
+ "test.test[blocks-agg_by_key_only_distinct-default.txt-Peephole]": [
+ {
+ "checksum": "61d7e4298f7c95b1d74a833e56b0fb1b",
+ "size": 2174,
+ "uri": "https://{canondata_backend}/1937150/3d01c6ab2777fc3b99338655d39a5bcbb1ac89c3/resource.tar.gz#test.test_blocks-agg_by_key_only_distinct-default.txt-Peephole_/opt.yql"
+ }
+ ],
+ "test.test[blocks-agg_by_key_only_distinct-default.txt-Results]": [
+ {
+ "checksum": "d9c1b17771cb2146ac3f5b691ac4e13d",
+ "size": 1054,
+ "uri": "https://{canondata_backend}/1937150/3d01c6ab2777fc3b99338655d39a5bcbb1ac89c3/resource.tar.gz#test.test_blocks-agg_by_key_only_distinct-default.txt-Results_/results.txt"
+ }
+ ],
"test.test[blocks-exists-default.txt-Debug]": [
{
"checksum": "a871029504a6d3f1c07342493b86d28d",
diff --git a/yql/essentials/tests/sql/minirun/part3/canondata/result.json b/yql/essentials/tests/sql/minirun/part3/canondata/result.json
index 518dcf729d..1a818dbe9d 100644
--- a/yql/essentials/tests/sql/minirun/part3/canondata/result.json
+++ b/yql/essentials/tests/sql/minirun/part3/canondata/result.json
@@ -285,6 +285,27 @@
"uri": "file://test.test_bitcast_implicit-div_bitcast-default.txt-Results_/extracted"
}
],
+ "test.test[blocks-agg_by_key_mixed_distinct-default.txt-Debug]": [
+ {
+ "checksum": "604ddfd755ba142ffcfdb10840bcbfba",
+ "size": 1188,
+ "uri": "https://{canondata_backend}/1936842/b7d0729d8113067b84268db9fc0907f14193cecc/resource.tar.gz#test.test_blocks-agg_by_key_mixed_distinct-default.txt-Debug_/opt.yql"
+ }
+ ],
+ "test.test[blocks-agg_by_key_mixed_distinct-default.txt-Peephole]": [
+ {
+ "checksum": "d85f9dcc1a0cc15f14cd6f4e8aa4a288",
+ "size": 2985,
+ "uri": "https://{canondata_backend}/1936842/b7d0729d8113067b84268db9fc0907f14193cecc/resource.tar.gz#test.test_blocks-agg_by_key_mixed_distinct-default.txt-Peephole_/opt.yql"
+ }
+ ],
+ "test.test[blocks-agg_by_key_mixed_distinct-default.txt-Results]": [
+ {
+ "checksum": "06a0b4e916cdca12010179434ef986c7",
+ "size": 1376,
+ "uri": "https://{canondata_backend}/1936842/b7d0729d8113067b84268db9fc0907f14193cecc/resource.tar.gz#test.test_blocks-agg_by_key_mixed_distinct-default.txt-Results_/results.txt"
+ }
+ ],
"test.test[blocks-frompg-default.txt-Debug]": [
{
"checksum": "52d5daf2447e1de0d4cf3150468c9de5",
diff --git a/yql/essentials/tests/sql/minirun/part4/canondata/result.json b/yql/essentials/tests/sql/minirun/part4/canondata/result.json
index c4ada02ff9..e180ac52dd 100644
--- a/yql/essentials/tests/sql/minirun/part4/canondata/result.json
+++ b/yql/essentials/tests/sql/minirun/part4/canondata/result.json
@@ -293,6 +293,27 @@
"uri": "https://{canondata_backend}/1925821/db505909f0fb5dcb9a1c2635b652923e2e5d33c8/resource.tar.gz#test.test_binding-compact_named_with_subq_contexts--Results_/results.txt"
}
],
+ "test.test[blocks-agg_by_key-default.txt-Debug]": [
+ {
+ "checksum": "aa3ecf6940bfc00eac13870913fbb428",
+ "size": 942,
+ "uri": "https://{canondata_backend}/1936842/397d19bc034685a9103c63c079eb706022471c35/resource.tar.gz#test.test_blocks-agg_by_key-default.txt-Debug_/opt.yql"
+ }
+ ],
+ "test.test[blocks-agg_by_key-default.txt-Peephole]": [
+ {
+ "checksum": "dfcd63a547cc12864741028ead35a272",
+ "size": 1400,
+ "uri": "https://{canondata_backend}/1936842/397d19bc034685a9103c63c079eb706022471c35/resource.tar.gz#test.test_blocks-agg_by_key-default.txt-Peephole_/opt.yql"
+ }
+ ],
+ "test.test[blocks-agg_by_key-default.txt-Results]": [
+ {
+ "checksum": "8733c4a880fe07f098b676bc78d0fc86",
+ "size": 1054,
+ "uri": "https://{canondata_backend}/1936842/397d19bc034685a9103c63c079eb706022471c35/resource.tar.gz#test.test_blocks-agg_by_key-default.txt-Results_/results.txt"
+ }
+ ],
"test.test[blocks-or_opt_scalar-default.txt-Debug]": [
{
"checksum": "48438c52974cf1f5de5ed35df99e54b5",
diff --git a/yql/essentials/tests/sql/minirun/part9/canondata/result.json b/yql/essentials/tests/sql/minirun/part9/canondata/result.json
index 4d4e7caa3b..7763b7c9fa 100644
--- a/yql/essentials/tests/sql/minirun/part9/canondata/result.json
+++ b/yql/essentials/tests/sql/minirun/part9/canondata/result.json
@@ -167,6 +167,27 @@
"uri": "https://{canondata_backend}/1881367/0904eef9815dbdae5991888c9e683a7d755b2751/resource.tar.gz#test.test_bigdate-tzcasts-default.txt-Results_/results.txt"
}
],
+ "test.test[blocks-agg_all_only_distinct-default.txt-Debug]": [
+ {
+ "checksum": "049e967d9c05e54fbc7153cf31b0b9d8",
+ "size": 731,
+ "uri": "https://{canondata_backend}/1936842/a3d6c7434a3c60fd4096f171ba514687570df6ae/resource.tar.gz#test.test_blocks-agg_all_only_distinct-default.txt-Debug_/opt.yql"
+ }
+ ],
+ "test.test[blocks-agg_all_only_distinct-default.txt-Peephole]": [
+ {
+ "checksum": "43f57f7269807e7a8a04d1dea312d0a6",
+ "size": 1683,
+ "uri": "https://{canondata_backend}/1936842/a3d6c7434a3c60fd4096f171ba514687570df6ae/resource.tar.gz#test.test_blocks-agg_all_only_distinct-default.txt-Peephole_/opt.yql"
+ }
+ ],
+ "test.test[blocks-agg_all_only_distinct-default.txt-Results]": [
+ {
+ "checksum": "e21c02fabfbba8c1121c8ddb4437a458",
+ "size": 887,
+ "uri": "https://{canondata_backend}/1936842/a3d6c7434a3c60fd4096f171ba514687570df6ae/resource.tar.gz#test.test_blocks-agg_all_only_distinct-default.txt-Results_/results.txt"
+ }
+ ],
"test.test[blocks-coalesce-default.txt-Debug]": [
{
"checksum": "4f09982cc6cf8782ef9874681dd4f689",
diff --git a/yql/essentials/tests/sql/sql2yql/canondata/result.json b/yql/essentials/tests/sql/sql2yql/canondata/result.json
index 4576fae869..b5a310737c 100644
--- a/yql/essentials/tests/sql/sql2yql/canondata/result.json
+++ b/yql/essentials/tests/sql/sql2yql/canondata/result.json
@@ -1315,6 +1315,48 @@
"uri": "https://{canondata_backend}/1942173/99e88108149e222741552e7e6cddef041d6a2846/resource.tar.gz#test_sql2yql.test_bitcast_implicit-sub_bitcast_/sql.yql"
}
],
+ "test_sql2yql.test[blocks-agg_all]": [
+ {
+ "checksum": "3e13a1a16acd75b6f7ff5c1619978127",
+ "size": 1424,
+ "uri": "https://{canondata_backend}/1917492/7dd4bc86433f6173a26b62397e1ef41fa9471945/resource.tar.gz#test_sql2yql.test_blocks-agg_all_/sql.yql"
+ }
+ ],
+ "test_sql2yql.test[blocks-agg_all_mixed_distinct]": [
+ {
+ "checksum": "10dc6afd86c71c9692fab13079d8a8a0",
+ "size": 1755,
+ "uri": "https://{canondata_backend}/1917492/7dd4bc86433f6173a26b62397e1ef41fa9471945/resource.tar.gz#test_sql2yql.test_blocks-agg_all_mixed_distinct_/sql.yql"
+ }
+ ],
+ "test_sql2yql.test[blocks-agg_all_only_distinct]": [
+ {
+ "checksum": "5bf49bcc8cfc9bfbc5ae81cfcff63057",
+ "size": 1465,
+ "uri": "https://{canondata_backend}/1917492/7dd4bc86433f6173a26b62397e1ef41fa9471945/resource.tar.gz#test_sql2yql.test_blocks-agg_all_only_distinct_/sql.yql"
+ }
+ ],
+ "test_sql2yql.test[blocks-agg_by_key]": [
+ {
+ "checksum": "d6fc6aba46506ba8b90c38d4e42dc23c",
+ "size": 1711,
+ "uri": "https://{canondata_backend}/1917492/7dd4bc86433f6173a26b62397e1ef41fa9471945/resource.tar.gz#test_sql2yql.test_blocks-agg_by_key_/sql.yql"
+ }
+ ],
+ "test_sql2yql.test[blocks-agg_by_key_mixed_distinct]": [
+ {
+ "checksum": "7f42cd8c64cf1f450613e861c71b47fd",
+ "size": 2042,
+ "uri": "https://{canondata_backend}/1917492/7dd4bc86433f6173a26b62397e1ef41fa9471945/resource.tar.gz#test_sql2yql.test_blocks-agg_by_key_mixed_distinct_/sql.yql"
+ }
+ ],
+ "test_sql2yql.test[blocks-agg_by_key_only_distinct]": [
+ {
+ "checksum": "80ef9b2f0461f3b3892c311dda91db40",
+ "size": 1752,
+ "uri": "https://{canondata_backend}/1917492/7dd4bc86433f6173a26b62397e1ef41fa9471945/resource.tar.gz#test_sql2yql.test_blocks-agg_by_key_only_distinct_/sql.yql"
+ }
+ ],
"test_sql2yql.test[blocks-and]": [
{
"checksum": "e22a52b51ef20174c3b832acb09df01b",
@@ -8107,6 +8149,36 @@
"uri": "file://test_sql_format.test_bitcast_implicit-sub_bitcast_/formatted.sql"
}
],
+ "test_sql_format.test[blocks-agg_all]": [
+ {
+ "uri": "file://test_sql_format.test_blocks-agg_all_/formatted.sql"
+ }
+ ],
+ "test_sql_format.test[blocks-agg_all_mixed_distinct]": [
+ {
+ "uri": "file://test_sql_format.test_blocks-agg_all_mixed_distinct_/formatted.sql"
+ }
+ ],
+ "test_sql_format.test[blocks-agg_all_only_distinct]": [
+ {
+ "uri": "file://test_sql_format.test_blocks-agg_all_only_distinct_/formatted.sql"
+ }
+ ],
+ "test_sql_format.test[blocks-agg_by_key]": [
+ {
+ "uri": "file://test_sql_format.test_blocks-agg_by_key_/formatted.sql"
+ }
+ ],
+ "test_sql_format.test[blocks-agg_by_key_mixed_distinct]": [
+ {
+ "uri": "file://test_sql_format.test_blocks-agg_by_key_mixed_distinct_/formatted.sql"
+ }
+ ],
+ "test_sql_format.test[blocks-agg_by_key_only_distinct]": [
+ {
+ "uri": "file://test_sql_format.test_blocks-agg_by_key_only_distinct_/formatted.sql"
+ }
+ ],
"test_sql_format.test[blocks-and]": [
{
"uri": "file://test_sql_format.test_blocks-and_/formatted.sql"
diff --git a/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_all_/formatted.sql b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_all_/formatted.sql
new file mode 100644
index 0000000000..7266613f42
--- /dev/null
+++ b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_all_/formatted.sql
@@ -0,0 +1,9 @@
+PRAGMA config.flags('PeepholeFlags', 'UseAggPhases');
+
+$data = [<|x: 1|>, <|x: 3|>, <|x: 2|>];
+
+SELECT
+ sum(x)
+FROM
+ as_table($data)
+;
diff --git a/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_all_mixed_distinct_/formatted.sql b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_all_mixed_distinct_/formatted.sql
new file mode 100644
index 0000000000..4201d1489b
--- /dev/null
+++ b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_all_mixed_distinct_/formatted.sql
@@ -0,0 +1,10 @@
+PRAGMA config.flags('PeepholeFlags', 'UseAggPhases');
+
+$data = [<|x: 1|>, <|x: 1|>, <|x: 2|>];
+
+SELECT
+ min(x),
+ sum(DISTINCT x)
+FROM
+ as_table($data)
+;
diff --git a/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_all_only_distinct_/formatted.sql b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_all_only_distinct_/formatted.sql
new file mode 100644
index 0000000000..a5c941dcbc
--- /dev/null
+++ b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_all_only_distinct_/formatted.sql
@@ -0,0 +1,9 @@
+PRAGMA config.flags('PeepholeFlags', 'UseAggPhases');
+
+$data = [<|x: 1|>, <|x: 1|>, <|x: 2|>];
+
+SELECT
+ sum(DISTINCT x)
+FROM
+ as_table($data)
+;
diff --git a/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_by_key_/formatted.sql b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_by_key_/formatted.sql
new file mode 100644
index 0000000000..eb5ee9c9b8
--- /dev/null
+++ b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_by_key_/formatted.sql
@@ -0,0 +1,14 @@
+PRAGMA config.flags('PeepholeFlags', 'UseAggPhases');
+
+$data = [<|x: 1, y: 0|>, <|x: 3, y: 0|>, <|x: 2, y: 1|>];
+
+SELECT
+ y,
+ sum(x)
+FROM
+ as_table($data)
+GROUP BY
+ y
+ORDER BY
+ y
+;
diff --git a/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_by_key_mixed_distinct_/formatted.sql b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_by_key_mixed_distinct_/formatted.sql
new file mode 100644
index 0000000000..c4e5ca07c1
--- /dev/null
+++ b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_by_key_mixed_distinct_/formatted.sql
@@ -0,0 +1,15 @@
+PRAGMA config.flags('PeepholeFlags', 'UseAggPhases');
+
+$data = [<|x: 1, y: 0|>, <|x: 1, y: 0|>, <|x: 2, y: 1|>];
+
+SELECT
+ y,
+ min(x),
+ sum(DISTINCT x)
+FROM
+ as_table($data)
+GROUP BY
+ y
+ORDER BY
+ y
+;
diff --git a/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_by_key_only_distinct_/formatted.sql b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_by_key_only_distinct_/formatted.sql
new file mode 100644
index 0000000000..50e3d0d2aa
--- /dev/null
+++ b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_blocks-agg_by_key_only_distinct_/formatted.sql
@@ -0,0 +1,14 @@
+PRAGMA config.flags('PeepholeFlags', 'UseAggPhases');
+
+$data = [<|x: 1, y: 0|>, <|x: 1, y: 0|>, <|x: 2, y: 1|>];
+
+SELECT
+ y,
+ sum(DISTINCT x)
+FROM
+ as_table($data)
+GROUP BY
+ y
+ORDER BY
+ y
+;
diff --git a/yql/essentials/tests/sql/suites/blocks/agg_all.sql b/yql/essentials/tests/sql/suites/blocks/agg_all.sql
new file mode 100644
index 0000000000..a35aa07d34
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/blocks/agg_all.sql
@@ -0,0 +1,5 @@
+pragma config.flags("PeepholeFlags","UseAggPhases");
+
+$data = [<|x:1|>,<|x:3|>,<|x:2|>];
+
+select sum(x) from as_table($data);
diff --git a/yql/essentials/tests/sql/suites/blocks/agg_all_mixed_distinct.sql b/yql/essentials/tests/sql/suites/blocks/agg_all_mixed_distinct.sql
new file mode 100644
index 0000000000..b7ce1aef2f
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/blocks/agg_all_mixed_distinct.sql
@@ -0,0 +1,5 @@
+pragma config.flags("PeepholeFlags","UseAggPhases");
+
+$data = [<|x:1|>,<|x:1|>,<|x:2|>];
+
+select min(x),sum(distinct x) from as_table($data);
diff --git a/yql/essentials/tests/sql/suites/blocks/agg_all_only_distinct.sql b/yql/essentials/tests/sql/suites/blocks/agg_all_only_distinct.sql
new file mode 100644
index 0000000000..4e52d37744
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/blocks/agg_all_only_distinct.sql
@@ -0,0 +1,5 @@
+pragma config.flags("PeepholeFlags","UseAggPhases");
+
+$data = [<|x:1|>,<|x:1|>,<|x:2|>];
+
+select sum(distinct x) from as_table($data);
diff --git a/yql/essentials/tests/sql/suites/blocks/agg_by_key.sql b/yql/essentials/tests/sql/suites/blocks/agg_by_key.sql
new file mode 100644
index 0000000000..426415d5ae
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/blocks/agg_by_key.sql
@@ -0,0 +1,5 @@
+pragma config.flags("PeepholeFlags","UseAggPhases");
+
+$data = [<|x:1,y:0|>,<|x:3,y:0|>,<|x:2,y:1|>];
+
+select y,sum(x) from as_table($data) group by y order by y;
diff --git a/yql/essentials/tests/sql/suites/blocks/agg_by_key_mixed_distinct.sql b/yql/essentials/tests/sql/suites/blocks/agg_by_key_mixed_distinct.sql
new file mode 100644
index 0000000000..9ee6072f56
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/blocks/agg_by_key_mixed_distinct.sql
@@ -0,0 +1,5 @@
+pragma config.flags("PeepholeFlags","UseAggPhases");
+
+$data = [<|x:1,y:0|>,<|x:1,y:0|>,<|x:2,y:1|>];
+
+select y,min(x),sum(distinct x) from as_table($data) group by y order by y;
diff --git a/yql/essentials/tests/sql/suites/blocks/agg_by_key_only_distinct.sql b/yql/essentials/tests/sql/suites/blocks/agg_by_key_only_distinct.sql
new file mode 100644
index 0000000000..35163e0085
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/blocks/agg_by_key_only_distinct.sql
@@ -0,0 +1,5 @@
+pragma config.flags("PeepholeFlags","UseAggPhases");
+
+$data = [<|x:1,y:0|>,<|x:1,y:0|>,<|x:2,y:1|>];
+
+select y,sum(distinct x) from as_table($data) group by y order by y;