aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/tests/sql/suites/column_order
diff options
context:
space:
mode:
authorMaxim Yurchuk <maxim-yurchuk@ydb.tech>2024-11-20 17:37:57 +0000
committerGitHub <noreply@github.com>2024-11-20 17:37:57 +0000
commitf76323e9b295c15751e51e3443aa47a36bee8023 (patch)
tree4113c8cad473a33e0f746966e0cf087252fa1d7a /yql/essentials/tests/sql/suites/column_order
parent753ecb8d410a4cb459c26f3a0082fb2d1724fe63 (diff)
parenta7b9a6afea2a9d7a7bfac4c5eb4c1a8e60adb9e6 (diff)
downloadydb-f76323e9b295c15751e51e3443aa47a36bee8023.tar.gz
Merge pull request #11788 from ydb-platform/mergelibs-241120-1113
Library import 241120-1113
Diffstat (limited to 'yql/essentials/tests/sql/suites/column_order')
-rw-r--r--yql/essentials/tests/sql/suites/column_order/align_publish.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/column_order/align_publish.sql10
-rw-r--r--yql/essentials/tests/sql/suites/column_order/align_publish_native.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/column_order/align_publish_native.sql12
-rw-r--r--yql/essentials/tests/sql/suites/column_order/default.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/column_order/input.txt4
-rw-r--r--yql/essentials/tests/sql/suites/column_order/input.txt.attr7
-rw-r--r--yql/essentials/tests/sql/suites/column_order/insert.cfg2
-rw-r--r--yql/essentials/tests/sql/suites/column_order/insert.sql26
-rw-r--r--yql/essentials/tests/sql/suites/column_order/insert_reorder_without_columnorder.cfg2
-rw-r--r--yql/essentials/tests/sql/suites/column_order/insert_reorder_without_columnorder.sql14
-rw-r--r--yql/essentials/tests/sql/suites/column_order/insert_tmp.sql18
-rw-r--r--yql/essentials/tests/sql/suites/column_order/insert_with_desc_sort_and_native_types.sql12
-rw-r--r--yql/essentials/tests/sql/suites/column_order/insert_with_new_cols.cfg2
-rw-r--r--yql/essentials/tests/sql/suites/column_order/insert_with_new_cols.sql9
-rw-r--r--yql/essentials/tests/sql/suites/column_order/insert_with_reorder_cols.cfg2
-rw-r--r--yql/essentials/tests/sql/suites/column_order/insert_with_reorder_cols.sql20
-rw-r--r--yql/essentials/tests/sql/suites/column_order/join.cfg3
-rw-r--r--yql/essentials/tests/sql/suites/column_order/join.sql11
-rw-r--r--yql/essentials/tests/sql/suites/column_order/join_nosimple.cfg3
-rw-r--r--yql/essentials/tests/sql/suites/column_order/join_nosimple.sql12
-rw-r--r--yql/essentials/tests/sql/suites/column_order/ordered_plus_native.cfg2
-rw-r--r--yql/essentials/tests/sql/suites/column_order/ordered_plus_native.sql14
-rw-r--r--yql/essentials/tests/sql/suites/column_order/select_action.sql8
-rw-r--r--yql/essentials/tests/sql/suites/column_order/select_distinct_star.sql7
-rw-r--r--yql/essentials/tests/sql/suites/column_order/select_groupby_with_star.sql8
-rw-r--r--yql/essentials/tests/sql/suites/column_order/select_limit_offset.sql9
-rw-r--r--yql/essentials/tests/sql/suites/column_order/select_limit_offset_reorder.sql6
-rw-r--r--yql/essentials/tests/sql/suites/column_order/select_orderby.sql7
-rw-r--r--yql/essentials/tests/sql/suites/column_order/select_plain.sql16
-rw-r--r--yql/essentials/tests/sql/suites/column_order/select_plain_nosimple.sql17
-rw-r--r--yql/essentials/tests/sql/suites/column_order/select_sample.sql7
-rw-r--r--yql/essentials/tests/sql/suites/column_order/select_subquery.sql11
-rw-r--r--yql/essentials/tests/sql/suites/column_order/select_where.sql7
-rw-r--r--yql/essentials/tests/sql/suites/column_order/select_win_func.sql11
-rw-r--r--yql/essentials/tests/sql/suites/column_order/union_all.sql15
-rw-r--r--yql/essentials/tests/sql/suites/column_order/union_all_positional.sql9
-rw-r--r--yql/essentials/tests/sql/suites/column_order/union_all_positional_columns_count_fail.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/column_order/union_all_positional_columns_count_fail.sql7
-rw-r--r--yql/essentials/tests/sql/suites/column_order/union_all_positional_unordered_fail.cfg1
-rw-r--r--yql/essentials/tests/sql/suites/column_order/union_all_positional_unordered_fail.sql8
-rw-r--r--yql/essentials/tests/sql/suites/column_order/values.sql10
-rw-r--r--yql/essentials/tests/sql/suites/column_order/winfunc.sql9
43 files changed, 362 insertions, 0 deletions
diff --git a/yql/essentials/tests/sql/suites/column_order/align_publish.cfg b/yql/essentials/tests/sql/suites/column_order/align_publish.cfg
new file mode 100644
index 0000000000..9b85bd0ae8
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/align_publish.cfg
@@ -0,0 +1 @@
+out Output output.txt
diff --git a/yql/essentials/tests/sql/suites/column_order/align_publish.sql b/yql/essentials/tests/sql/suites/column_order/align_publish.sql
new file mode 100644
index 0000000000..7c56456e8c
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/align_publish.sql
@@ -0,0 +1,10 @@
+PRAGMA OrderedColumns;
+USE plato;
+
+INSERT INTO @table1 WITH TRUNCATE (a, c, b) VALUES ('1', '2', '3');
+COMMIT;
+
+INSERT INTO Output WITH TRUNCATE
+SELECT x.c AS d, x.b AS b, json('{}') AS a
+FROM @table1 AS x
+ORDER BY d
diff --git a/yql/essentials/tests/sql/suites/column_order/align_publish_native.cfg b/yql/essentials/tests/sql/suites/column_order/align_publish_native.cfg
new file mode 100644
index 0000000000..9b85bd0ae8
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/align_publish_native.cfg
@@ -0,0 +1 @@
+out Output output.txt
diff --git a/yql/essentials/tests/sql/suites/column_order/align_publish_native.sql b/yql/essentials/tests/sql/suites/column_order/align_publish_native.sql
new file mode 100644
index 0000000000..f483b40019
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/align_publish_native.sql
@@ -0,0 +1,12 @@
+/* ignore runonopt plan diff */
+PRAGMA OrderedColumns;
+PRAGMA yt.UseNativeYtTypes;
+USE plato;
+
+INSERT INTO @table1 WITH TRUNCATE (a, c, b) VALUES ('1', '2', '3');
+COMMIT;
+
+INSERT INTO Output WITH TRUNCATE
+SELECT x.c AS d, x.b AS b, json('{}') AS a
+FROM @table1 AS x
+ORDER BY d
diff --git a/yql/essentials/tests/sql/suites/column_order/default.cfg b/yql/essentials/tests/sql/suites/column_order/default.cfg
new file mode 100644
index 0000000000..58878f8945
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/default.cfg
@@ -0,0 +1 @@
+in Input input.txt
diff --git a/yql/essentials/tests/sql/suites/column_order/input.txt b/yql/essentials/tests/sql/suites/column_order/input.txt
new file mode 100644
index 0000000000..65949ea745
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/input.txt
@@ -0,0 +1,4 @@
+{"key"="075";"subkey"="1";"value"="abc"};
+{"key"="800";"subkey"="2";"value"="ddd"};
+{"key"="020";"subkey"="3";"value"="q"};
+{"key"="150";"subkey"="4";"value"="qzz"};
diff --git a/yql/essentials/tests/sql/suites/column_order/input.txt.attr b/yql/essentials/tests/sql/suites/column_order/input.txt.attr
new file mode 100644
index 0000000000..88356bebbc
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/input.txt.attr
@@ -0,0 +1,7 @@
+{"_yql_row_spec"={
+ "Type"=["StructType";[
+ ["value";["DataType";"String"]];
+ ["subkey";["DataType";"String"]];
+ ["key";["DataType";"String"]]
+ ]];
+}}
diff --git a/yql/essentials/tests/sql/suites/column_order/insert.cfg b/yql/essentials/tests/sql/suites/column_order/insert.cfg
new file mode 100644
index 0000000000..ad52c79527
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/insert.cfg
@@ -0,0 +1,2 @@
+in Input input.txt
+out Output output.txt
diff --git a/yql/essentials/tests/sql/suites/column_order/insert.sql b/yql/essentials/tests/sql/suites/column_order/insert.sql
new file mode 100644
index 0000000000..5367b6913b
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/insert.sql
@@ -0,0 +1,26 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+insert into Input
+select key, subkey, value from Input;
+
+commit;
+
+select * from Input order by subkey, key;
+
+insert into Output
+select * from Input order by subkey, key;
+
+commit;
+
+select * from Output order by subkey, key;
+
+insert into Output with truncate
+select key,value,subkey from Input order by subkey, key;
+
+select * from Output order by subkey, key;
+commit;
+select * from Output order by subkey, key;
+
diff --git a/yql/essentials/tests/sql/suites/column_order/insert_reorder_without_columnorder.cfg b/yql/essentials/tests/sql/suites/column_order/insert_reorder_without_columnorder.cfg
new file mode 100644
index 0000000000..ad52c79527
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/insert_reorder_without_columnorder.cfg
@@ -0,0 +1,2 @@
+in Input input.txt
+out Output output.txt
diff --git a/yql/essentials/tests/sql/suites/column_order/insert_reorder_without_columnorder.sql b/yql/essentials/tests/sql/suites/column_order/insert_reorder_without_columnorder.sql
new file mode 100644
index 0000000000..0b9f6613ac
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/insert_reorder_without_columnorder.sql
@@ -0,0 +1,14 @@
+/* postgres can not */
+use plato;
+pragma DisableOrderedColumns;
+pragma warning("disable", "4517");
+
+$Group = 1u;
+
+INSERT INTO Output(Group, Name)
+SELECT
+ $Group,
+ value
+FROM Input
+WHERE key = "150"
+LIMIT 1;
diff --git a/yql/essentials/tests/sql/suites/column_order/insert_tmp.sql b/yql/essentials/tests/sql/suites/column_order/insert_tmp.sql
new file mode 100644
index 0000000000..be3485553e
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/insert_tmp.sql
@@ -0,0 +1,18 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+insert into @tmp
+select * from Input order by subkey, key;
+commit;
+
+select * from @tmp order by subkey, key;
+
+insert into @tmp with truncate
+select key, value, subkey from Input order by subkey, key;
+
+select * from @tmp order by subkey, key;
+commit;
+select * from @tmp order by subkey, key;
+
diff --git a/yql/essentials/tests/sql/suites/column_order/insert_with_desc_sort_and_native_types.sql b/yql/essentials/tests/sql/suites/column_order/insert_with_desc_sort_and_native_types.sql
new file mode 100644
index 0000000000..a97c43f38b
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/insert_with_desc_sort_and_native_types.sql
@@ -0,0 +1,12 @@
+/* postgres can not */
+/* hybridfile can not YQL-17743 */
+USE plato;
+
+PRAGMA OrderedColumns;
+PRAGMA yt.UseNativeYtTypes;
+
+insert into @tmp
+select key, AsList(subkey), value
+from Input
+where key > '000'
+order by value desc;
diff --git a/yql/essentials/tests/sql/suites/column_order/insert_with_new_cols.cfg b/yql/essentials/tests/sql/suites/column_order/insert_with_new_cols.cfg
new file mode 100644
index 0000000000..ad52c79527
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/insert_with_new_cols.cfg
@@ -0,0 +1,2 @@
+in Input input.txt
+out Output output.txt
diff --git a/yql/essentials/tests/sql/suites/column_order/insert_with_new_cols.sql b/yql/essentials/tests/sql/suites/column_order/insert_with_new_cols.sql
new file mode 100644
index 0000000000..54c1afc925
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/insert_with_new_cols.sql
@@ -0,0 +1,9 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+insert into Output with truncate
+select a.*
+, count(key) over (partition by subkey) as cnt
+from Input as a
diff --git a/yql/essentials/tests/sql/suites/column_order/insert_with_reorder_cols.cfg b/yql/essentials/tests/sql/suites/column_order/insert_with_reorder_cols.cfg
new file mode 100644
index 0000000000..ad52c79527
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/insert_with_reorder_cols.cfg
@@ -0,0 +1,2 @@
+in Input input.txt
+out Output output.txt
diff --git a/yql/essentials/tests/sql/suites/column_order/insert_with_reorder_cols.sql b/yql/essentials/tests/sql/suites/column_order/insert_with_reorder_cols.sql
new file mode 100644
index 0000000000..eff98969d9
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/insert_with_reorder_cols.sql
@@ -0,0 +1,20 @@
+/* postgres can not */
+/* syntax version 1 */
+USE plato;
+
+PRAGMA PositionalUnionAll;
+PRAGMA yt.UseNativeYtTypes;
+
+$i =
+SELECT
+ key,
+ AGGREGATE_LIST(subkey) as lst
+FROM Input
+GROUP BY key;
+
+INSERT INTO Output
+SELECT
+ a.key as key,
+ lst ?? [] as lst,
+ 2 as anum,
+FROM $i as a; \ No newline at end of file
diff --git a/yql/essentials/tests/sql/suites/column_order/join.cfg b/yql/essentials/tests/sql/suites/column_order/join.cfg
new file mode 100644
index 0000000000..1acaa00cf7
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/join.cfg
@@ -0,0 +1,3 @@
+in Input input.txt
+providers yt
+
diff --git a/yql/essentials/tests/sql/suites/column_order/join.sql b/yql/essentials/tests/sql/suites/column_order/join.sql
new file mode 100644
index 0000000000..9b356e0a4f
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/join.sql
@@ -0,0 +1,11 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+$foo = select 1 as sk, "150" as key, 2 as v;
+
+select * from $foo as b join Input as a using(key);
+select a.* from $foo as b join Input as a using(key);
+select b.* from $foo as b join Input as a using(key);
+select a.*, b.* from $foo as b join Input as a using(key);
diff --git a/yql/essentials/tests/sql/suites/column_order/join_nosimple.cfg b/yql/essentials/tests/sql/suites/column_order/join_nosimple.cfg
new file mode 100644
index 0000000000..1acaa00cf7
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/join_nosimple.cfg
@@ -0,0 +1,3 @@
+in Input input.txt
+providers yt
+
diff --git a/yql/essentials/tests/sql/suites/column_order/join_nosimple.sql b/yql/essentials/tests/sql/suites/column_order/join_nosimple.sql
new file mode 100644
index 0000000000..8784238898
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/join_nosimple.sql
@@ -0,0 +1,12 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+pragma DisableSimpleColumns;
+
+$foo = select 1 as sk, "150" as key, 2 as v;
+
+select * from $foo as b join Input as a using(key);
+select a.* from $foo as b join Input as a using(key);
+select b.* from $foo as b join Input as a using(key);
+select a.*, b.* from $foo as b join Input as a using(key);
diff --git a/yql/essentials/tests/sql/suites/column_order/ordered_plus_native.cfg b/yql/essentials/tests/sql/suites/column_order/ordered_plus_native.cfg
new file mode 100644
index 0000000000..ad52c79527
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/ordered_plus_native.cfg
@@ -0,0 +1,2 @@
+in Input input.txt
+out Output output.txt
diff --git a/yql/essentials/tests/sql/suites/column_order/ordered_plus_native.sql b/yql/essentials/tests/sql/suites/column_order/ordered_plus_native.sql
new file mode 100644
index 0000000000..589b74ccc8
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/ordered_plus_native.sql
@@ -0,0 +1,14 @@
+/* postgres can not */
+/* syntax version 1 */
+USE plato;
+
+PRAGMA OrderedColumns;
+PRAGMA yt.UseNativeYtTypes;
+
+
+INSERT INTO Output WITH TRUNCATE
+SELECT
+ aggr_list(subkey) as subkey,
+ key,
+FROM Input AS a
+GROUP BY a.key as key;
diff --git a/yql/essentials/tests/sql/suites/column_order/select_action.sql b/yql/essentials/tests/sql/suites/column_order/select_action.sql
new file mode 100644
index 0000000000..e26c75a06f
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/select_action.sql
@@ -0,0 +1,8 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+evaluate for $i in ["1", "2", "3"] do begin
+ select * from Input where subkey = $i;
+end do;
diff --git a/yql/essentials/tests/sql/suites/column_order/select_distinct_star.sql b/yql/essentials/tests/sql/suites/column_order/select_distinct_star.sql
new file mode 100644
index 0000000000..5c229a512f
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/select_distinct_star.sql
@@ -0,0 +1,7 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+select distinct * from Input order by subkey, key;
+
diff --git a/yql/essentials/tests/sql/suites/column_order/select_groupby_with_star.sql b/yql/essentials/tests/sql/suites/column_order/select_groupby_with_star.sql
new file mode 100644
index 0000000000..ffb116362a
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/select_groupby_with_star.sql
@@ -0,0 +1,8 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+select * from Input group by value, key order by key, value;
+select * from Input group by value, key having key = "150";
+select * from Input group by subkey, key || "x" as key order by subkey, key;
diff --git a/yql/essentials/tests/sql/suites/column_order/select_limit_offset.sql b/yql/essentials/tests/sql/suites/column_order/select_limit_offset.sql
new file mode 100644
index 0000000000..2da2186ca6
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/select_limit_offset.sql
@@ -0,0 +1,9 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+select * from Input order by key limit 1 offset 3;
+select * from Input order by value limit 0 offset 3;
+select * from Input limit 0;
+
diff --git a/yql/essentials/tests/sql/suites/column_order/select_limit_offset_reorder.sql b/yql/essentials/tests/sql/suites/column_order/select_limit_offset_reorder.sql
new file mode 100644
index 0000000000..e8a9cf93db
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/select_limit_offset_reorder.sql
@@ -0,0 +1,6 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+select subkey, key, value from (select * from Input) as x order by key, subkey limit 1 offset 1;
diff --git a/yql/essentials/tests/sql/suites/column_order/select_orderby.sql b/yql/essentials/tests/sql/suites/column_order/select_orderby.sql
new file mode 100644
index 0000000000..12bfaa33d3
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/select_orderby.sql
@@ -0,0 +1,7 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+select * from Input order by key;
+
diff --git a/yql/essentials/tests/sql/suites/column_order/select_plain.sql b/yql/essentials/tests/sql/suites/column_order/select_plain.sql
new file mode 100644
index 0000000000..b495924f3d
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/select_plain.sql
@@ -0,0 +1,16 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+select * from Input order by subkey;
+select * without key from Input order by subkey;
+
+select a.* from Input as a order by a.subkey;
+select a.* without key from Input as a order by a.subkey;
+
+select 1 as z, 2 as x, a.* from Input as a order by a.subkey;
+select 1 as z, 2 as x, a.* without key from Input as a order by a.subkey;
+
+select 1 as c, 2 as b, 3 as a;
+
diff --git a/yql/essentials/tests/sql/suites/column_order/select_plain_nosimple.sql b/yql/essentials/tests/sql/suites/column_order/select_plain_nosimple.sql
new file mode 100644
index 0000000000..9f3c6de79b
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/select_plain_nosimple.sql
@@ -0,0 +1,17 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+pragma DisableSimpleColumns;
+
+select * from Input;
+select * without key from Input;
+
+select a.* from Input as a;
+select a.* without key from Input as a;
+
+select 1 as z, 2 as x, a.* from Input as a;
+select 1 as z, 2 as x, a.* without key from Input as a;
+
+select 1 as c, 2 as b, 3 as a;
+
diff --git a/yql/essentials/tests/sql/suites/column_order/select_sample.sql b/yql/essentials/tests/sql/suites/column_order/select_sample.sql
new file mode 100644
index 0000000000..af4555f2a4
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/select_sample.sql
@@ -0,0 +1,7 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+select * from Input tablesample bernoulli(100.0);
+
diff --git a/yql/essentials/tests/sql/suites/column_order/select_subquery.sql b/yql/essentials/tests/sql/suites/column_order/select_subquery.sql
new file mode 100644
index 0000000000..c00407dfdc
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/select_subquery.sql
@@ -0,0 +1,11 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+define subquery $select_star($table) as
+ select * without subkey from $table;
+end define;
+
+select * from $select_star("Input");
+
diff --git a/yql/essentials/tests/sql/suites/column_order/select_where.sql b/yql/essentials/tests/sql/suites/column_order/select_where.sql
new file mode 100644
index 0000000000..d08d7cae43
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/select_where.sql
@@ -0,0 +1,7 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+select * from Input where key="150";
+
diff --git a/yql/essentials/tests/sql/suites/column_order/select_win_func.sql b/yql/essentials/tests/sql/suites/column_order/select_win_func.sql
new file mode 100644
index 0000000000..4ce0668d97
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/select_win_func.sql
@@ -0,0 +1,11 @@
+/* postgres can not */
+/* syntax version 1 */
+use plato;
+pragma OrderedColumns;
+
+select
+ min(subkey) over (partition by key) as zz,
+ row_number() over (order by key, subkey) as z,
+ a.*
+from Input as a
+order by key, subkey;
diff --git a/yql/essentials/tests/sql/suites/column_order/union_all.sql b/yql/essentials/tests/sql/suites/column_order/union_all.sql
new file mode 100644
index 0000000000..ea88506906
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/union_all.sql
@@ -0,0 +1,15 @@
+/* postgres can not */
+/* syntax version 1 */
+pragma OrderedColumns;
+
+select 1 as z, 2 as y, 3 as x
+union all
+select 1 as z, 2 as y
+union all
+select 1 as z;
+
+select 1 as z, 2 as y, 3 as x
+union all
+select 1 as z, 2 as y
+union all
+select 1 as a;
diff --git a/yql/essentials/tests/sql/suites/column_order/union_all_positional.sql b/yql/essentials/tests/sql/suites/column_order/union_all_positional.sql
new file mode 100644
index 0000000000..9d1bcdb209
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/union_all_positional.sql
@@ -0,0 +1,9 @@
+/* postgres can not */
+/* syntax version 1 */
+pragma PositionalUnionAll;
+pragma warning("disable", "1107");
+
+select (1,1u) as z, (2,2u) as y, (3,3u) as x
+union all
+select (1u,1) as a, (2u,2) as b, (3u,3) as c;
+
diff --git a/yql/essentials/tests/sql/suites/column_order/union_all_positional_columns_count_fail.cfg b/yql/essentials/tests/sql/suites/column_order/union_all_positional_columns_count_fail.cfg
new file mode 100644
index 0000000000..5dae597903
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/union_all_positional_columns_count_fail.cfg
@@ -0,0 +1 @@
+xfail
diff --git a/yql/essentials/tests/sql/suites/column_order/union_all_positional_columns_count_fail.sql b/yql/essentials/tests/sql/suites/column_order/union_all_positional_columns_count_fail.sql
new file mode 100644
index 0000000000..7f44ded569
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/union_all_positional_columns_count_fail.sql
@@ -0,0 +1,7 @@
+/* postgres can not */
+/* syntax version 1 */
+pragma PositionalUnionAll;
+
+select 1 as c, 2 as b, 3 as a
+union all
+select 1 as c, 2 as b;
diff --git a/yql/essentials/tests/sql/suites/column_order/union_all_positional_unordered_fail.cfg b/yql/essentials/tests/sql/suites/column_order/union_all_positional_unordered_fail.cfg
new file mode 100644
index 0000000000..5dae597903
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/union_all_positional_unordered_fail.cfg
@@ -0,0 +1 @@
+xfail
diff --git a/yql/essentials/tests/sql/suites/column_order/union_all_positional_unordered_fail.sql b/yql/essentials/tests/sql/suites/column_order/union_all_positional_unordered_fail.sql
new file mode 100644
index 0000000000..78c4dd86c4
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/union_all_positional_unordered_fail.sql
@@ -0,0 +1,8 @@
+/* postgres can not */
+/* syntax version 1 */
+pragma PositionalUnionAll;
+
+select 1 as c, 2 as b, 3 as a
+union all
+select * from as_table([<|c:1, b:2, a:3|>]);
+
diff --git a/yql/essentials/tests/sql/suites/column_order/values.sql b/yql/essentials/tests/sql/suites/column_order/values.sql
new file mode 100644
index 0000000000..c5ec9acee3
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/values.sql
@@ -0,0 +1,10 @@
+/* postgres can not */
+/* syntax version 1 */
+pragma OrderedColumns;
+
+values (1,2), (3,4);
+
+select * from (values (1,2), (3,4));
+select * from (values (1,2), (3,4)) as t(b,c);
+select * from (values (1,2,3,4), (5,6,7,8)) as t(b,c,a);
+
diff --git a/yql/essentials/tests/sql/suites/column_order/winfunc.sql b/yql/essentials/tests/sql/suites/column_order/winfunc.sql
new file mode 100644
index 0000000000..eb5751334a
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/column_order/winfunc.sql
@@ -0,0 +1,9 @@
+use plato;
+pragma OrderedColumns;
+
+select
+ a.*
+ , lag(key) over (order by subkey) as prev_k
+ , min(key) over (order by subkey) as min_k
+from Input as a
+order by subkey