diff options
author | vvvv <[email protected]> | 2024-12-12 18:16:33 +0300 |
---|---|---|
committer | vvvv <[email protected]> | 2024-12-12 19:16:09 +0300 |
commit | 06977e9655c2ebeaa6535bf9018691f5d98a48f7 (patch) | |
tree | a13cbf824b2158d68cc8d0ca622276ed7d09ad6e /yql/essentials/sql/v1/sql_ut.cpp | |
parent | fab222fd8176d00eee5ddafc6bce8cb95a6e3ab0 (diff) |
Better diagnostics for scalar context usages
init
commit_hash:12f8e607ccf54d241b69dbb1903cf36a1930295f
Diffstat (limited to 'yql/essentials/sql/v1/sql_ut.cpp')
-rw-r--r-- | yql/essentials/sql/v1/sql_ut.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/yql/essentials/sql/v1/sql_ut.cpp b/yql/essentials/sql/v1/sql_ut.cpp index 3ef964fa0d4..0cb626f5b03 100644 --- a/yql/essentials/sql/v1/sql_ut.cpp +++ b/yql/essentials/sql/v1/sql_ut.cpp @@ -5040,6 +5040,45 @@ select FormatType($f()); )"; ExpectFailWithError(query, "<main>:2:33: Error: Aggregation function Min requires exactly 1 argument(s), given: 2\n"); } + + Y_UNIT_TEST(ScalarContextUsage1) { + TString query = R"( + $a = (select 1 as x, 2 as y); + select 1 + $a; + )"; + ExpectFailWithError(query, "<main>:2:39: Error: Source used in expression should contain one concrete column\n" + "<main>:3:24: Error: Source is used here\n"); + } + + Y_UNIT_TEST(ScalarContextUsage2) { + TString query = R"( + use plato; + $a = (select 1 as x, 2 as y); + select * from concat($a); + )"; + ExpectFailWithError(query, "<main>:3:39: Error: Source used in expression should contain one concrete column\n" + "<main>:4:34: Error: Source is used here\n"); + } + + Y_UNIT_TEST(ScalarContextUsage3) { + TString query = R"( + use plato; + $a = (select 1 as x, 2 as y); + select * from range($a); + )"; + ExpectFailWithError(query, "<main>:3:39: Error: Source used in expression should contain one concrete column\n" + "<main>:4:33: Error: Source is used here\n"); + } + + Y_UNIT_TEST(ScalarContextUsage4) { + TString query = R"( + use plato; + $a = (select 1 as x, 2 as y); + insert into $a select 1; + )"; + ExpectFailWithError(query, "<main>:3:39: Error: Source used in expression should contain one concrete column\n" + "<main>:4:25: Error: Source is used here\n"); + } } void CheckUnused(const TString& req, const TString& symbol, unsigned row, unsigned col) { |