summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/sql_ut.cpp
diff options
context:
space:
mode:
authorvvvv <[email protected]>2024-12-12 18:16:33 +0300
committervvvv <[email protected]>2024-12-12 19:16:09 +0300
commit06977e9655c2ebeaa6535bf9018691f5d98a48f7 (patch)
treea13cbf824b2158d68cc8d0ca622276ed7d09ad6e /yql/essentials/sql/v1/sql_ut.cpp
parentfab222fd8176d00eee5ddafc6bce8cb95a6e3ab0 (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.cpp39
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) {