summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1
diff options
context:
space:
mode:
authorvitya-smirnov <[email protected]>2026-05-22 12:47:55 +0300
committervitya-smirnov <[email protected]>2026-05-22 18:10:49 +0300
commit5e63ebfba767f3d002c3dfb7ac9eec72c4f4ea75 (patch)
treeb734a21d48de1d45a75950f18cac6e068c5b1aad /yql/essentials/sql/v1
parentcfb36312b32612d0888ed02d4acc8a059e202125 (diff)
YQL-21046: Support RANGE window on YqlSelect
commit_hash:2cb369cb2091489e28790782fe9e7679d367fbb3
Diffstat (limited to 'yql/essentials/sql/v1')
-rw-r--r--yql/essentials/sql/v1/sql_ut_common.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/yql/essentials/sql/v1/sql_ut_common.h b/yql/essentials/sql/v1/sql_ut_common.h
index b2278645fb8..4d25b499241 100644
--- a/yql/essentials/sql/v1/sql_ut_common.h
+++ b/yql/essentials/sql/v1/sql_ut_common.h
@@ -14834,6 +14834,40 @@ Y_UNIT_TEST(WindowBad) {
UNIT_ASSERT_STRING_CONTAINS(Err2Str(res), ":2:27: Error: Expected a YqlSelect-compatible window function, but got Length");
}
+Y_UNIT_TEST(AnsiCurrentRow) {
+ const auto check = [](TString spec, TString a, TString b, TString c, THashSet<TString> flags) {
+ TString query = R"sql(
+ PRAGMA YqlSelect = 'force';
+ $events = (SELECT * FROM (VALUES
+ (1, 10, 5),
+ (2, 10, 5),
+ (3, 20, 10)
+ ) AS events (event_id, ts, val));
+ SELECT ts, val, SUM(val) OVER (SPEC) AS run_sum FROM $events ORDER BY ts, event_id;
+ )sql";
+ SubstGlobal(query, "SPEC", spec);
+
+ NSQLTranslation::TTranslationSettings settings;
+ settings.Flags = std::move(flags);
+ settings.LangVer = NSQLTranslationV1::YqlSelectLangVersion();
+
+ NYql::TAstParseResult res = SqlToYqlWithSettings(query, settings);
+ UNIT_ASSERT_C(res.IsOk(), Err2Str(res));
+
+ TWordCountHive stat = {"YqlSelect"};
+ TString program = VerifyProgram(res, stat);
+ UNIT_ASSERT_VALUES_EQUAL(stat["YqlSelect"], 4);
+ UNIT_ASSERT_STRING_CONTAINS(program, "'('type '" + a + ")");
+ UNIT_ASSERT_STRING_CONTAINS(program, "'('from '" + b + ")");
+ UNIT_ASSERT_STRING_CONTAINS(program, "'('to '" + c + ")");
+ };
+
+ check("ORDER BY ts", "rows", "up", "f", {}); // to_value is 0
+ check("", /* */ "rows", "up", "uf", {});
+ check("ORDER BY ts", "range", "up", "c", {"AnsiCurrentRow"});
+ check("", /* */ "rows", "up", "uf", {"AnsiCurrentRow"});
+}
+
} // Y_UNIT_TEST_SUITE(YqlSelect)
Y_UNIT_TEST_SUITE(ColumnDefault) {