diff options
| author | aneporada <[email protected]> | 2024-12-19 23:36:31 +0300 |
|---|---|---|
| committer | aneporada <[email protected]> | 2024-12-19 23:53:17 +0300 |
| commit | 7d8dc90b69e5ec44a3e3cebd16c0cc2368186ede (patch) | |
| tree | 4047649dd35dc7b5fdbc9f11bd359ed066fd05f6 | |
| parent | e86fa68d77beb0170146f370d005dfefaa9fd963 (diff) | |
Fix order by missing column with DisableSimpleColumns
commit_hash:7dee9cb8b582262a125bab7f8503d00908683c10
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); |
