diff options
| author | vitya-smirnov <[email protected]> | 2026-05-22 12:47:55 +0300 |
|---|---|---|
| committer | vitya-smirnov <[email protected]> | 2026-05-22 18:10:49 +0300 |
| commit | 5e63ebfba767f3d002c3dfb7ac9eec72c4f4ea75 (patch) | |
| tree | b734a21d48de1d45a75950f18cac6e068c5b1aad /yql/essentials/sql | |
| parent | cfb36312b32612d0888ed02d4acc8a059e202125 (diff) | |
YQL-21046: Support RANGE window on YqlSelect
commit_hash:2cb369cb2091489e28790782fe9e7679d367fbb3
Diffstat (limited to 'yql/essentials/sql')
| -rw-r--r-- | yql/essentials/sql/v1/sql_ut_common.h | 34 |
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) { |
