summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraneporada <[email protected]>2024-12-19 23:36:31 +0300
committeraneporada <[email protected]>2024-12-19 23:53:17 +0300
commit7d8dc90b69e5ec44a3e3cebd16c0cc2368186ede (patch)
tree4047649dd35dc7b5fdbc9f11bd359ed066fd05f6
parente86fa68d77beb0170146f370d005dfefaa9fd963 (diff)
Fix order by missing column with DisableSimpleColumns
commit_hash:7dee9cb8b582262a125bab7f8503d00908683c10
-rw-r--r--yql/essentials/sql/v1/select.cpp4
-rw-r--r--yql/essentials/tests/sql/sql2yql/canondata/result.json12
-rw-r--r--yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_order_by-order_by_missing_project_column_nosimple_/formatted.sql46
-rw-r--r--yql/essentials/tests/sql/suites/order_by/order_by_missing_project_column_nosimple.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/order_by/order_by_missing_project_column_nosimple.sql32
5 files changed, 95 insertions, 0 deletions
diff --git a/yql/essentials/sql/v1/select.cpp b/yql/essentials/sql/v1/select.cpp
index 1442215e15c..4f5db440696 100644
--- a/yql/essentials/sql/v1/select.cpp
+++ b/yql/essentials/sql/v1/select.cpp
@@ -1869,6 +1869,10 @@ public:
return false;
}
+ if (!ctx.SimpleColumns && Columns.QualifiedAll && !columnName.Contains('.')) {
+ return false;
+ }
+
if (!Columns.IsColumnPossible(ctx, columnName)) {
return true;
}
diff --git a/yql/essentials/tests/sql/sql2yql/canondata/result.json b/yql/essentials/tests/sql/sql2yql/canondata/result.json
index 8739e134135..da8e4a69ce0 100644
--- a/yql/essentials/tests/sql/sql2yql/canondata/result.json
+++ b/yql/essentials/tests/sql/sql2yql/canondata/result.json
@@ -12067,6 +12067,13 @@
"uri": "https://{canondata_backend}/1942173/99e88108149e222741552e7e6cddef041d6a2846/resource.tar.gz#test_sql2yql.test_order_by-order_by_missing_project_column_join_types_/sql.yql"
}
],
+ "test_sql2yql.test[order_by-order_by_missing_project_column_nosimple]": [
+ {
+ "checksum": "ea2472dbe1cea58561e9a506a692738f",
+ "size": 3172,
+ "uri": "https://{canondata_backend}/1599023/02c3082e8ed2b6689e833c3b6594da85e12a01be/resource.tar.gz#test_sql2yql.test_order_by-order_by_missing_project_column_nosimple_/sql.yql"
+ }
+ ],
"test_sql2yql.test[order_by-order_by_mul_columns]": [
{
"checksum": "88f079be2cb6e1e762d50772e8fbc12d",
@@ -28625,6 +28632,11 @@
"uri": "file://test_sql_format.test_order_by-order_by_missing_project_column_join_types_/formatted.sql"
}
],
+ "test_sql_format.test[order_by-order_by_missing_project_column_nosimple]": [
+ {
+ "uri": "file://test_sql_format.test_order_by-order_by_missing_project_column_nosimple_/formatted.sql"
+ }
+ ],
"test_sql_format.test[order_by-order_by_mul_columns]": [
{
"uri": "file://test_sql_format.test_order_by-order_by_mul_columns_/formatted.sql"
diff --git a/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_order_by-order_by_missing_project_column_nosimple_/formatted.sql b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_order_by-order_by_missing_project_column_nosimple_/formatted.sql
new file mode 100644
index 00000000000..5bb4d663371
--- /dev/null
+++ b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_order_by-order_by_missing_project_column_nosimple_/formatted.sql
@@ -0,0 +1,46 @@
+/* syntax version 1 */
+/* postgres can not */
+/* dq can not */
+/* dqfile can not */
+/* yt can not */
+PRAGMA DisableSimpleColumns;
+
+$src = [
+ <|a: 5, b: 50, zz: 500|>,
+ <|a: 4, b: 40, zz: 400|>,
+ <|a: 3, b: 30, zz: 300|>,
+ <|a: 2, b: 20, zz: 200|>,
+ <|a: 1, b: 10, zz: 100|>,
+];
+
+$src1 = [
+ <|a: 4, f: 40|>,
+ <|a: 3, f: 30|>,
+ <|a: 2, f: 20|>,
+ <|a: 1, f: 10|>,
+];
+
+$src = (
+ SELECT
+ *
+ FROM
+ as_table($src)
+);
+
+$src1 = (
+ SELECT
+ *
+ FROM
+ as_table($src1)
+);
+
+SELECT
+ x.*
+FROM
+ $src AS x
+LEFT ONLY JOIN
+ $src1 AS y
+USING (a)
+ORDER BY
+ random(a)
+;
diff --git a/yql/essentials/tests/sql/suites/order_by/order_by_missing_project_column_nosimple.cfg b/yql/essentials/tests/sql/suites/order_by/order_by_missing_project_column_nosimple.cfg
new file mode 100644
index 00000000000..bb349dd8abd
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/order_by/order_by_missing_project_column_nosimple.cfg
@@ -0,0 +1 @@
+providers yt
diff --git a/yql/essentials/tests/sql/suites/order_by/order_by_missing_project_column_nosimple.sql b/yql/essentials/tests/sql/suites/order_by/order_by_missing_project_column_nosimple.sql
new file mode 100644
index 00000000000..f1434c8c08b
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/order_by/order_by_missing_project_column_nosimple.sql
@@ -0,0 +1,32 @@
+/* syntax version 1 */
+/* postgres can not */
+/* dq can not */
+/* dqfile can not */
+/* yt can not */
+pragma DisableSimpleColumns;
+
+$src = [
+<|a:5, b:50, zz:500|>,
+<|a:4, b:40, zz:400|>,
+<|a:3, b:30, zz:300|>,
+<|a:2, b:20, zz:200|>,
+<|a:1, b:10, zz:100|>,
+];
+
+$src1 = [
+<|a:4, f:40|>,
+<|a:3, f:30|>,
+<|a:2, f:20|>,
+<|a:1, f:10|>,
+];
+
+
+$src = select * from as_table($src);
+$src1 = select * from as_table($src1);
+
+select
+ x.*
+from $src as x
+left only join $src1 as y
+using(a)
+order by random(a);