summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/sql_ut.cpp
diff options
context:
space:
mode:
authoraneporada <[email protected]>2024-11-27 19:39:16 +0300
committeraneporada <[email protected]>2024-11-27 20:30:55 +0300
commit5ae93cf6a49513cc999774c6545bcfff16a32f59 (patch)
tree680c05eeb9c20a9859dc64aeb7c3453208751982 /yql/essentials/sql/v1/sql_ut.cpp
parentda01e3e90a5307aae60beecbbb94131a88d617be (diff)
EmitUnionMerge - pragma to emit UnionMerge instead of UnionAll
commit_hash:ba3439438c76ed616e4f1059d0ff83ebb4a16b9a
Diffstat (limited to 'yql/essentials/sql/v1/sql_ut.cpp')
-rw-r--r--yql/essentials/sql/v1/sql_ut.cpp31
1 files changed, 30 insertions, 1 deletions
diff --git a/yql/essentials/sql/v1/sql_ut.cpp b/yql/essentials/sql/v1/sql_ut.cpp
index 1bbdaada1ea..f2cde62e794 100644
--- a/yql/essentials/sql/v1/sql_ut.cpp
+++ b/yql/essentials/sql/v1/sql_ut.cpp
@@ -1385,7 +1385,7 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
}
Y_UNIT_TEST(UnionAllTest) {
- NYql::TAstParseResult res = SqlToYql("SELECT key FROM plato.Input UNION ALL select subkey FROM plato.Input;");
+ NYql::TAstParseResult res = SqlToYql("PRAGMA DisableEmitUnionMerge; SELECT key FROM plato.Input UNION ALL select subkey FROM plato.Input;");
UNIT_ASSERT(res.Root);
TWordCountHive elementStat = {{TString("UnionAll"), 0}};
@@ -1393,6 +1393,15 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
UNIT_ASSERT_VALUES_EQUAL(1, elementStat["UnionAll"]);
}
+ Y_UNIT_TEST(UnionAllMergeTest) {
+ NYql::TAstParseResult res = SqlToYql("PRAGMA EmitUnionMerge; SELECT key FROM plato.Input UNION ALL select subkey FROM plato.Input;");
+ UNIT_ASSERT(res.Root);
+
+ TWordCountHive elementStat = {{TString("UnionMerge"), 0}};
+ VerifyProgram(res, elementStat, {});
+ UNIT_ASSERT_VALUES_EQUAL(1, elementStat["UnionMerge"]);
+ }
+
Y_UNIT_TEST(UnionTest) {
NYql::TAstParseResult res = SqlToYql("SELECT key FROM plato.Input UNION select subkey FROM plato.Input;");
UNIT_ASSERT(res.Root);
@@ -1404,6 +1413,7 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
Y_UNIT_TEST(UnionAggregationTest) {
NYql::TAstParseResult res = SqlToYql(R"(
+ PRAGMA DisableEmitUnionMerge;
SELECT 1
UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1
@@ -1420,6 +1430,25 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
UNIT_ASSERT_VALUES_EQUAL(3, elementStat["Union"]);
}
+ Y_UNIT_TEST(UnionMergeAggregationTest) {
+ NYql::TAstParseResult res = SqlToYql(R"(
+ PRAGMA EmitUnionMerge;
+ SELECT 1
+ UNION ALL
+ SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1
+ UNION
+ SELECT 1 UNION SELECT 1 UNION SELECT 1 UNION SELECT 1
+ UNION ALL
+ SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1;
+ )");
+ UNIT_ASSERT(res.Root);
+
+ TWordCountHive elementStat = {{TString("Union"), 0}, {TString("UnionMerge"), 0}};
+ VerifyProgram(res, elementStat, {});
+ UNIT_ASSERT_VALUES_EQUAL(2, elementStat["UnionMerge"]);
+ UNIT_ASSERT_VALUES_EQUAL(3, elementStat["Union"]);
+ }
+
Y_UNIT_TEST(DeclareDecimalParameter) {
NYql::TAstParseResult res = SqlToYql("declare $value as Decimal(22,9); select $value as cnt;");
UNIT_ASSERT(res.Root);