diff options
author | vvvv <vvvv@yandex-team.com> | 2024-12-28 18:52:49 +0300 |
---|---|---|
committer | vvvv <vvvv@yandex-team.com> | 2024-12-28 19:08:05 +0300 |
commit | 8edc031b752662cb60f411a2d7d3d6c162d801cf (patch) | |
tree | c78646d3f4c02c56d8e5659af94aa338df9e5447 /yt/yql/tests/sql/suites/join | |
parent | 4e51cb9d47a86fee833396ad0cdfb8e84ec8166c (diff) | |
download | ydb-8edc031b752662cb60f411a2d7d3d6c162d801cf.tar.gz |
Change "devtools/contrib/piglet/projects/ydblib/config.yaml"
commit_hash:bf8be6eaf53bc3065d37ec3eeb7b664ca9d6b76d
Diffstat (limited to 'yt/yql/tests/sql/suites/join')
664 files changed, 5427 insertions, 0 deletions
diff --git a/yt/yql/tests/sql/suites/join/aggr_diff_order.sql b/yt/yql/tests/sql/suites/join/aggr_diff_order.sql new file mode 100644 index 0000000000..21762aa6c1 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/aggr_diff_order.sql @@ -0,0 +1,14 @@ +USE plato; + +PRAGMA yt.JoinMergeForce = "1"; +pragma yt.JoinMergeTablesLimit="10"; + +SELECT key1, subkey1 +FROM + ( + SELECT a.key as key1, a.subkey as subkey1 + FROM ANY (SELECT * FROM Input8 WHERE subkey != "bar") AS a + JOIN ANY (SELECT * FROM Input8 WHERE subkey != "foo") AS b + ON a.key = b.key AND a.subkey = b.subkey + ) +GROUP COMPACT BY subkey1, key1; diff --git a/yt/yql/tests/sql/suites/join/alias_where_group-off.cfg b/yt/yql/tests/sql/suites/join/alias_where_group-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/alias_where_group-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/alias_where_group.cfg b/yt/yql/tests/sql/suites/join/alias_where_group.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/alias_where_group.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/alias_where_group.sql b/yt/yql/tests/sql/suites/join/alias_where_group.sql new file mode 100644 index 0000000000..bc7f28419c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/alias_where_group.sql @@ -0,0 +1,16 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +USE plato; + +SELECT + key, + subkey +FROM Input3 as ia +INNER JOIN Input4 as ib +USING(key) +WHERE + ib.subkey = '2' +GROUP BY + ia.key as key, + ia.value as subkey +ORDER BY key
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/anyjoin_common_dup-off.cfg b/yt/yql/tests/sql/suites/join/anyjoin_common_dup-off.cfg new file mode 100644 index 0000000000..ada3709d76 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/anyjoin_common_dup-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1_dup.txt +in Input2 sorted_by_kv2_dup.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/anyjoin_common_dup.cfg b/yt/yql/tests/sql/suites/join/anyjoin_common_dup.cfg new file mode 100644 index 0000000000..5186b3d003 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/anyjoin_common_dup.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1_dup.txt +in Input2 sorted_by_kv2_dup.txt diff --git a/yt/yql/tests/sql/suites/join/anyjoin_common_dup.sql b/yt/yql/tests/sql/suites/join/anyjoin_common_dup.sql new file mode 100644 index 0000000000..977215d43a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/anyjoin_common_dup.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +PRAGMA DisableSimpleColumns; +use plato; + +select * from Input1 as a right join Input2 as b on a.k1 = b.k2 order by a.v1, b.v2; +select * from any Input1 as a right join Input2 as b on a.k1 = b.k2 order by a.v1, b.v2; +select * from Input1 as a right join any Input2 as b on a.k1 = b.k2 order by a.v1, b.v2; +select * from any Input1 as a right join any Input2 as b on a.k1 = b.k2 order by a.v1, b.v2; + diff --git a/yt/yql/tests/sql/suites/join/anyjoin_common_nodata_keys-off.cfg b/yt/yql/tests/sql/suites/join/anyjoin_common_nodata_keys-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/anyjoin_common_nodata_keys-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/anyjoin_common_nodata_keys.cfg b/yt/yql/tests/sql/suites/join/anyjoin_common_nodata_keys.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/anyjoin_common_nodata_keys.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/anyjoin_common_nodata_keys.sql b/yt/yql/tests/sql/suites/join/anyjoin_common_nodata_keys.sql new file mode 100644 index 0000000000..bbde851b43 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/anyjoin_common_nodata_keys.sql @@ -0,0 +1,23 @@ +/* postgres can not */ +/* syntax version 1 */ + +USE plato; + +$a = SELECT AsTuple(1, 2) AS k1, 1 AS k2, 2 AS v; + +$b = SELECT AsTuple(1, 2) AS k1, 1 AS k2, 3 AS v1 + UNION ALL + SELECT AsTuple(1, 2) AS k1, 1 AS k2, 3 AS v1; + +INSERT INTO @a +SELECT * FROM $a; + +INSERT INTO @b +SELECT * FROM $b; + +COMMIT; + +SELECT * FROM @a AS a LEFT JOIN ANY @b AS b using(k1,k2); +SELECT * FROM @a AS a LEFT JOIN @b AS b using(k1,k2); + + diff --git a/yt/yql/tests/sql/suites/join/anyjoin_common_nodup-off.cfg b/yt/yql/tests/sql/suites/join/anyjoin_common_nodup-off.cfg new file mode 100644 index 0000000000..1f7a620911 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/anyjoin_common_nodup-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/anyjoin_common_nodup.cfg b/yt/yql/tests/sql/suites/join/anyjoin_common_nodup.cfg new file mode 100644 index 0000000000..df8cd9f2c7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/anyjoin_common_nodup.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/anyjoin_common_nodup.sql b/yt/yql/tests/sql/suites/join/anyjoin_common_nodup.sql new file mode 100644 index 0000000000..977215d43a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/anyjoin_common_nodup.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +PRAGMA DisableSimpleColumns; +use plato; + +select * from Input1 as a right join Input2 as b on a.k1 = b.k2 order by a.v1, b.v2; +select * from any Input1 as a right join Input2 as b on a.k1 = b.k2 order by a.v1, b.v2; +select * from Input1 as a right join any Input2 as b on a.k1 = b.k2 order by a.v1, b.v2; +select * from any Input1 as a right join any Input2 as b on a.k1 = b.k2 order by a.v1, b.v2; + diff --git a/yt/yql/tests/sql/suites/join/anyjoin_merge_nodup-off.cfg b/yt/yql/tests/sql/suites/join/anyjoin_merge_nodup-off.cfg new file mode 100644 index 0000000000..1f7a620911 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/anyjoin_merge_nodup-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/anyjoin_merge_nodup.cfg b/yt/yql/tests/sql/suites/join/anyjoin_merge_nodup.cfg new file mode 100644 index 0000000000..df8cd9f2c7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/anyjoin_merge_nodup.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/anyjoin_merge_nodup.sql b/yt/yql/tests/sql/suites/join/anyjoin_merge_nodup.sql new file mode 100644 index 0000000000..7d9a857905 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/anyjoin_merge_nodup.sql @@ -0,0 +1,10 @@ +/* syntax version 1 */ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; + +select * from Input1 as a join Input2 as b on a.k1 = b.k2 order by a.v1, b.v2; +select * from any Input1 as a join Input2 as b on a.k1 = b.k2 order by a.v1, b.v2; +select * from Input1 as a join any Input2 as b on a.k1 = b.k2 order by a.v1, b.v2; +select * from any Input1 as a join any Input2 as b on a.k1 = b.k2 order by a.v1, b.v2; + diff --git a/yt/yql/tests/sql/suites/join/branch.txt.attr b/yt/yql/tests/sql/suites/join/branch.txt.attr new file mode 100644 index 0000000000..4a77dc3233 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/branch.txt.attr @@ -0,0 +1,7 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"Uint64"]]; + ["leaf";["OptionalType";["DataType";"Uint64"]]]; + ["value";["OptionalType";["DataType";"String"]]]] + ]; +}} diff --git a/yt/yql/tests/sql/suites/join/bush_dis_in-off.cfg b/yt/yql/tests/sql/suites/join/bush_dis_in-off.cfg new file mode 100644 index 0000000000..f091bc1467 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_dis_in-off.cfg @@ -0,0 +1,5 @@ +in Roots root.txt +in Leaves leaf.txt +in Branches branch.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/bush_dis_in.cfg b/yt/yql/tests/sql/suites/join/bush_dis_in.cfg new file mode 100644 index 0000000000..684f34abfd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_dis_in.cfg @@ -0,0 +1,3 @@ +in Roots root.txt +in Leaves leaf.txt +in Branches branch.txt diff --git a/yt/yql/tests/sql/suites/join/bush_dis_in.sql b/yt/yql/tests/sql/suites/join/bush_dis_in.sql new file mode 100644 index 0000000000..82a9d54d6f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_dis_in.sql @@ -0,0 +1,11 @@ +PRAGMA DisableSimpleColumns; +USE plato; +select * from ( + SELECT DISTINCT i1.key AS Key, i1.value as Value, i2.value as Join + FROM Roots AS i1 + INNER JOIN Leaves AS i2 ON i1.leaf = i2.key + UNION ALL + SELECT DISTINCT i1.key AS Key, i1.value as Value, i2.value as Join + FROM Roots AS i1 + INNER JOIN Branches AS i2 ON i1.branch = i2.key +) order by Key, Value, Join; diff --git a/yt/yql/tests/sql/suites/join/bush_dis_in_in-off.cfg b/yt/yql/tests/sql/suites/join/bush_dis_in_in-off.cfg new file mode 100644 index 0000000000..f091bc1467 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_dis_in_in-off.cfg @@ -0,0 +1,5 @@ +in Roots root.txt +in Leaves leaf.txt +in Branches branch.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/bush_dis_in_in.cfg b/yt/yql/tests/sql/suites/join/bush_dis_in_in.cfg new file mode 100644 index 0000000000..684f34abfd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_dis_in_in.cfg @@ -0,0 +1,3 @@ +in Roots root.txt +in Leaves leaf.txt +in Branches branch.txt diff --git a/yt/yql/tests/sql/suites/join/bush_dis_in_in.sql b/yt/yql/tests/sql/suites/join/bush_dis_in_in.sql new file mode 100644 index 0000000000..bd1989e82d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_dis_in_in.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +USE plato; +SELECT DISTINCT i1.key AS Key, i1.value AS Value, i2.value AS Leaf, i3.value AS Branch +FROM Roots AS i1 +INNER JOIN Leaves AS i2 ON i1.leaf = i2.key +INNER JOIN Branches AS i3 ON i1.branch = i3.key +ORDER BY Leaf, Branch; diff --git a/yt/yql/tests/sql/suites/join/bush_dis_in_in_in-off.cfg b/yt/yql/tests/sql/suites/join/bush_dis_in_in_in-off.cfg new file mode 100644 index 0000000000..f091bc1467 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_dis_in_in_in-off.cfg @@ -0,0 +1,5 @@ +in Roots root.txt +in Leaves leaf.txt +in Branches branch.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/bush_dis_in_in_in.cfg b/yt/yql/tests/sql/suites/join/bush_dis_in_in_in.cfg new file mode 100644 index 0000000000..684f34abfd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_dis_in_in_in.cfg @@ -0,0 +1,3 @@ +in Roots root.txt +in Leaves leaf.txt +in Branches branch.txt diff --git a/yt/yql/tests/sql/suites/join/bush_dis_in_in_in.sql b/yt/yql/tests/sql/suites/join/bush_dis_in_in_in.sql new file mode 100644 index 0000000000..22d12df7c5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_dis_in_in_in.sql @@ -0,0 +1,8 @@ +PRAGMA DisableSimpleColumns; +USE plato; +SELECT DISTINCT i1.key AS Key, i1.value as Value, i2.value As Leaf, i3.value AS Branch, i4.value AS Branch_Leaf +FROM Roots AS i1 +INNER JOIN Leaves AS i2 ON i1.leaf = i2.key +INNER JOIN Branches AS i3 ON i1.branch = i3.key +INNER JOIN Leaves AS i4 ON i3.leaf = i4.key +ORDER BY Leaf, Branch, Branch_Leaf; diff --git a/yt/yql/tests/sql/suites/join/bush_in-off.cfg b/yt/yql/tests/sql/suites/join/bush_in-off.cfg new file mode 100644 index 0000000000..f091bc1467 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_in-off.cfg @@ -0,0 +1,5 @@ +in Roots root.txt +in Leaves leaf.txt +in Branches branch.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/bush_in.cfg b/yt/yql/tests/sql/suites/join/bush_in.cfg new file mode 100644 index 0000000000..684f34abfd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_in.cfg @@ -0,0 +1,3 @@ +in Roots root.txt +in Leaves leaf.txt +in Branches branch.txt diff --git a/yt/yql/tests/sql/suites/join/bush_in.sql b/yt/yql/tests/sql/suites/join/bush_in.sql new file mode 100644 index 0000000000..af77ba34e3 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_in.sql @@ -0,0 +1,11 @@ +PRAGMA DisableSimpleColumns; +USE plato; +select * from ( + SELECT i1.key AS Key, i1.value as Value, i2.value as Join + FROM Roots AS i1 + INNER JOIN Leaves AS i2 ON i1.leaf = i2.key + UNION ALL + SELECT i1.key AS Key, i1.value as Value, i2.value as Join + FROM Roots AS i1 + INNER JOIN Branches AS i2 ON i1.branch = i2.key +) order by Key, Value, Join; diff --git a/yt/yql/tests/sql/suites/join/bush_in_in-off.cfg b/yt/yql/tests/sql/suites/join/bush_in_in-off.cfg new file mode 100644 index 0000000000..f091bc1467 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_in_in-off.cfg @@ -0,0 +1,5 @@ +in Roots root.txt +in Leaves leaf.txt +in Branches branch.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/bush_in_in.cfg b/yt/yql/tests/sql/suites/join/bush_in_in.cfg new file mode 100644 index 0000000000..684f34abfd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_in_in.cfg @@ -0,0 +1,3 @@ +in Roots root.txt +in Leaves leaf.txt +in Branches branch.txt diff --git a/yt/yql/tests/sql/suites/join/bush_in_in.sql b/yt/yql/tests/sql/suites/join/bush_in_in.sql new file mode 100644 index 0000000000..bf385a0ea9 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_in_in.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +USE plato; +SELECT i1.key AS Key, i1.value AS Value, i2.value AS Leaf, i3.value AS Branch +FROM Roots AS i1 +INNER JOIN Leaves AS i2 ON i1.leaf = i2.key +INNER JOIN Branches AS i3 ON i1.branch = i3.key +ORDER BY Leaf, Branch; diff --git a/yt/yql/tests/sql/suites/join/bush_in_in_in-off.cfg b/yt/yql/tests/sql/suites/join/bush_in_in_in-off.cfg new file mode 100644 index 0000000000..f091bc1467 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_in_in_in-off.cfg @@ -0,0 +1,5 @@ +in Roots root.txt +in Leaves leaf.txt +in Branches branch.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/bush_in_in_in.cfg b/yt/yql/tests/sql/suites/join/bush_in_in_in.cfg new file mode 100644 index 0000000000..684f34abfd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_in_in_in.cfg @@ -0,0 +1,3 @@ +in Roots root.txt +in Leaves leaf.txt +in Branches branch.txt diff --git a/yt/yql/tests/sql/suites/join/bush_in_in_in.sql b/yt/yql/tests/sql/suites/join/bush_in_in_in.sql new file mode 100644 index 0000000000..901aa219d9 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/bush_in_in_in.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +USE plato; +SELECT i1.key AS Key, i1.value as Value, i2.value As Leaf, i3.value AS Branch, i4.value AS Branch_Leaf +FROM Roots AS i1 +INNER JOIN Leaves AS i2 ON i1.leaf = i2.key +INNER JOIN Branches AS i3 ON i1.branch = i3.key +INNER JOIN Leaves AS i4 ON i3.leaf = i4.key; diff --git a/yt/yql/tests/sql/suites/join/cbo_4tables.cfg b/yt/yql/tests/sql/suites/join/cbo_4tables.cfg new file mode 100644 index 0000000000..a5101acc8c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/cbo_4tables.cfg @@ -0,0 +1,5 @@ +providers yt +in InputA cbo_4tables_a.txt +in InputB cbo_4tables_b.txt +in InputC cbo_4tables_c.txt +in InputD cbo_4tables_d.txt diff --git a/yt/yql/tests/sql/suites/join/cbo_4tables.sql b/yt/yql/tests/sql/suites/join/cbo_4tables.sql new file mode 100644 index 0000000000..1629efa144 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/cbo_4tables.sql @@ -0,0 +1,18 @@ +/* ytfile can not */ +USE plato; +pragma warning("disable", "8001"); -- CBO_MISSING_TABLE_STATS + +pragma CostBasedOptimizer="native"; +pragma yt.MapJoinLimit="1000"; +pragma yt.LookupJoinLimit="1000"; +pragma yt.LookupJoinMaxRows="100"; +pragma yt.ExtendedStatsMaxChunkCount="0"; +pragma yt.JoinMergeTablesLimit="100"; + +SELECT + InputA.Key1, InputA.Key2, InputA.Value, InputB.val, InputC.v, InputD.value as vald +FROM + InputA + INNER JOIN InputD ON InputA.Key2 = InputD.k + INNER JOIN InputB ON InputA.Fk1 = InputB.k + INNER JOIN InputC ON InputA.Key1 = InputC.k diff --git a/yt/yql/tests/sql/suites/join/cbo_4tables_a.txt.attr b/yt/yql/tests/sql/suites/join/cbo_4tables_a.txt.attr new file mode 100644 index 0000000000..295e5a3d06 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/cbo_4tables_a.txt.attr @@ -0,0 +1,61 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["Key1";["DataType";"Int32"]]; + ["Key2";["DataType";"String"]]; + ["Fk1";["OptionalType";["DataType";"String"]]]; + ["Value";["OptionalType";["DataType";"String"]]]] + ]; + "SortDirections"=[1;1]; + "SortedBy"=["Key1";"Key2"]; + "SortedByTypes"=[["DataType";"Int32";];["DataType";"String"]]; + "SortMembers"=["Key1";"Key2"]; + }; + "schema" = <"strict" = %true; "unique_keys" = %false> + [ + { + "name" = "Key1"; + "sort_order" = "ascending"; + "type" = "int64"; + "type_v3" = {"type_name" = "optional"; item = "int64"} + }; + { + "name" = "Key2"; + "sort_order" = "ascending"; + "type" = "string"; + "type_v3" = {"type_name" = "optional"; item = "string"} + }; + { + "name" = "Fk1"; + "type" = "string"; + "type_v3" = {"type_name" = "optional"; item = "string"} + }; + { + "name" = "Value"; + "type" = "string"; + "type_v3" = {"type_name" = "optional"; item = "string"} + }; + ]; + "extended_stats" = [ + { + "column_name" = "Key1"; + "data_weight" = 56; + "num_unique_vals" = 11; + }; + { + "column_name" = "Key2"; + "data_weight" = 66; + "num_unique_vals" = 5; + }; + { + "column_name" = "Fk1"; + "data_weight" = 70; + "num_unique_vals" = 5; + }; + { + "column_name" = "Value"; + "data_weight" = 98; + "num_unique_vals" = 6; + } + ] +} diff --git a/yt/yql/tests/sql/suites/join/cbo_4tables_b.txt.attr b/yt/yql/tests/sql/suites/join/cbo_4tables_b.txt.attr new file mode 100644 index 0000000000..460ca717f8 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/cbo_4tables_b.txt.attr @@ -0,0 +1,34 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["k";["OptionalType";["DataType";"String"]]]; + ["val";["OptionalType";["DataType";"String"]]]] + ]; + }; + + "schema" = <"strict" = %true; "unique_keys" = %false> + [ + { + "name" = "k"; + "type" = "string"; + "type_v3" = {"type_name" = "optional"; item = "string"} + }; + { + "name" = "val"; + "type" = "string"; + "type_v3" = {"type_name" = "optional"; item = "string"} + }; + ]; + "extended_stats" = [ + { + "column_name" = "k"; + "data_weight" = 18; + "num_unique_vals" = 2; + }; + { + "column_name" = "val"; + "data_weight" = 20; + "num_unique_vals" = 3; + } + ] +} diff --git a/yt/yql/tests/sql/suites/join/cbo_4tables_c.txt.attr b/yt/yql/tests/sql/suites/join/cbo_4tables_c.txt.attr new file mode 100644 index 0000000000..fb108546cd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/cbo_4tables_c.txt.attr @@ -0,0 +1,34 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["k";["OptionalType";["DataType";"Int64"]]]; + ["v";["OptionalType";["DataType";"Int64"]]]] + ]; + }; + + "schema" = <"strict" = %true; "unique_keys" = %false> + [ + { + "name" = "k"; + "type" = "int64"; + "type_v3" = {"type_name" = "optional"; item = "int64"} + }; + { + "name" = "v"; + "type" = "int64"; + "type_v3" = {"type_name" = "optional"; item = "int64"} + }; + ]; + "extended_stats" = [ + { + "column_name" = "k"; + "data_weight" = 12; + "num_unique_vals" = 3; + }; + { + "column_name" = "v"; + "data_weight" = 12; + "num_unique_vals" = 3; + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/cbo_4tables_d.txt.attr b/yt/yql/tests/sql/suites/join/cbo_4tables_d.txt.attr new file mode 100644 index 0000000000..8050807ed9 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/cbo_4tables_d.txt.attr @@ -0,0 +1,50 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["id";["DataType";"Int32"]]; + ["k";["OptionalType";["DataType";"String"]]]; + ["value";["OptionalType";["DataType";"Int64"]]]] + ]; + "SortDirections"=[1]; + "SortedBy"=["id"]; + "SortedByTypes"=[["DataType";"Int32"]]; + "SortMembers"=["id"]; + }; + + "schema" = <"strict" = %true; "unique_keys" = %false> + [ + { + "name" = "id"; + "sort_order" = "ascending"; + "type" = "int64"; + "type_v3" = {"type_name" = "optional"; item = "int64"} + }; + { + "name" = "k"; + "type" = "string"; + "type_v3" = {"type_name" = "optional"; item = "string"} + }; + { + "name" = "value"; + "type" = "int64"; + "type_v3" = {"type_name" = "optional"; item = "int64"} + }; + ]; + "extended_stats" = [ + { + "column_name" = "id"; + "data_weight" = 44; + "num_unique_vals" = 11; + }; + { + "column_name" = "k"; + "data_weight" = 66; + "num_unique_vals" = 7; + }; + { + "column_name" = "value"; + "data_weight" = 44; + "num_unique_vals" = 6; + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/cbo_4tables_only_sorted_merge.cfg b/yt/yql/tests/sql/suites/join/cbo_4tables_only_sorted_merge.cfg new file mode 100644 index 0000000000..a5101acc8c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/cbo_4tables_only_sorted_merge.cfg @@ -0,0 +1,5 @@ +providers yt +in InputA cbo_4tables_a.txt +in InputB cbo_4tables_b.txt +in InputC cbo_4tables_c.txt +in InputD cbo_4tables_d.txt diff --git a/yt/yql/tests/sql/suites/join/cbo_4tables_only_sorted_merge.sql b/yt/yql/tests/sql/suites/join/cbo_4tables_only_sorted_merge.sql new file mode 100644 index 0000000000..7d5eddb167 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/cbo_4tables_only_sorted_merge.sql @@ -0,0 +1,19 @@ +/* ytfile can not */ +USE plato; +pragma warning("disable", "8001"); -- CBO_MISSING_TABLE_STATS + +pragma CostBasedOptimizer="native"; +pragma yt.MapJoinLimit="1000"; +pragma yt.LookupJoinLimit="1000"; +pragma yt.LookupJoinMaxRows="100"; +pragma yt.ExtendedStatsMaxChunkCount="0"; +pragma yt.JoinMergeTablesLimit="100"; +pragma yt.JoinMergeForce="true"; + +SELECT + InputA.Key1, InputA.Key2, InputA.Value, InputB.val, InputC.v, InputD.value as vald +FROM + InputA + INNER JOIN InputD ON InputA.Key2 = InputD.k + INNER JOIN InputB ON InputA.Fk1 = InputB.k + INNER JOIN InputC ON InputA.Key1 = InputC.k diff --git a/yt/yql/tests/sql/suites/join/commonjoin_unused_keys.cfg b/yt/yql/tests/sql/suites/join/commonjoin_unused_keys.cfg new file mode 100644 index 0000000000..9a930ffe48 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/commonjoin_unused_keys.cfg @@ -0,0 +1,6 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +in Input5 kv5_sorted.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/commonjoin_unused_keys.sql b/yt/yql/tests/sql/suites/join/commonjoin_unused_keys.sql new file mode 100644 index 0000000000..8d4a07952d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/commonjoin_unused_keys.sql @@ -0,0 +1,11 @@ +/* syntax version 1 */ +use plato; + +select + +v3 + +from Input1 as a +join Input2 as b on (a.k1 = b.k2) +join Input3 as c on (a.k1 = c.k3) +order by v3; diff --git a/yt/yql/tests/sql/suites/join/compact_join.cfg b/yt/yql/tests/sql/suites/join/compact_join.cfg new file mode 100644 index 0000000000..936236defd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/compact_join.cfg @@ -0,0 +1,2 @@ +in InputLeft input_left.txt +in InputRight input_right.txt diff --git a/yt/yql/tests/sql/suites/join/compact_join.sql b/yt/yql/tests/sql/suites/join/compact_join.sql new file mode 100644 index 0000000000..505bdb34fc --- /dev/null +++ b/yt/yql/tests/sql/suites/join/compact_join.sql @@ -0,0 +1,11 @@ +USE plato; + +$stream = SELECT a.k AS k, a.sk AS ask, a.v AS av +FROM InputLeft AS a +INNER JOIN /*+ merge() compact() */ InputRight AS b +USING (k, sk, v); + +SELECT k, ask, av +FROM $stream +GROUP /*+ compact() */ BY (k, ask, av) +ORDER BY k, ask, av;
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/convert_key-off.cfg b/yt/yql/tests/sql/suites/join/convert_key-off.cfg new file mode 100644 index 0000000000..9e8955692d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/convert_key-off.cfg @@ -0,0 +1,4 @@ +in Input convert_key.txt +res result.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/convert_key.cfg b/yt/yql/tests/sql/suites/join/convert_key.cfg new file mode 100644 index 0000000000..dd4bfb988d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/convert_key.cfg @@ -0,0 +1,2 @@ +in Input convert_key.txt +res result.txt diff --git a/yt/yql/tests/sql/suites/join/convert_key.sql b/yt/yql/tests/sql/suites/join/convert_key.sql new file mode 100644 index 0000000000..0d5ca60885 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/convert_key.sql @@ -0,0 +1,31 @@ +/* postgres can not */ +USE plato; + +PRAGMA SimpleColumns; +pragma yt.MapJoinLimit="1m"; + +$join_result = +( + SELECT + i1.k1 as i1_k1, + i1.k2 as i1_k2, + i1.value as i1_value, + i2.k1 as i2_k1, + i2.k2 as i2_k2, + i2.value as i2_value + FROM + Input as i1 + LEFT JOIN + ( + SELECT + i2.value as value, + cast(i2.k1 as double) as k1, + cast(i2.k2 as double) as k2 + FROM Input as i2 + ) as i2 + ON + i1.k1 == i2.k1 AND + i1.k2 == i2.k2 +); + +SELECT * FROM $join_result; diff --git a/yt/yql/tests/sql/suites/join/convert_key.txt.attr b/yt/yql/tests/sql/suites/join/convert_key.txt.attr new file mode 100644 index 0000000000..63d2666582 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/convert_key.txt.attr @@ -0,0 +1,7 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["k1";["DataType";"Int64"]]; + ["k2";["DataType";"Int64"]]; + ["value";["DataType";"String"]]] + ]; +}} diff --git a/yt/yql/tests/sql/suites/join/count_bans-off.cfg b/yt/yql/tests/sql/suites/join/count_bans-off.cfg new file mode 100644 index 0000000000..764ce5fc59 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/count_bans-off.cfg @@ -0,0 +1,4 @@ +in spider_info spider_info.txt +udf url_udf +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/count_bans.cfg b/yt/yql/tests/sql/suites/join/count_bans.cfg new file mode 100644 index 0000000000..2e4220b630 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/count_bans.cfg @@ -0,0 +1,2 @@ +in spider_info spider_info.txt +udf url_udf diff --git a/yt/yql/tests/sql/suites/join/count_bans.sql b/yt/yql/tests/sql/suites/join/count_bans.sql new file mode 100644 index 0000000000..499db2c7f7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/count_bans.sql @@ -0,0 +1,45 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +USE plato; + +$records = ( +SELECT + key as ip, + subkey AS recordType, + Url::GetHost(value) AS host +FROM spider_info +); + +$results = ( +SELECT + ip, + host, + count(*) AS request_count +FROM $records +WHERE host IS NOT NULL AND recordType == "RESULT" +GROUP BY ip, host +); + +$bans = ( +SELECT + ip, + host, + count(*) AS fetcher_count +FROM $records +WHERE host IS NOT NULL AND recordType == "BAN_DETECTED" +GROUP BY ip, host +); + +SELECT + results.ip AS ip, + results.host AS host, + results.request_count AS request_count, + bans.fetcher_count AS fetcher_count +FROM + $results AS results + INNER JOIN + $bans AS bans + ON bans.ip == results.ip + AND bans.host == results.host +ORDER BY fetcher_count DESC +; diff --git a/yt/yql/tests/sql/suites/join/default.cfg b/yt/yql/tests/sql/suites/join/default.cfg new file mode 100644 index 0000000000..429c022594 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/default.cfg @@ -0,0 +1,6 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +in Input8 input8.txt diff --git a/yt/yql/tests/sql/suites/join/do_not_suppres_equijoin_input_sorts.cfg b/yt/yql/tests/sql/suites/join/do_not_suppres_equijoin_input_sorts.cfg new file mode 100644 index 0000000000..89a1fdcc94 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/do_not_suppres_equijoin_input_sorts.cfg @@ -0,0 +1,3 @@ +in Input1 sorted_by_kv1_opt.txt +in Input2 sorted_by_kv1_1.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/do_not_suppres_equijoin_input_sorts.sql b/yt/yql/tests/sql/suites/join/do_not_suppres_equijoin_input_sorts.sql new file mode 100644 index 0000000000..314c680b69 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/do_not_suppres_equijoin_input_sorts.sql @@ -0,0 +1,8 @@ +USE plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma DisableSimpleColumns; + +select + * +from Input1 as t1 cross join Input2 as t2 +where t1.k1 == t2.k1 and t1.k1 < "zzz"; diff --git a/yt/yql/tests/sql/suites/join/empty_dynamic.txt.attr b/yt/yql/tests/sql/suites/join/empty_dynamic.txt.attr new file mode 100644 index 0000000000..fad9c383f9 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/empty_dynamic.txt.attr @@ -0,0 +1,22 @@ +{ + "_yql_dynamic"=%true; + "schema"=< + "strict" = %true; + "unique_keys" = %true + >[ + { + "name" = "key"; + "type" = "string"; + "sort_order" = "ascending"; + }; + { + "name" = "subkey"; + "type" = "string"; + "sort_order" = "ascending"; + }; + { + "name" = "value"; + "type" = "string"; + }; + ] +}
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/emptyjoin_unused_keys.cfg b/yt/yql/tests/sql/suites/join/emptyjoin_unused_keys.cfg new file mode 100644 index 0000000000..9a930ffe48 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/emptyjoin_unused_keys.cfg @@ -0,0 +1,6 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +in Input5 kv5_sorted.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/emptyjoin_unused_keys.sql b/yt/yql/tests/sql/suites/join/emptyjoin_unused_keys.sql new file mode 100644 index 0000000000..3e50bfd2df --- /dev/null +++ b/yt/yql/tests/sql/suites/join/emptyjoin_unused_keys.sql @@ -0,0 +1,15 @@ +/* syntax version 1 */ +use plato; + +insert into @Input1 +select '' as k1, '' as v1, '' as u1 limit 0; +commit; + +select + +v3 + +from @Input1 as a +join Input2 as b on (a.k1 = b.k2) +right join Input3 as c on (a.k1 = c.k3) +order by v3; diff --git a/yt/yql/tests/sql/suites/join/equi_join_by_expr-off.cfg b/yt/yql/tests/sql/suites/join/equi_join_by_expr-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_by_expr-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/equi_join_by_expr.cfg b/yt/yql/tests/sql/suites/join/equi_join_by_expr.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_by_expr.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/equi_join_by_expr.sql b/yt/yql/tests/sql/suites/join/equi_join_by_expr.sql new file mode 100644 index 0000000000..d2cad73469 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_by_expr.sql @@ -0,0 +1,3 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +SELECT * FROM plato.Input2 as A JOIN plato.Input3 as B ON CAST(A.key AS INT) + 1 == CAST(B.key AS INT); diff --git a/yt/yql/tests/sql/suites/join/equi_join_three_asterisk-off.cfg b/yt/yql/tests/sql/suites/join/equi_join_three_asterisk-off.cfg new file mode 100644 index 0000000000..3ff2f86249 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_three_asterisk-off.cfg @@ -0,0 +1,5 @@ +in A input1.txt +in B input2.txt +in C input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/equi_join_three_asterisk.cfg b/yt/yql/tests/sql/suites/join/equi_join_three_asterisk.cfg new file mode 100644 index 0000000000..24c926d868 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_three_asterisk.cfg @@ -0,0 +1,3 @@ +in A input1.txt +in B input2.txt +in C input4.txt diff --git a/yt/yql/tests/sql/suites/join/equi_join_three_asterisk.sql b/yt/yql/tests/sql/suites/join/equi_join_three_asterisk.sql new file mode 100644 index 0000000000..9c56228f58 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_three_asterisk.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +SELECT A.*, C.subkey as goal,B.* +FROM plato.A +JOIN plato.B ON A.key == B.key +JOIN plato.C ON B.subkey == C.subkey +ORDER BY A.key; diff --git a/yt/yql/tests/sql/suites/join/equi_join_three_asterisk_eval-off.cfg b/yt/yql/tests/sql/suites/join/equi_join_three_asterisk_eval-off.cfg new file mode 100644 index 0000000000..3ff2f86249 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_three_asterisk_eval-off.cfg @@ -0,0 +1,5 @@ +in A input1.txt +in B input2.txt +in C input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/equi_join_three_asterisk_eval.cfg b/yt/yql/tests/sql/suites/join/equi_join_three_asterisk_eval.cfg new file mode 100644 index 0000000000..24c926d868 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_three_asterisk_eval.cfg @@ -0,0 +1,3 @@ +in A input1.txt +in B input2.txt +in C input4.txt diff --git a/yt/yql/tests/sql/suites/join/equi_join_three_asterisk_eval.sql b/yt/yql/tests/sql/suites/join/equi_join_three_asterisk_eval.sql new file mode 100644 index 0000000000..8ad0ef844c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_three_asterisk_eval.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +SELECT A.*, C.subkey as goal,B.*, A.value || C.value as ac_val_concat +FROM plato.A +JOIN plato.B ON A.key == B.key +JOIN plato.C ON B.subkey == C.subkey +ORDER BY A.key, goal, ac_val_concat; diff --git a/yt/yql/tests/sql/suites/join/equi_join_three_simple-off.cfg b/yt/yql/tests/sql/suites/join/equi_join_three_simple-off.cfg new file mode 100644 index 0000000000..3ff2f86249 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_three_simple-off.cfg @@ -0,0 +1,5 @@ +in A input1.txt +in B input2.txt +in C input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/equi_join_three_simple.cfg b/yt/yql/tests/sql/suites/join/equi_join_three_simple.cfg new file mode 100644 index 0000000000..24c926d868 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_three_simple.cfg @@ -0,0 +1,3 @@ +in A input1.txt +in B input2.txt +in C input4.txt diff --git a/yt/yql/tests/sql/suites/join/equi_join_three_simple.sql b/yt/yql/tests/sql/suites/join/equi_join_three_simple.sql new file mode 100644 index 0000000000..c620849a45 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_three_simple.sql @@ -0,0 +1,3 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +SELECT * FROM plato.A JOIN plato.B ON A.key == B.key JOIN plato.C ON A.subkey == C.subkey; diff --git a/yt/yql/tests/sql/suites/join/equi_join_two_mult_keys-off.cfg b/yt/yql/tests/sql/suites/join/equi_join_two_mult_keys-off.cfg new file mode 100644 index 0000000000..c0badaaad9 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_two_mult_keys-off.cfg @@ -0,0 +1,4 @@ +in A input1.txt +in B input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/equi_join_two_mult_keys.cfg b/yt/yql/tests/sql/suites/join/equi_join_two_mult_keys.cfg new file mode 100644 index 0000000000..661ab46dee --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_two_mult_keys.cfg @@ -0,0 +1,2 @@ +in A input1.txt +in B input4.txt diff --git a/yt/yql/tests/sql/suites/join/equi_join_two_mult_keys.sql b/yt/yql/tests/sql/suites/join/equi_join_two_mult_keys.sql new file mode 100644 index 0000000000..1119ca50ea --- /dev/null +++ b/yt/yql/tests/sql/suites/join/equi_join_two_mult_keys.sql @@ -0,0 +1,3 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +SELECT * FROM plato.A JOIN plato.B ON A.key == B.key AND A.subkey == B.subkey; diff --git a/yt/yql/tests/sql/suites/join/filter_joined-off.cfg b/yt/yql/tests/sql/suites/join/filter_joined-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/filter_joined-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/filter_joined.cfg b/yt/yql/tests/sql/suites/join/filter_joined.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/filter_joined.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/filter_joined.sql b/yt/yql/tests/sql/suites/join/filter_joined.sql new file mode 100644 index 0000000000..2b75c56856 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/filter_joined.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +use plato; +SELECT b.key +FROM Input2 as a +RIGHT JOIN Input3 as b ON a.key == b.key +WHERE a.key IS NULL +ORDER BY b.key; diff --git a/yt/yql/tests/sql/suites/join/flatten_columns1-off.cfg b/yt/yql/tests/sql/suites/join/flatten_columns1-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/flatten_columns1-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/flatten_columns1.cfg b/yt/yql/tests/sql/suites/join/flatten_columns1.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/flatten_columns1.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/flatten_columns1.sql b/yt/yql/tests/sql/suites/join/flatten_columns1.sql new file mode 100644 index 0000000000..ada242dc80 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/flatten_columns1.sql @@ -0,0 +1,14 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +USE plato; + +SELECT * FROM ( +SELECT + AsStruct(key as key, subkey as subkey), + AsStruct("value: " || value as value) +FROM Input1 +) as a +FLATTEN COLUMNS +JOIN Input2 +USING (key) +ORDER BY Input2.key; diff --git a/yt/yql/tests/sql/suites/join/flatten_columns2-off.cfg b/yt/yql/tests/sql/suites/join/flatten_columns2-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/flatten_columns2-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/flatten_columns2.cfg b/yt/yql/tests/sql/suites/join/flatten_columns2.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/flatten_columns2.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/flatten_columns2.sql b/yt/yql/tests/sql/suites/join/flatten_columns2.sql new file mode 100644 index 0000000000..9ae2d879e4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/flatten_columns2.sql @@ -0,0 +1,20 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +USE plato; + +SELECT * FROM ( +SELECT + AsStruct(key as key, subkey as subkey), + AsStruct("value1: " || value as value) +FROM Input1 +) as a +FLATTEN COLUMNS +JOIN ( +SELECT + AsStruct(key as key, subkey as subkey), + AsStruct("value2: " || value as value) +FROM Input2 +) as b +FLATTEN COLUMNS +USING (key) +ORDER BY a.key; diff --git a/yt/yql/tests/sql/suites/join/force_merge_join.sql b/yt/yql/tests/sql/suites/join/force_merge_join.sql new file mode 100644 index 0000000000..80aaedfb0a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/force_merge_join.sql @@ -0,0 +1,9 @@ +USE plato; + +PRAGMA yt.JoinMergeForce = "1"; +pragma yt.JoinMergeTablesLimit="10"; + +SELECT a.key as key1 + FROM (SELECT * FROM plato.Input1 WHERE subkey != "bar") AS a + JOIN (SELECT * FROM plato.Input1 WHERE subkey != "foo") AS b ON a.key = b.key +WHERE a.key != "1" OR b.key != "2"; diff --git a/yt/yql/tests/sql/suites/join/from_in_front_join-off.cfg b/yt/yql/tests/sql/suites/join/from_in_front_join-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/from_in_front_join-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/from_in_front_join.cfg b/yt/yql/tests/sql/suites/join/from_in_front_join.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/from_in_front_join.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/from_in_front_join.sql b/yt/yql/tests/sql/suites/join/from_in_front_join.sql new file mode 100644 index 0000000000..2e1c8489de --- /dev/null +++ b/yt/yql/tests/sql/suites/join/from_in_front_join.sql @@ -0,0 +1,3 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +from plato.Input1 inner join plato.Input3 using (key) select Input1.key, Input1.subkey, Input3.value;
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/full_equal_not_null-off.cfg b/yt/yql/tests/sql/suites/join/full_equal_not_null-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_equal_not_null-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/full_equal_not_null.cfg b/yt/yql/tests/sql/suites/join/full_equal_not_null.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_equal_not_null.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/full_equal_not_null.sql b/yt/yql/tests/sql/suites/join/full_equal_not_null.sql new file mode 100644 index 0000000000..39de950979 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_equal_not_null.sql @@ -0,0 +1,2 @@ +PRAGMA DisableSimpleColumns; +select count(*) from (select cast(subkey as int) as v1, subkey from plato.Input1) as a full join (select cast(subkey as int) as v2, subkey from plato.Input1) as b on a.v1 = b.v2;
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/full_equal_null-off.cfg b/yt/yql/tests/sql/suites/join/full_equal_null-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_equal_null-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/full_equal_null.cfg b/yt/yql/tests/sql/suites/join/full_equal_null.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_equal_null.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/full_equal_null.sql b/yt/yql/tests/sql/suites/join/full_equal_null.sql new file mode 100644 index 0000000000..ed1d8077cd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_equal_null.sql @@ -0,0 +1,2 @@ +PRAGMA DisableSimpleColumns; +select count(*) from (select cast(value as int) as v1, subkey from plato.Input1) as a full join (select cast(value as int) as v2, subkey from plato.Input1) as b on a.v1 = b.v2; diff --git a/yt/yql/tests/sql/suites/join/full_join-off.cfg b/yt/yql/tests/sql/suites/join/full_join-off.cfg new file mode 100644 index 0000000000..483714d007 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_join-off.cfg @@ -0,0 +1,4 @@ +in test_join_1 test_join_1.txt +in test_join_2 test_join_2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/full_join.cfg b/yt/yql/tests/sql/suites/join/full_join.cfg new file mode 100644 index 0000000000..ec3dcd7a74 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_join.cfg @@ -0,0 +1,2 @@ +in test_join_1 test_join_1.txt +in test_join_2 test_join_2.txt diff --git a/yt/yql/tests/sql/suites/join/full_join.sql b/yt/yql/tests/sql/suites/join/full_join.sql new file mode 100644 index 0000000000..4f1e839311 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_join.sql @@ -0,0 +1,19 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +USE plato; +SELECT + a.key AS a_key, + b.key AS b_key, + a.value AS a_value, + b.value AS b_value +FROM + `test_join_1` AS a +FULL JOIN + `test_join_2` AS b +ON + a.key == b.subkey +ORDER BY + b_key, a_key +LIMIT 25 +; + diff --git a/yt/yql/tests/sql/suites/join/full_trivial-off.cfg b/yt/yql/tests/sql/suites/join/full_trivial-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_trivial-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/full_trivial.cfg b/yt/yql/tests/sql/suites/join/full_trivial.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_trivial.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/full_trivial.sql b/yt/yql/tests/sql/suites/join/full_trivial.sql new file mode 100644 index 0000000000..bb6fa176f7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_trivial.sql @@ -0,0 +1,5 @@ +PRAGMA DisableSimpleColumns; +select coalesce(Input1.key, "_null") as a, coalesce(Input1.subkey, "_null") as b, coalesce(Input3.value, "_null") as c +from plato.Input1 +full join plato.Input3 using (key) +order by a, b, c;
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/full_trivial_udf_call-off.cfg b/yt/yql/tests/sql/suites/join/full_trivial_udf_call-off.cfg new file mode 100644 index 0000000000..2c2cb4cb8d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_trivial_udf_call-off.cfg @@ -0,0 +1,7 @@ +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +udf simple_udf +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/full_trivial_udf_call.cfg b/yt/yql/tests/sql/suites/join/full_trivial_udf_call.cfg new file mode 100644 index 0000000000..4d2ebba571 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_trivial_udf_call.cfg @@ -0,0 +1,5 @@ +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +udf simple_udf diff --git a/yt/yql/tests/sql/suites/join/full_trivial_udf_call.sql b/yt/yql/tests/sql/suites/join/full_trivial_udf_call.sql new file mode 100644 index 0000000000..d2acbd2b88 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/full_trivial_udf_call.sql @@ -0,0 +1,6 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +select Input1.key, Input1.subkey, SimpleUdf::Concat(coalesce(Input1.value, ""), coalesce(Input3.value, "")) as value +from plato.Input1 +full join plato.Input3 using (key) +order by Input1.key, Input1.subkey, value;
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/gj_countries1.txt.attr b/yt/yql/tests/sql/suites/join/gj_countries1.txt.attr new file mode 100644 index 0000000000..f9b5e0e010 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/gj_countries1.txt.attr @@ -0,0 +1,18 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "country_id"; + "required" = %true; + "type" = "string" + }; + { + "name" = "country_name"; + "required" = %true; + "type" = "string" + }; + ]; +} diff --git a/yt/yql/tests/sql/suites/join/gj_customers1.txt.attr b/yt/yql/tests/sql/suites/join/gj_customers1.txt.attr new file mode 100644 index 0000000000..34f229c4fa --- /dev/null +++ b/yt/yql/tests/sql/suites/join/gj_customers1.txt.attr @@ -0,0 +1,18 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "customer_id"; + "required" = %true; + "type" = "string" + }; + { + "name" = "country_id"; + "required" = %true; + "type" = "string" + }; + ]; +} diff --git a/yt/yql/tests/sql/suites/join/grace_join1-grace.cfg b/yt/yql/tests/sql/suites/join/grace_join1-grace.cfg new file mode 100644 index 0000000000..11f6f5b18b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/grace_join1-grace.cfg @@ -0,0 +1,4 @@ +in customers1 gj_customers1.txt +in countries1 gj_countries1.txt +providers dq +pragma Dq.HashJoinMode='grace'; diff --git a/yt/yql/tests/sql/suites/join/grace_join1-map.cfg b/yt/yql/tests/sql/suites/join/grace_join1-map.cfg new file mode 100644 index 0000000000..f787c0665b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/grace_join1-map.cfg @@ -0,0 +1,4 @@ +in customers1 gj_customers1.txt +in countries1 gj_countries1.txt +providers dq +pragma Dq.HashJoinMode='map'; diff --git a/yt/yql/tests/sql/suites/join/grace_join1-off.cfg b/yt/yql/tests/sql/suites/join/grace_join1-off.cfg new file mode 100644 index 0000000000..5c48d49545 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/grace_join1-off.cfg @@ -0,0 +1,5 @@ +in customers1 gj_customers1.txt +in countries1 gj_countries1.txt +providers dq +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/grace_join1.cfg b/yt/yql/tests/sql/suites/join/grace_join1.cfg new file mode 100644 index 0000000000..a64c260418 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/grace_join1.cfg @@ -0,0 +1,3 @@ +in customers1 gj_customers1.txt +in countries1 gj_countries1.txt +providers dq diff --git a/yt/yql/tests/sql/suites/join/grace_join1.sql b/yt/yql/tests/sql/suites/join/grace_join1.sql new file mode 100644 index 0000000000..42d4fdf492 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/grace_join1.sql @@ -0,0 +1,11 @@ +USE plato; +pragma DisableSimpleColumns; + +select +cust.customer_id, cntr.country_name +from +plato.countries1 as cntr +join +plato.customers1 as cust +on cntr.country_id = cust.country_id +where cntr.country_id = "11"; diff --git a/yt/yql/tests/sql/suites/join/grace_join2.cfg b/yt/yql/tests/sql/suites/join/grace_join2.cfg new file mode 100644 index 0000000000..7fa7de708f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/grace_join2.cfg @@ -0,0 +1,3 @@ +in customers1 gj_customers1.txt +providers dq +pragma Dq.HashJoinMode='graceandself'; diff --git a/yt/yql/tests/sql/suites/join/grace_join2.sql b/yt/yql/tests/sql/suites/join/grace_join2.sql new file mode 100644 index 0000000000..1b10d992e3 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/grace_join2.sql @@ -0,0 +1,10 @@ +USE plato; +pragma DisableSimpleColumns; + +select +c1.customer_id, c2.customer_id +from +plato.customers1 as c1 +join +plato.customers1 as c2 +on c1.country_id = c2.country_id order by c1.customer_id, c2.customer_id; diff --git a/yt/yql/tests/sql/suites/join/group_compact_by.cfg b/yt/yql/tests/sql/suites/join/group_compact_by.cfg new file mode 100644 index 0000000000..7697efeaa2 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/group_compact_by.cfg @@ -0,0 +1 @@ +in Input input8.txt diff --git a/yt/yql/tests/sql/suites/join/group_compact_by.sql b/yt/yql/tests/sql/suites/join/group_compact_by.sql new file mode 100644 index 0000000000..d5f33612df --- /dev/null +++ b/yt/yql/tests/sql/suites/join/group_compact_by.sql @@ -0,0 +1,14 @@ +USE plato; + +PRAGMA yt.JoinMergeForce = "1"; +pragma yt.JoinMergeTablesLimit="10"; + +SELECT key1, subkey1 +FROM + ( + SELECT a.key as key1, a.subkey as subkey1 + FROM (SELECT * FROM Input WHERE subkey != "bar") AS a + JOIN (SELECT * FROM Input WHERE subkey != "foo") AS b + ON a.key = b.key AND a.subkey = b.subkey + ) +GROUP COMPACT BY key1, subkey1; diff --git a/yt/yql/tests/sql/suites/join/inner_all-off.cfg b/yt/yql/tests/sql/suites/join/inner_all-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_all-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/inner_all.cfg b/yt/yql/tests/sql/suites/join/inner_all.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_all.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/inner_all.sql b/yt/yql/tests/sql/suites/join/inner_all.sql new file mode 100644 index 0000000000..22803ca6b6 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_all.sql @@ -0,0 +1,6 @@ +PRAGMA DisableSimpleColumns; +use plato; +SELECT * +FROM Input2 AS a +JOIN Input3 AS b +ON a.value == b.value; diff --git a/yt/yql/tests/sql/suites/join/inner_all_right-off.cfg b/yt/yql/tests/sql/suites/join/inner_all_right-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_all_right-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/inner_all_right.cfg b/yt/yql/tests/sql/suites/join/inner_all_right.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_all_right.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/inner_all_right.sql b/yt/yql/tests/sql/suites/join/inner_all_right.sql new file mode 100644 index 0000000000..ec84b11ad4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_all_right.sql @@ -0,0 +1,6 @@ +PRAGMA DisableSimpleColumns; +use plato; +SELECT b.* +FROM Input2 AS a +JOIN Input3 AS b +ON a.value == b.value; diff --git a/yt/yql/tests/sql/suites/join/inner_grouped-off.cfg b/yt/yql/tests/sql/suites/join/inner_grouped-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_grouped-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/inner_grouped.cfg b/yt/yql/tests/sql/suites/join/inner_grouped.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_grouped.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/inner_grouped.sql b/yt/yql/tests/sql/suites/join/inner_grouped.sql new file mode 100644 index 0000000000..14d580b119 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_grouped.sql @@ -0,0 +1,2 @@ +PRAGMA DisableSimpleColumns; +select Input1.key as key, max(Input3.value) as value from plato.Input1 inner join plato.Input3 using (key) group by Input1.key order by key; diff --git a/yt/yql/tests/sql/suites/join/inner_grouped_by_expr-off.cfg b/yt/yql/tests/sql/suites/join/inner_grouped_by_expr-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_grouped_by_expr-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/inner_grouped_by_expr.cfg b/yt/yql/tests/sql/suites/join/inner_grouped_by_expr.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_grouped_by_expr.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/inner_grouped_by_expr.sql b/yt/yql/tests/sql/suites/join/inner_grouped_by_expr.sql new file mode 100644 index 0000000000..97f05fef2d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_grouped_by_expr.sql @@ -0,0 +1,3 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +select keyz, max(Input3.value) as value from plato.Input1 inner join plato.Input3 using (key) group by Input1.key as keyz order by keyz; diff --git a/yt/yql/tests/sql/suites/join/inner_on_key_only-off.cfg b/yt/yql/tests/sql/suites/join/inner_on_key_only-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_on_key_only-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/inner_on_key_only.cfg b/yt/yql/tests/sql/suites/join/inner_on_key_only.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_on_key_only.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/inner_on_key_only.sql b/yt/yql/tests/sql/suites/join/inner_on_key_only.sql new file mode 100644 index 0000000000..e2d7e57d63 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_on_key_only.sql @@ -0,0 +1,2 @@ +PRAGMA DisableSimpleColumns; +select Input1.key, Input1.subkey, Input3.value from plato.Input1 inner join plato.Input3 on Input1.key = Input3.key;
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/inner_table_and_view.cfg b/yt/yql/tests/sql/suites/join/inner_table_and_view.cfg new file mode 100644 index 0000000000..8b7633b301 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_table_and_view.cfg @@ -0,0 +1 @@ +in Input view_input.txt diff --git a/yt/yql/tests/sql/suites/join/inner_trivial-off.cfg b/yt/yql/tests/sql/suites/join/inner_trivial-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_trivial-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/inner_trivial.cfg b/yt/yql/tests/sql/suites/join/inner_trivial.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_trivial.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/inner_trivial.sql b/yt/yql/tests/sql/suites/join/inner_trivial.sql new file mode 100644 index 0000000000..19db34045c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_trivial.sql @@ -0,0 +1,2 @@ +PRAGMA DisableSimpleColumns; +select Input1.key, Input1.subkey, Input3.value from plato.Input1 inner join plato.Input3 using (key);
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/inner_trivial_from_concat-off.cfg b/yt/yql/tests/sql/suites/join/inner_trivial_from_concat-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_trivial_from_concat-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/inner_trivial_from_concat.cfg b/yt/yql/tests/sql/suites/join/inner_trivial_from_concat.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_trivial_from_concat.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/inner_trivial_from_concat.sql b/yt/yql/tests/sql/suites/join/inner_trivial_from_concat.sql new file mode 100644 index 0000000000..aa317b9784 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_trivial_from_concat.sql @@ -0,0 +1,3 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +select A.key, A.subkey, B.value from plato.concat(Input1, Input2) as A inner join plato.Input3 as B using (key);
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/inner_with_order-off.cfg b/yt/yql/tests/sql/suites/join/inner_with_order-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_with_order-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/inner_with_order.cfg b/yt/yql/tests/sql/suites/join/inner_with_order.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_with_order.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/inner_with_order.sql b/yt/yql/tests/sql/suites/join/inner_with_order.sql new file mode 100644 index 0000000000..471fb485ec --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_with_order.sql @@ -0,0 +1,2 @@ +PRAGMA DisableSimpleColumns; +select Input1.key as key, Input1.subkey, Input3.value from plato.Input1 inner join plato.Input3 using (key) order by key desc;
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/inner_with_select-off.cfg b/yt/yql/tests/sql/suites/join/inner_with_select-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_with_select-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/inner_with_select.cfg b/yt/yql/tests/sql/suites/join/inner_with_select.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_with_select.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/inner_with_select.sql b/yt/yql/tests/sql/suites/join/inner_with_select.sql new file mode 100644 index 0000000000..b1e0c35edd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/inner_with_select.sql @@ -0,0 +1,9 @@ +PRAGMA DisableSimpleColumns; +select + Input1.key as key, + Input1.subkey as subkey, + selected.value as value +from plato.Input1 +inner join (select key, value || value as value from plato.Input3) as selected + using (key) +order by key desc;
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/input6.txt.attr b/yt/yql/tests/sql/suites/join/input6.txt.attr new file mode 100644 index 0000000000..ad1624a955 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/input6.txt.attr @@ -0,0 +1,9 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["key1";["DataType";"Utf8"]]; + ["subkey1";["DataType";"Utf8"]]; + ["key";["DataType";"Utf8"]]; + ["subkey";["DataType";"Utf8"]]; + ["value";["DataType";"Utf8"]]] + ]; +}} diff --git a/yt/yql/tests/sql/suites/join/input8.txt.attr b/yt/yql/tests/sql/suites/join/input8.txt.attr new file mode 100644 index 0000000000..7ec3f318dc --- /dev/null +++ b/yt/yql/tests/sql/suites/join/input8.txt.attr @@ -0,0 +1,13 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"String"]]; + ["subkey";["DataType";"String"]]; + ["value";["DataType";"String"]]] + ]; + "SortDirections"=[1;1]; + "SortedBy"=["key";"subkey"]; + "SortedByTypes"=[["DataType";"String"];["DataType";"String"]]; + "SortMembers"=["key";"subkey"]; + } +}
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/input9.txt.attr b/yt/yql/tests/sql/suites/join/input9.txt.attr new file mode 100644 index 0000000000..ed13e20223 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/input9.txt.attr @@ -0,0 +1,11 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"String"]]; + ["subkey";["DataType";"String"]]; + ["value";["DataType";"String"]] + ]]; + "SortDirections"=[1;1;]; + "SortedBy"=["key";"subkey";]; + "SortedByTypes"=[["DataType";"String";];["DataType";"String";];]; + "SortMembers"=["key";"subkey";]; +}} diff --git a/yt/yql/tests/sql/suites/join/input_left.txt.attr b/yt/yql/tests/sql/suites/join/input_left.txt.attr new file mode 100644 index 0000000000..58ca2c84ba --- /dev/null +++ b/yt/yql/tests/sql/suites/join/input_left.txt.attr @@ -0,0 +1,7 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["k";["DataType";"Uint64"]]; + ["sk";["DataType";"Utf8"]]; + ["v";["DataType";"Utf8"]]; + ]]; +}} diff --git a/yt/yql/tests/sql/suites/join/input_right.txt.attr b/yt/yql/tests/sql/suites/join/input_right.txt.attr new file mode 100644 index 0000000000..58ca2c84ba --- /dev/null +++ b/yt/yql/tests/sql/suites/join/input_right.txt.attr @@ -0,0 +1,7 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["k";["DataType";"Uint64"]]; + ["sk";["DataType";"Utf8"]]; + ["v";["DataType";"Utf8"]]; + ]]; +}} diff --git a/yt/yql/tests/sql/suites/join/join_and_distinct_key-off.cfg b/yt/yql/tests/sql/suites/join/join_and_distinct_key-off.cfg new file mode 100644 index 0000000000..76a2a2b6a4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_and_distinct_key-off.cfg @@ -0,0 +1,3 @@ +in Input input_intersect.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/join_and_distinct_key.cfg b/yt/yql/tests/sql/suites/join/join_and_distinct_key.cfg new file mode 100644 index 0000000000..3df7813790 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_and_distinct_key.cfg @@ -0,0 +1 @@ +in Input input_intersect.txt diff --git a/yt/yql/tests/sql/suites/join/join_and_distinct_key.sql b/yt/yql/tests/sql/suites/join/join_and_distinct_key.sql new file mode 100644 index 0000000000..08037b8f7d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_and_distinct_key.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +SELECT + count(i1.key) as count, + count(distinct i1.key) as uniq_count +FROM plato.Input as i1 JOIN plato.Input AS i2 on cast(i1.key as uint32) / 100 == cast(i2.subkey as uint32) / 100 +; diff --git a/yt/yql/tests/sql/suites/join/join_cbo_3_tables.cfg b/yt/yql/tests/sql/suites/join/join_cbo_3_tables.cfg new file mode 100644 index 0000000000..6978b80cd9 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_cbo_3_tables.cfg @@ -0,0 +1,4 @@ +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/join_cbo_3_tables.sql b/yt/yql/tests/sql/suites/join/join_cbo_3_tables.sql new file mode 100644 index 0000000000..b848360746 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_cbo_3_tables.sql @@ -0,0 +1,11 @@ +use plato; +pragma warning("disable", "8001"); -- CBO_MISSING_TABLE_STATS + +pragma CostBasedOptimizer="pg"; + +select i1.value, i2.value, i3.value, i4.value +from Input1 as i1 +join Input2 as i2 on i1.key=i2.key +join Input3 as i3 on i1.key=i3.key +join Input4 as i4 on i1.key=i4.key +order by i1.value, i2.value, i3.value, i4.value; diff --git a/yt/yql/tests/sql/suites/join/join_comp_common_table-off.cfg b/yt/yql/tests/sql/suites/join/join_comp_common_table-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_comp_common_table-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/join_comp_common_table.cfg b/yt/yql/tests/sql/suites/join/join_comp_common_table.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_comp_common_table.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/join_comp_common_table.sql b/yt/yql/tests/sql/suites/join/join_comp_common_table.sql new file mode 100644 index 0000000000..770d18ecd5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_comp_common_table.sql @@ -0,0 +1,15 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +use plato; + +$i = (select AsList(key) as x from Input); +$j = (select Just(AsList(key)) as y from Input); +select a.x as zzz,b.y as fff from $i as a inner join $j as b on a.x = b.y order by zzz,fff; +select a.x as zzz,b.y as fff from $i as a right join $j as b on a.x = b.y order by zzz,fff; +select a.x as zzz,b.y as fff from $i as a left join $j as b on a.x = b.y order by zzz,fff; +select a.x as zzz from $i as a left semi join $j as b on a.x = b.y order by zzz; +select a.x as zzz from $i as a left only join $j as b on a.x = b.y order by zzz; +select b.y as fff from $i as a right semi join $j as b on a.x = b.y order by fff; +select b.y as fff from $i as a right only join $j as b on a.x = b.y order by fff; +select a.x as zzz,b.y as fff from $i as a full join $j as b on a.x = b.y order by zzz,fff; +select a.x as zzz,b.y as fff from $i as a exclusion join $j as b on a.x = b.y order by zzz,fff; diff --git a/yt/yql/tests/sql/suites/join/join_comp_map_table-off.cfg b/yt/yql/tests/sql/suites/join/join_comp_map_table-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_comp_map_table-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/join_comp_map_table.cfg b/yt/yql/tests/sql/suites/join/join_comp_map_table.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_comp_map_table.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/join_comp_map_table.sql b/yt/yql/tests/sql/suites/join/join_comp_map_table.sql new file mode 100644 index 0000000000..4f64d5e685 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_comp_map_table.sql @@ -0,0 +1,14 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +pragma yt.MapJoinLimit="1m"; +use plato; + +$i = (select AsList(key) as x from Input); +$j = (select Just(AsList(key)) as y from Input); +select a.x as zzz,b.y as fff from $i as a inner join $j as b on a.x = b.y; +select a.x as zzz,b.y as fff from $i as a right join $j as b on a.x = b.y; +select a.x as zzz,b.y as fff from $i as a left join $j as b on a.x = b.y; +select a.x as zzz from $i as a left semi join $j as b on a.x = b.y; +select a.x as zzz from $i as a left only join $j as b on a.x = b.y; +select b.y as fff from $i as a right semi join $j as b on a.x = b.y; +select b.y as fff from $i as a right only join $j as b on a.x = b.y; diff --git a/yt/yql/tests/sql/suites/join/join_key_cmp_udf-off.cfg b/yt/yql/tests/sql/suites/join/join_key_cmp_udf-off.cfg new file mode 100644 index 0000000000..3892ddff67 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_key_cmp_udf-off.cfg @@ -0,0 +1,4 @@ +in Input input.txt +udf string_udf +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/join_key_cmp_udf.cfg b/yt/yql/tests/sql/suites/join/join_key_cmp_udf.cfg new file mode 100644 index 0000000000..c6596e362c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_key_cmp_udf.cfg @@ -0,0 +1,2 @@ +in Input input.txt +udf string_udf diff --git a/yt/yql/tests/sql/suites/join/join_key_cmp_udf.sql b/yt/yql/tests/sql/suites/join/join_key_cmp_udf.sql new file mode 100644 index 0000000000..70a160e96d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_key_cmp_udf.sql @@ -0,0 +1,11 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +USE plato; + +--INSERT INTO Output +SELECT + ib.* +FROM Input as ia +JOIN Input as ib +ON Unicode::ToUpper(CAST(ia.key AS Utf8)) == ib.subkey +ORDER BY ib.key, ib.subkey diff --git a/yt/yql/tests/sql/suites/join/join_left_cbo.cfg b/yt/yql/tests/sql/suites/join/join_left_cbo.cfg new file mode 100644 index 0000000000..559fde513f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_left_cbo.cfg @@ -0,0 +1,2 @@ +in Input1 input1.txt +in Input2 input2.txt diff --git a/yt/yql/tests/sql/suites/join/join_left_cbo.sql b/yt/yql/tests/sql/suites/join/join_left_cbo.sql new file mode 100644 index 0000000000..d3f698da2c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_left_cbo.sql @@ -0,0 +1,9 @@ +use plato; +pragma warning("disable", "8001"); -- CBO_MISSING_TABLE_STATS + +pragma CostBasedOptimizer="PG"; + +select i1.value, i2.value +from Input1 as i1 +left join Input2 as i2 on i1.key=i2.key +order by i1.value, i2.value; diff --git a/yt/yql/tests/sql/suites/join/join_no_correlation_in_order_by-off.cfg b/yt/yql/tests/sql/suites/join/join_no_correlation_in_order_by-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_no_correlation_in_order_by-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/join_no_correlation_in_order_by.cfg b/yt/yql/tests/sql/suites/join/join_no_correlation_in_order_by.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_no_correlation_in_order_by.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/join_no_correlation_in_order_by.sql b/yt/yql/tests/sql/suites/join/join_no_correlation_in_order_by.sql new file mode 100644 index 0000000000..1f3f1f4d95 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_no_correlation_in_order_by.sql @@ -0,0 +1,12 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +USE plato; + +$data = (SELECT key as kk, subkey as sk, value as val FROM Input WHERE cast(key as uint32)/100 > 3); + +--INSERT INTO Output +SELECT + * +FROM Input JOIN $data as d ON Input.subkey = d.kk +ORDER BY key, val +; diff --git a/yt/yql/tests/sql/suites/join/join_right_cbo.cfg b/yt/yql/tests/sql/suites/join/join_right_cbo.cfg new file mode 100644 index 0000000000..559fde513f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_right_cbo.cfg @@ -0,0 +1,2 @@ +in Input1 input1.txt +in Input2 input2.txt diff --git a/yt/yql/tests/sql/suites/join/join_right_cbo.sql b/yt/yql/tests/sql/suites/join/join_right_cbo.sql new file mode 100644 index 0000000000..99ed74da72 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_right_cbo.sql @@ -0,0 +1,9 @@ +use plato; +pragma warning("disable", "8001"); -- CBO_MISSING_TABLE_STATS + +pragma CostBasedOptimizer="PG"; + +select i1.value, i2.value +from Input1 as i1 +right join Input2 as i2 on i1.key=i2.key +order by i1.value, i2.value; diff --git a/yt/yql/tests/sql/suites/join/join_semi_correlation_in_order_by-off.cfg b/yt/yql/tests/sql/suites/join/join_semi_correlation_in_order_by-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_semi_correlation_in_order_by-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/join_semi_correlation_in_order_by.cfg b/yt/yql/tests/sql/suites/join/join_semi_correlation_in_order_by.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_semi_correlation_in_order_by.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/join_semi_correlation_in_order_by.sql b/yt/yql/tests/sql/suites/join/join_semi_correlation_in_order_by.sql new file mode 100644 index 0000000000..4065705a77 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_semi_correlation_in_order_by.sql @@ -0,0 +1,12 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +USE plato; + +$data = (SELECT key as kk, subkey as sk, value as val FROM Input WHERE cast(key as uint32)/100 > 3); + +--INSERT INTO Output +SELECT + * +FROM Input JOIN $data as d ON Input.subkey = d.kk +ORDER BY key, d.val +; diff --git a/yt/yql/tests/sql/suites/join/join_table_conflict_fail.cfg b/yt/yql/tests/sql/suites/join/join_table_conflict_fail.cfg new file mode 100644 index 0000000000..9217c920f8 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_table_conflict_fail.cfg @@ -0,0 +1,2 @@ +xfail +in Input input.txt
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/join_table_conflict_fail.sql b/yt/yql/tests/sql/suites/join/join_table_conflict_fail.sql new file mode 100644 index 0000000000..45fb1781a5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_table_conflict_fail.sql @@ -0,0 +1,11 @@ +/* custom error:column name: value conflicted without correlation name it may be one of: Input.value, d.value*/ +PRAGMA DisableSimpleColumns; +USE plato; + +$data = (SELECT key as kk, subkey as sk, value || value as value FROM Input WHERE cast(key as uint32)/100 > 3); + +--INSERT INTO Output +SELECT + value, key -- value is conflicted between Input and d sources +FROM Input JOIN $data as d ON Input.subkey = d.kk +; diff --git a/yt/yql/tests/sql/suites/join/join_with_dot_without_alias.cfg b/yt/yql/tests/sql/suites/join/join_with_dot_without_alias.cfg new file mode 100644 index 0000000000..702bbb5a52 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_with_dot_without_alias.cfg @@ -0,0 +1,2 @@ +in Input input.txt +in Input.with.dot input_tutorial_users.txt diff --git a/yt/yql/tests/sql/suites/join/join_with_duplicate_keys_on_sorted-off.cfg b/yt/yql/tests/sql/suites/join/join_with_duplicate_keys_on_sorted-off.cfg new file mode 100644 index 0000000000..49af2b95f4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_with_duplicate_keys_on_sorted-off.cfg @@ -0,0 +1,4 @@ +in SortedByKey sorted_by_key1.txt +in SortedByKeySubkey sorted_by_key_subkey.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/join_with_duplicate_keys_on_sorted.cfg b/yt/yql/tests/sql/suites/join/join_with_duplicate_keys_on_sorted.cfg new file mode 100644 index 0000000000..464068db6a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_with_duplicate_keys_on_sorted.cfg @@ -0,0 +1,2 @@ +in SortedByKey sorted_by_key1.txt +in SortedByKeySubkey sorted_by_key_subkey.txt diff --git a/yt/yql/tests/sql/suites/join/join_with_duplicate_keys_on_sorted.sql b/yt/yql/tests/sql/suites/join/join_with_duplicate_keys_on_sorted.sql new file mode 100644 index 0000000000..9b350d29a8 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_with_duplicate_keys_on_sorted.sql @@ -0,0 +1,8 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="3.0"; + + +FROM SortedByKeySubkey AS a JOIN SortedByKey AS b ON a.key=b.key AND a.subkey=b.key +SELECT * ORDER BY a.value, b.value; diff --git a/yt/yql/tests/sql/suites/join/join_without_column-off.cfg b/yt/yql/tests/sql/suites/join/join_without_column-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_without_column-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/join_without_column.cfg b/yt/yql/tests/sql/suites/join/join_without_column.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_without_column.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/join_without_column.sql b/yt/yql/tests/sql/suites/join/join_without_column.sql new file mode 100644 index 0000000000..4c9c4bd612 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_without_column.sql @@ -0,0 +1,14 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +USE plato; + +$data = (SELECT key as kk, subkey as sk, value FROM Input WHERE cast(key as uint32)/100 < 5); + +--INSERT INTO Output +SELECT + * +WITHOUT + d.value +FROM Input JOIN $data as d ON Input.subkey = cast(cast(d.kk as uint32)/100 as string) +ORDER BY key +; diff --git a/yt/yql/tests/sql/suites/join/join_without_correlation_and_dict_access-off.cfg b/yt/yql/tests/sql/suites/join/join_without_correlation_and_dict_access-off.cfg new file mode 100644 index 0000000000..76a2a2b6a4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_without_correlation_and_dict_access-off.cfg @@ -0,0 +1,3 @@ +in Input input_intersect.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/join_without_correlation_and_dict_access.cfg b/yt/yql/tests/sql/suites/join/join_without_correlation_and_dict_access.cfg new file mode 100644 index 0000000000..3df7813790 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_without_correlation_and_dict_access.cfg @@ -0,0 +1 @@ +in Input input_intersect.txt diff --git a/yt/yql/tests/sql/suites/join/join_without_correlation_and_dict_access.sql b/yt/yql/tests/sql/suites/join/join_without_correlation_and_dict_access.sql new file mode 100644 index 0000000000..280a971538 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_without_correlation_and_dict_access.sql @@ -0,0 +1,22 @@ +/* syntax version 1 */ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +use plato; + +$data_dict = (select + mod, + YQL::ToIndexDict(ListSort(aggregate_list(key))) as dk, + ListSort(aggregate_list(subkey)) as ls, + ListSort(aggregate_list(value)) as lv +from Input +group by cast(key as uint32) % 10 as mod); + +--INSERT INTO Output +SELECT +--DISTINCT + dk[2], + key, + value +FROM Input JOIN $data_dict AS d on cast(Input.key as uint32) / 100 == d.mod +order by key, value +; diff --git a/yt/yql/tests/sql/suites/join/join_without_correlation_and_struct_access-off.cfg b/yt/yql/tests/sql/suites/join/join_without_correlation_and_struct_access-off.cfg new file mode 100644 index 0000000000..76a2a2b6a4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_without_correlation_and_struct_access-off.cfg @@ -0,0 +1,3 @@ +in Input input_intersect.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/join_without_correlation_and_struct_access.cfg b/yt/yql/tests/sql/suites/join/join_without_correlation_and_struct_access.cfg new file mode 100644 index 0000000000..3df7813790 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_without_correlation_and_struct_access.cfg @@ -0,0 +1 @@ +in Input input_intersect.txt diff --git a/yt/yql/tests/sql/suites/join/join_without_correlation_and_struct_access.sql b/yt/yql/tests/sql/suites/join/join_without_correlation_and_struct_access.sql new file mode 100644 index 0000000000..d1934f0bfc --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_without_correlation_and_struct_access.sql @@ -0,0 +1,18 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +use plato; + +$data = ( select + cast(key as uint32) % 10 as mod, + (key as kk, subkey as sk) as struct_field +from Input); + +--INSERT INTO Output +SELECT + mod, + struct_field.kk as mod_key, + key, + value +FROM Input JOIN $data AS d on cast(Input.key as uint32) / 100 == d.mod +order by key, mod_key, value +; diff --git a/yt/yql/tests/sql/suites/join/join_without_correlation_names-off.cfg b/yt/yql/tests/sql/suites/join/join_without_correlation_names-off.cfg new file mode 100644 index 0000000000..76a2a2b6a4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_without_correlation_names-off.cfg @@ -0,0 +1,3 @@ +in Input input_intersect.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/join_without_correlation_names.cfg b/yt/yql/tests/sql/suites/join/join_without_correlation_names.cfg new file mode 100644 index 0000000000..3df7813790 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_without_correlation_names.cfg @@ -0,0 +1 @@ +in Input input_intersect.txt diff --git a/yt/yql/tests/sql/suites/join/join_without_correlation_names.sql b/yt/yql/tests/sql/suites/join/join_without_correlation_names.sql new file mode 100644 index 0000000000..98922c13e0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/join_without_correlation_names.sql @@ -0,0 +1,11 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +USE plato; + +$data = (SELECT key as kk, subkey as sk, value as val FROM Input WHERE cast(key as uint32)/100 > 3); + +--INSERT INTO Output +SELECT + value, val, key, sk +FROM Input JOIN $data as d ON Input.subkey = d.kk +ORDER BY value, val; diff --git a/yt/yql/tests/sql/suites/join/kv1_sorted.txt.attr b/yt/yql/tests/sql/suites/join/kv1_sorted.txt.attr new file mode 100644 index 0000000000..0b9487ba64 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/kv1_sorted.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k1"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v1"; + "required" = %false; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u1"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/kv1_sorted1.txt.attr b/yt/yql/tests/sql/suites/join/kv1_sorted1.txt.attr new file mode 100644 index 0000000000..0b9487ba64 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/kv1_sorted1.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k1"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v1"; + "required" = %false; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u1"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/kv2_sorted.txt.attr b/yt/yql/tests/sql/suites/join/kv2_sorted.txt.attr new file mode 100644 index 0000000000..387ceb1b55 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/kv2_sorted.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k2"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v2"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u2"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/kv2_sorted1.txt.attr b/yt/yql/tests/sql/suites/join/kv2_sorted1.txt.attr new file mode 100644 index 0000000000..387ceb1b55 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/kv2_sorted1.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k2"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v2"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u2"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/kv3_sorted.txt.attr b/yt/yql/tests/sql/suites/join/kv3_sorted.txt.attr new file mode 100644 index 0000000000..90e6a79548 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/kv3_sorted.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k3"; + "required" = %false; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v3"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u3"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/kv4_sorted.txt.attr b/yt/yql/tests/sql/suites/join/kv4_sorted.txt.attr new file mode 100644 index 0000000000..ea731dd20b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/kv4_sorted.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %true + > + [ + { + "name" = "k4"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v4"; + "required" = %false; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u4"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/kv5_sorted.txt.attr b/yt/yql/tests/sql/suites/join/kv5_sorted.txt.attr new file mode 100644 index 0000000000..05a419bcca --- /dev/null +++ b/yt/yql/tests/sql/suites/join/kv5_sorted.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k5"; + "required" = %false; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v5"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u5"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/late_mergejoin_on_empty.cfg b/yt/yql/tests/sql/suites/join/late_mergejoin_on_empty.cfg new file mode 100644 index 0000000000..04719e2ed1 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/late_mergejoin_on_empty.cfg @@ -0,0 +1,2 @@ +in Input input1.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/late_mergejoin_on_empty.sql b/yt/yql/tests/sql/suites/join/late_mergejoin_on_empty.sql new file mode 100644 index 0000000000..b0dd13c10d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/late_mergejoin_on_empty.sql @@ -0,0 +1,8 @@ +use plato; +PRAGMA DisableSimpleColumns; +pragma yt.JoinMergeTablesLimit="100"; + +select * from +(select * from Input where key < "020") as a +left only join (select subkey from Input where key < "010") as b on a.subkey = b.subkey +join /*+ merge() */ (select key, value from Input) as c on a.key = c.key diff --git a/yt/yql/tests/sql/suites/join/leaf.txt.attr b/yt/yql/tests/sql/suites/join/leaf.txt.attr new file mode 100644 index 0000000000..0a764a6b82 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/leaf.txt.attr @@ -0,0 +1,6 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"Uint64"]]; + ["value";["OptionalType";["DataType";"String"]]]] + ]; +}} diff --git a/yt/yql/tests/sql/suites/join/left_all-off.cfg b/yt/yql/tests/sql/suites/join/left_all-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_all-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/left_all.cfg b/yt/yql/tests/sql/suites/join/left_all.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_all.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/left_all.sql b/yt/yql/tests/sql/suites/join/left_all.sql new file mode 100644 index 0000000000..b980bc85d2 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_all.sql @@ -0,0 +1,6 @@ +PRAGMA DisableSimpleColumns; +use plato; +SELECT * +FROM Input2 AS a +LEFT JOIN Input3 AS b +ON a.value == b.value; diff --git a/yt/yql/tests/sql/suites/join/left_cast_to_string-off.cfg b/yt/yql/tests/sql/suites/join/left_cast_to_string-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_cast_to_string-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/left_cast_to_string.cfg b/yt/yql/tests/sql/suites/join/left_cast_to_string.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_cast_to_string.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/left_cast_to_string.sql b/yt/yql/tests/sql/suites/join/left_cast_to_string.sql new file mode 100644 index 0000000000..5d41a78255 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_cast_to_string.sql @@ -0,0 +1,2 @@ +PRAGMA DisableSimpleColumns; +select Input1.key as key, Input1.subkey, Cast(Input3.value as varchar) as value from plato.Input1 left join plato.Input3 using (key) order by key;
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/left_join_input1.txt.attr b/yt/yql/tests/sql/suites/join/left_join_input1.txt.attr new file mode 100644 index 0000000000..4f113053bc --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_input1.txt.attr @@ -0,0 +1,10 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["Key1";["OptionalType";["DataType";"Int32"]]]; + ["Key2";["OptionalType";["DataType";"String"]]]; + ["Fk1";["OptionalType";["DataType";"String"]]]; + ["Value";["OptionalType";["DataType";"String"]]]] + ]; + }; +} diff --git a/yt/yql/tests/sql/suites/join/left_join_input2.txt.attr b/yt/yql/tests/sql/suites/join/left_join_input2.txt.attr new file mode 100644 index 0000000000..be5e16e2ca --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_input2.txt.attr @@ -0,0 +1,8 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["Key";["DataType";"String"]]; + ["Value";["OptionalType";["DataType";"Int32"]]]] + ]; + } +} diff --git a/yt/yql/tests/sql/suites/join/left_join_input3.txt.attr b/yt/yql/tests/sql/suites/join/left_join_input3.txt.attr new file mode 100644 index 0000000000..be5e16e2ca --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_input3.txt.attr @@ -0,0 +1,8 @@ +{ + "_yql_row_spec"={ + "Type"=["StructType";[ + ["Key";["DataType";"String"]]; + ["Value";["OptionalType";["DataType";"Int32"]]]] + ]; + } +} diff --git a/yt/yql/tests/sql/suites/join/left_join_null_column-off.cfg b/yt/yql/tests/sql/suites/join/left_join_null_column-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_null_column-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/left_join_null_column.cfg b/yt/yql/tests/sql/suites/join/left_join_null_column.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_null_column.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/left_join_null_column.sql b/yt/yql/tests/sql/suites/join/left_join_null_column.sql new file mode 100644 index 0000000000..c7e38d6e0c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_null_column.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +/* postgres can not */ + +USE plato; + +$t = [<|"x":"150", "y":1, "z":Null|>, <|"x":"150", "y":2, "z":Null|>]; + +SELECT * FROM Input1 AS a LEFT JOIN AS_TABLE($t) AS b ON a.key = b.x ORDER BY key, y; + diff --git a/yt/yql/tests/sql/suites/join/left_join_right_pushdown_nested_left.cfg b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_nested_left.cfg new file mode 100644 index 0000000000..a0d2d24b7f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_nested_left.cfg @@ -0,0 +1,3 @@ +in Input1 left_join_input1.txt +in Input2 left_join_input2.txt +in Input3 left_join_input3.txt diff --git a/yt/yql/tests/sql/suites/join/left_join_right_pushdown_nested_left.sql b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_nested_left.sql new file mode 100644 index 0000000000..da815ce13b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_nested_left.sql @@ -0,0 +1,11 @@ +PRAGMA FilterPushdownOverJoinOptionalSide; + +SELECT t1.Key1, t1.Key2, t1.Fk1, t1.Value, t2.Key, t2.Value, t3.Value + +FROM plato.Input1 AS t1 +LEFT JOIN plato.Input2 AS t2 +ON t1.Fk1 = t2.Key +INNER JOIN plato.Input3 as t3 +ON t1.Fk1 = t3.Key + +WHERE t2.Value > 1001; diff --git a/yt/yql/tests/sql/suites/join/left_join_right_pushdown_nested_right.cfg b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_nested_right.cfg new file mode 100644 index 0000000000..a0d2d24b7f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_nested_right.cfg @@ -0,0 +1,3 @@ +in Input1 left_join_input1.txt +in Input2 left_join_input2.txt +in Input3 left_join_input3.txt diff --git a/yt/yql/tests/sql/suites/join/left_join_right_pushdown_nested_right.sql b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_nested_right.sql new file mode 100644 index 0000000000..fe7fdeea48 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_nested_right.sql @@ -0,0 +1,10 @@ +PRAGMA FilterPushdownOverJoinOptionalSide; + +SELECT t1.Key1, t1.Key2, t1.Fk1, t1.Value, t2.Key, t2.Value, t3.Value + +FROM plato.Input1 AS t1 +CROSS JOIN plato.Input3 AS t3 +LEFT JOIN plato.Input2 AS t2 +ON t1.Fk1 = t2.Key + +WHERE t2.Value > 1001; diff --git a/yt/yql/tests/sql/suites/join/left_join_right_pushdown_no_opt.cfg b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_no_opt.cfg new file mode 100644 index 0000000000..a0d2d24b7f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_no_opt.cfg @@ -0,0 +1,3 @@ +in Input1 left_join_input1.txt +in Input2 left_join_input2.txt +in Input3 left_join_input3.txt diff --git a/yt/yql/tests/sql/suites/join/left_join_right_pushdown_no_opt.sql b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_no_opt.sql new file mode 100644 index 0000000000..de596ae77b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_no_opt.sql @@ -0,0 +1,7 @@ +PRAGMA FilterPushdownOverJoinOptionalSide; + +SELECT t1.Key1, t1.Key2, t1.Fk1, t1.Value, t2.Key, t2.Value FROM plato.Input2 AS t2 +RIGHT JOIN plato.Input1 AS t1 +ON t2.Key = t1.Fk1 +WHERE t1.Key1 > 104 +ORDER BY t1.Key1, t1.Key2; diff --git a/yt/yql/tests/sql/suites/join/left_join_right_pushdown_null.cfg b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_null.cfg new file mode 100644 index 0000000000..a0d2d24b7f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_null.cfg @@ -0,0 +1,3 @@ +in Input1 left_join_input1.txt +in Input2 left_join_input2.txt +in Input3 left_join_input3.txt diff --git a/yt/yql/tests/sql/suites/join/left_join_right_pushdown_null.sql b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_null.sql new file mode 100644 index 0000000000..ec45c754b4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_null.sql @@ -0,0 +1,7 @@ +PRAGMA FilterPushdownOverJoinOptionalSide; + +SELECT t1.Key1, t1.Key2, t1.Fk1, t1.Value, t2.Key, t2.Value FROM plato.Input1 AS t1 +LEFT JOIN plato.Input2 AS t2 +ON t1.Fk1 = t2.Key +WHERE t2.Value IS NULL +ORDER BY t1.Key1, t1.Key2; diff --git a/yt/yql/tests/sql/suites/join/left_join_right_pushdown_simple.cfg b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_simple.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_simple.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/left_join_right_pushdown_simple.sql b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_simple.sql new file mode 100644 index 0000000000..e1c15a8d52 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_join_right_pushdown_simple.sql @@ -0,0 +1,9 @@ +PRAGMA DisableSimpleColumns; +PRAGMA FilterPushdownOverJoinOptionalSide; + +use plato; +SELECT * +FROM Input2 AS a +LEFT JOIN Input3 AS b +ON a.value == b.value +WHERE b.value >= "ddd"; diff --git a/yt/yql/tests/sql/suites/join/left_null_literal-off.cfg b/yt/yql/tests/sql/suites/join/left_null_literal-off.cfg new file mode 100644 index 0000000000..a838c2cc3a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_null_literal-off.cfg @@ -0,0 +1,3 @@ +out Output output.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/left_null_literal.cfg b/yt/yql/tests/sql/suites/join/left_null_literal.cfg new file mode 100644 index 0000000000..9b85bd0ae8 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_null_literal.cfg @@ -0,0 +1 @@ +out Output output.txt diff --git a/yt/yql/tests/sql/suites/join/left_null_literal.sql b/yt/yql/tests/sql/suites/join/left_null_literal.sql new file mode 100644 index 0000000000..4325869895 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_null_literal.sql @@ -0,0 +1,8 @@ +/* syntax version 1 */ +use plato; + +$foo = [<|"x":1|>]; +$bar = [<|"x":1, "y":Null|>]; + +insert into Output +select * from AS_TABLE($foo) as a LEFT JOIN AS_TABLE($bar) as b USING(x); diff --git a/yt/yql/tests/sql/suites/join/left_only_semi_and_other-off.cfg b/yt/yql/tests/sql/suites/join/left_only_semi_and_other-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_only_semi_and_other-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/left_only_semi_and_other.cfg b/yt/yql/tests/sql/suites/join/left_only_semi_and_other.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_only_semi_and_other.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/left_only_semi_and_other.sql b/yt/yql/tests/sql/suites/join/left_only_semi_and_other.sql new file mode 100644 index 0000000000..3258c30324 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_only_semi_and_other.sql @@ -0,0 +1,15 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +USE plato; + +$data1 = (select cast(key as uint32) as key, subkey, value from Input1); +$data2 = (select cast(key as uint32) % 100u as key, subkey, value from Input3); + +--INSERT INTO Output +SELECT + i1.* +FROM $data1 as i1 +LEFT ONLY JOIN $data2 as i2 ON i1.key = i2.key +LEFT SEMI JOIN $data1 as i3 ON i1.key = i3.key +LEFT OUTER JOIN $data1 as i4 ON i1.key = i4.key +ORDER BY i1.key diff --git a/yt/yql/tests/sql/suites/join/left_only_with_other-off.cfg b/yt/yql/tests/sql/suites/join/left_only_with_other-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_only_with_other-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/left_only_with_other.cfg b/yt/yql/tests/sql/suites/join/left_only_with_other.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_only_with_other.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/left_only_with_other.sql b/yt/yql/tests/sql/suites/join/left_only_with_other.sql new file mode 100644 index 0000000000..65b1bf178d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_only_with_other.sql @@ -0,0 +1,14 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +USE plato; + +$data1 = (select cast(key as uint32) as key, subkey, value from Input1); +$data2 = (select cast(key as uint32) % 100u as key, subkey, value from Input1); + +--INSERT INTO Output +SELECT + i1.* +FROM $data1 as i1 +LEFT ONLY JOIN $data2 as i2 ON i1.key = i2.key +JOIN $data1 as i3 ON i1.key = i3.key +; diff --git a/yt/yql/tests/sql/suites/join/left_semi_with_other-off.cfg b/yt/yql/tests/sql/suites/join/left_semi_with_other-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_semi_with_other-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/left_semi_with_other.cfg b/yt/yql/tests/sql/suites/join/left_semi_with_other.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_semi_with_other.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/left_semi_with_other.sql b/yt/yql/tests/sql/suites/join/left_semi_with_other.sql new file mode 100644 index 0000000000..0ac01a9e53 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_semi_with_other.sql @@ -0,0 +1,15 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +USE plato; + +$data1 = (select cast(key as uint32) as key, subkey, value from Input1); +$data2 = (select cast(key as uint32) % 100u as key, subkey, value from Input2); + +--INSERT INTO Output +SELECT + i1.* +FROM $data1 as i1 +LEFT SEMI JOIN $data2 as i2 ON i1.key = i2.key +LEFT OUTER JOIN $data1 as i3 ON i1.key = i3.key +ORDER BY i1.key +; diff --git a/yt/yql/tests/sql/suites/join/left_trivial-off.cfg b/yt/yql/tests/sql/suites/join/left_trivial-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_trivial-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/left_trivial.cfg b/yt/yql/tests/sql/suites/join/left_trivial.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_trivial.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/left_trivial.sql b/yt/yql/tests/sql/suites/join/left_trivial.sql new file mode 100644 index 0000000000..ae448327da --- /dev/null +++ b/yt/yql/tests/sql/suites/join/left_trivial.sql @@ -0,0 +1,5 @@ +PRAGMA DisableSimpleColumns; +select Input1.key, Input1.subkey, Input3.value +from plato.Input1 +left join plato.Input3 using (key) +order by Input1.key;
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_csee-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_csee-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_csee-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_csee.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_csee.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_csee.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_csee.sql b/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_csee.sql new file mode 100644 index 0000000000..63d400bf94 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_csee.sql @@ -0,0 +1,30 @@ +/* ignore runonopt plan diff */ +USE plato; +PRAGMA DisableSimpleColumns; +PRAGMA yt.LookupJoinLimit="64k"; +PRAGMA yt.LookupJoinMaxRows="100"; + +$campaigns_data = AsList( + AsStruct(Just(1) as id), + AsStruct(Just(2) as id)); + +$strategies_data = AsList( + AsStruct(Just(1) as id), + AsStruct(Just(2) as id)); + +$lottery_data = AsList( + AsStruct(Just(1) as id, Just(2) as campaign_id, Just(3) as strategy_id)); + + +INSERT INTO @campaigns SELECT * FROM AS_TABLE($campaigns_data) ORDER BY id; +INSERT INTO @strategies SELECT * FROM AS_TABLE($strategies_data) ORDER BY id; +INSERT INTO @lottery SELECT * FROM AS_TABLE($lottery_data) ORDER BY id; + +COMMIT; + +SELECT + lottery.id AS lottery_id +FROM @lottery AS lottery + JOIN @campaigns AS campaigns ON lottery.campaign_id = campaigns.id + JOIN @strategies AS strategies ON lottery.strategy_id = strategies.id +WHERE 1 < 0 diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_subst-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_subst-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_subst-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_subst.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_subst.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_subst.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_subst.sql b/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_subst.sql new file mode 100644 index 0000000000..e91ef8f7c2 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_bug7646_subst.sql @@ -0,0 +1,28 @@ +USE plato; +PRAGMA DisableSimpleColumns; +PRAGMA yt.LookupJoinLimit="64k"; +PRAGMA yt.LookupJoinMaxRows="100"; + +$campaigns_data = AsList( + AsStruct(Just(1) as id), + AsStruct(Just(2) as id)); + +$strategies_data = AsList( + AsStruct(Just(1) as id), + AsStruct(Just(2) as id)); + +$lottery_data = AsList( + AsStruct(Just(1) as id, Just(2) as campaign_id, Just(3) as strategy_id)); + + +INSERT INTO @campaigns SELECT * FROM AS_TABLE($campaigns_data) ORDER BY id; +INSERT INTO @strategies SELECT * FROM AS_TABLE($strategies_data) ORDER BY id; +INSERT INTO @lottery SELECT * FROM AS_TABLE($lottery_data) ORDER BY id; + +COMMIT; + +SELECT + lottery.id AS lottery_id +FROM @lottery AS lottery + JOIN @campaigns AS campaigns ON lottery.campaign_id = campaigns.id + JOIN @strategies AS strategies ON lottery.strategy_id = strategies.id diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_bug8533-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_bug8533-off.cfg new file mode 100644 index 0000000000..1f7a620911 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_bug8533-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_bug8533.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_bug8533.cfg new file mode 100644 index 0000000000..df8cd9f2c7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_bug8533.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_bug8533.sql b/yt/yql/tests/sql/suites/join/lookupjoin_bug8533.sql new file mode 100644 index 0000000000..8e2b401fa0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_bug8533.sql @@ -0,0 +1,11 @@ +/* syntax version 1 */ +PRAGMA DisableSimpleColumns; + +use plato; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; + +-- tables should be swapped (Input1 is bigger) +select * from Input2 as a +inner join any Input1 as b on a.k2 = b.k1; + diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_inner-off.cfg new file mode 100644 index 0000000000..1f7a620911 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_inner.cfg new file mode 100644 index 0000000000..df8cd9f2c7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner.sql b/yt/yql/tests/sql/suites/join/lookupjoin_inner.sql new file mode 100644 index 0000000000..a85dec245c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner.sql @@ -0,0 +1,10 @@ +PRAGMA DisableSimpleColumns; + +use plato; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; + +-- tables should be swapped (Input1 is bigger) +select * from Input2 as a +inner join Input1 as b on a.k2 = b.k1 and a.v2 = b.v1; + diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o-off.cfg new file mode 100644 index 0000000000..473c367b92 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1_opt.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o.cfg new file mode 100644 index 0000000000..0e1c5e12b2 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1_opt.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o.sql b/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o.sql new file mode 100644 index 0000000000..a85dec245c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o.sql @@ -0,0 +1,10 @@ +PRAGMA DisableSimpleColumns; + +use plato; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; + +-- tables should be swapped (Input1 is bigger) +select * from Input2 as a +inner join Input1 as b on a.k2 = b.k1 and a.v2 = b.v1; + diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o2o-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o2o-off.cfg new file mode 100644 index 0000000000..cb6cc9dbbf --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o2o-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1_opt.txt +in Input2 sorted_by_kv2_opt.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o2o.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o2o.cfg new file mode 100644 index 0000000000..a567b5178d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o2o.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1_opt.txt +in Input2 sorted_by_kv2_opt.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o2o.sql b/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o2o.sql new file mode 100644 index 0000000000..a85dec245c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner_1o2o.sql @@ -0,0 +1,10 @@ +PRAGMA DisableSimpleColumns; + +use plato; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; + +-- tables should be swapped (Input1 is bigger) +select * from Input2 as a +inner join Input1 as b on a.k2 = b.k1 and a.v2 = b.v1; + diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner_2o-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_inner_2o-off.cfg new file mode 100644 index 0000000000..8dc359be1d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner_2o-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2_opt.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner_2o.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_inner_2o.cfg new file mode 100644 index 0000000000..a636052ccc --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner_2o.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2_opt.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner_2o.sql b/yt/yql/tests/sql/suites/join/lookupjoin_inner_2o.sql new file mode 100644 index 0000000000..a85dec245c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner_2o.sql @@ -0,0 +1,10 @@ +PRAGMA DisableSimpleColumns; + +use plato; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; + +-- tables should be swapped (Input1 is bigger) +select * from Input2 as a +inner join Input1 as b on a.k2 = b.k1 and a.v2 = b.v1; + diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner_empty_subq-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_inner_empty_subq-off.cfg new file mode 100644 index 0000000000..1f7a620911 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner_empty_subq-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner_empty_subq.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_inner_empty_subq.cfg new file mode 100644 index 0000000000..df8cd9f2c7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner_empty_subq.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_inner_empty_subq.sql b/yt/yql/tests/sql/suites/join/lookupjoin_inner_empty_subq.sql new file mode 100644 index 0000000000..afbfb0757b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_inner_empty_subq.sql @@ -0,0 +1,9 @@ +PRAGMA DisableSimpleColumns; + +use plato; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; + +select * from Input1 as a +inner join (select * from Input2 where k2 = "not_existent") as b on a.k1 = b.k2; + diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_not_selected-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_not_selected-off.cfg new file mode 100644 index 0000000000..1f7a620911 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_not_selected-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_not_selected.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_not_selected.cfg new file mode 100644 index 0000000000..df8cd9f2c7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_not_selected.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_not_selected.sql b/yt/yql/tests/sql/suites/join/lookupjoin_not_selected.sql new file mode 100644 index 0000000000..1f0f03b410 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_not_selected.sql @@ -0,0 +1,9 @@ +PRAGMA DisableSimpleColumns; + +use plato; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; + +-- no lookup join in this case +select * from Input1 as a +left join Input2 as b on a.k1 = b.k2; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_semi-off.cfg new file mode 100644 index 0000000000..1f7a620911 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_semi.cfg new file mode 100644 index 0000000000..df8cd9f2c7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi.sql b/yt/yql/tests/sql/suites/join/lookupjoin_semi.sql new file mode 100644 index 0000000000..79093ae0fb --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi.sql @@ -0,0 +1,10 @@ +PRAGMA DisableSimpleColumns; + +use plato; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; + +-- prefix of sort keys +select * from Input1 as a +left semi join Input2 as b on a.k1 = b.k2 +order by a.k1; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o-off.cfg new file mode 100644 index 0000000000..473c367b92 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1_opt.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o.cfg new file mode 100644 index 0000000000..0e1c5e12b2 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1_opt.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o.sql b/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o.sql new file mode 100644 index 0000000000..79093ae0fb --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o.sql @@ -0,0 +1,10 @@ +PRAGMA DisableSimpleColumns; + +use plato; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; + +-- prefix of sort keys +select * from Input1 as a +left semi join Input2 as b on a.k1 = b.k2 +order by a.k1; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o2o-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o2o-off.cfg new file mode 100644 index 0000000000..cb6cc9dbbf --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o2o-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1_opt.txt +in Input2 sorted_by_kv2_opt.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o2o.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o2o.cfg new file mode 100644 index 0000000000..a567b5178d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o2o.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1_opt.txt +in Input2 sorted_by_kv2_opt.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o2o.sql b/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o2o.sql new file mode 100644 index 0000000000..79093ae0fb --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_1o2o.sql @@ -0,0 +1,10 @@ +PRAGMA DisableSimpleColumns; + +use plato; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; + +-- prefix of sort keys +select * from Input1 as a +left semi join Input2 as b on a.k1 = b.k2 +order by a.k1; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_2o-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_semi_2o-off.cfg new file mode 100644 index 0000000000..8dc359be1d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_2o-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2_opt.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_2o.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_semi_2o.cfg new file mode 100644 index 0000000000..a636052ccc --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_2o.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2_opt.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_2o.sql b/yt/yql/tests/sql/suites/join/lookupjoin_semi_2o.sql new file mode 100644 index 0000000000..79093ae0fb --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_2o.sql @@ -0,0 +1,10 @@ +PRAGMA DisableSimpleColumns; + +use plato; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; + +-- prefix of sort keys +select * from Input1 as a +left semi join Input2 as b on a.k1 = b.k2 +order by a.k1; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_empty-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_semi_empty-off.cfg new file mode 100644 index 0000000000..29c54dddd7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_empty-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2_empty.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_empty.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_semi_empty.cfg new file mode 100644 index 0000000000..b8938b393e --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_empty.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2_empty.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_empty.sql b/yt/yql/tests/sql/suites/join/lookupjoin_semi_empty.sql new file mode 100644 index 0000000000..79093ae0fb --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_empty.sql @@ -0,0 +1,10 @@ +PRAGMA DisableSimpleColumns; + +use plato; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; + +-- prefix of sort keys +select * from Input1 as a +left semi join Input2 as b on a.k1 = b.k2 +order by a.k1; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_subq-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_semi_subq-off.cfg new file mode 100644 index 0000000000..1f7a620911 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_subq-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_subq.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_semi_subq.cfg new file mode 100644 index 0000000000..df8cd9f2c7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_subq.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_semi_subq.sql b/yt/yql/tests/sql/suites/join/lookupjoin_semi_subq.sql new file mode 100644 index 0000000000..96cb5ca79a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_semi_subq.sql @@ -0,0 +1,10 @@ +PRAGMA DisableSimpleColumns; + +use plato; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; + +-- prefix of sort keys +select * from Input1 as a +left semi join (select * from Input2 where k2 != "ccc") as b on a.k1 = b.k2 +order by a.k1; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_take_skip.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_take_skip.cfg new file mode 100644 index 0000000000..8790d17dc7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_take_skip.cfg @@ -0,0 +1,2 @@ +in Input input9.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_take_skip.sql b/yt/yql/tests/sql/suites/join/lookupjoin_take_skip.sql new file mode 100644 index 0000000000..de1195209c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_take_skip.sql @@ -0,0 +1,12 @@ +USE plato; +PRAGMA yt.LookupJoinMaxRows="3"; +pragma yt.LookupJoinLimit = '10M'; + +insert into @big +select * from (select ListMap(ListFromRange(1, 100), ($x)->(Unwrap(CAST($x as String)))) as key) flatten list by key order by key; +commit; + +$small = select substring(key, 0, 2) as key, subkey || '000' as subkey from Input order by key limit 5 offset 8; + +select * from @big as a join $small as b using(key) order by key; + diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_unused_keys.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_unused_keys.cfg new file mode 100644 index 0000000000..9a930ffe48 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_unused_keys.cfg @@ -0,0 +1,6 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +in Input5 kv5_sorted.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_unused_keys.sql b/yt/yql/tests/sql/suites/join/lookupjoin_unused_keys.sql new file mode 100644 index 0000000000..cd0840eefe --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_unused_keys.sql @@ -0,0 +1,13 @@ +/* syntax version 1 */ +use plato; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; + +select + +v3 + +from Input1 as a +join Input2 as b on (a.k1 = b.k2) +join Input3 as c on (a.k1 = c.k3) +order by v3; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_with_cache-off.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_with_cache-off.cfg new file mode 100644 index 0000000000..e7286dfd15 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_with_cache-off.cfg @@ -0,0 +1,3 @@ +in Input sorted_by_key_subkey.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_with_cache.cfg b/yt/yql/tests/sql/suites/join/lookupjoin_with_cache.cfg new file mode 100644 index 0000000000..2e90092760 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_with_cache.cfg @@ -0,0 +1 @@ +in Input sorted_by_key_subkey.txt diff --git a/yt/yql/tests/sql/suites/join/lookupjoin_with_cache.sql b/yt/yql/tests/sql/suites/join/lookupjoin_with_cache.sql new file mode 100644 index 0000000000..0aeadca09a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/lookupjoin_with_cache.sql @@ -0,0 +1,19 @@ +/* postgres can not */ +/* kikimr can not */ +use plato; +PRAGMA DisableSimpleColumns; +pragma yt.LookupJoinLimit="64k"; +pragma yt.LookupJoinMaxRows="100"; +pragma yt.QueryCacheMode="normal"; +pragma yt.QueryCacheUseForCalc="true"; + +insert into @tmp with truncate +select * from Input +where subkey == "bbb" +order by key; + +commit; + +select * from Input as a +inner join @tmp as b on a.key = b.key +order by a.key, a.subkey; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_dup_key-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_dup_key-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_dup_key-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_dup_key.cfg b/yt/yql/tests/sql/suites/join/mapjoin_dup_key.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_dup_key.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_dup_key.sql b/yt/yql/tests/sql/suites/join/mapjoin_dup_key.sql new file mode 100644 index 0000000000..54066e1d90 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_dup_key.sql @@ -0,0 +1,10 @@ +use plato; + +/* postgres can not */ +/* kikimr can not */ + +pragma DisableSimpleColumns; +pragma yt.MapJoinLimit="1m"; + +select * +from Input1 as a join Input2 as b on a.key = b.key and a.subkey = b.key; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite-off.cfg new file mode 100644 index 0000000000..e76fa257e2 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite-off.cfg @@ -0,0 +1,4 @@ +in Input uniqkeys.txt +res result.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite.cfg b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite.cfg new file mode 100644 index 0000000000..0e7b4058e1 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite.cfg @@ -0,0 +1,2 @@ +in Input uniqkeys.txt +res result.txt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite.sql b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite.sql new file mode 100644 index 0000000000..de352022c9 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite.sql @@ -0,0 +1,8 @@ +/* postgres can not */ +USE plato; +pragma DisableSimpleColumns; +pragma yt.MapJoinLimit="1m"; + +$subq = (SELECT CAST((CAST(subkey AS Int32) + 1) AS String) AS subkey_plus_one FROM Input); + +SELECT * FROM Input AS a JOIN $subq AS b ON a.subkey = b.subkey_plus_one order by subkey, key; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_sequence-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_sequence-off.cfg new file mode 100644 index 0000000000..03784127c6 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_sequence-off.cfg @@ -0,0 +1,6 @@ +in Input uniqkeys.txt +in Dict1 sorted_uniq.txt +in Dict2 sorted_uniq1.txt +res result.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_sequence.cfg b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_sequence.cfg new file mode 100644 index 0000000000..eff6a05aeb --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_sequence.cfg @@ -0,0 +1,4 @@ +in Input uniqkeys.txt +in Dict1 sorted_uniq.txt +in Dict2 sorted_uniq1.txt +res result.txt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_sequence.sql b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_sequence.sql new file mode 100644 index 0000000000..bd93d67218 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_sequence.sql @@ -0,0 +1,13 @@ +/* postgres can not */ +USE plato; +pragma DisableSimpleColumns; +pragma yt.MapJoinLimit="1m"; + +$subq = (SELECT key, CAST((CAST(subkey AS Int32) + 1) AS String) AS subkey_plus_one FROM Input); + +FROM $subq AS a +JOIN Dict1 AS d1 +ON a.subkey_plus_one = d1.subkey +JOIN Dict2 AS d2 +ON a.key = d2.key +SELECT * ORDER BY a.key, a.subkey_plus_one; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_star-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_star-off.cfg new file mode 100644 index 0000000000..e76fa257e2 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_star-off.cfg @@ -0,0 +1,4 @@ +in Input uniqkeys.txt +res result.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_star.cfg b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_star.cfg new file mode 100644 index 0000000000..0e7b4058e1 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_star.cfg @@ -0,0 +1,2 @@ +in Input uniqkeys.txt +res result.txt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_star.sql b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_star.sql new file mode 100644 index 0000000000..806a6ad8c9 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_early_rewrite_star.sql @@ -0,0 +1,9 @@ +/* postgres can not */ +USE plato; +pragma DisableSimpleColumns; +pragma yt.MapJoinLimit="1m"; +pragma yt.JoinEnableStarJoin="true"; + +$subq = (SELECT CAST((CAST(subkey AS Int32) + 1) AS String) AS subkey_plus_one FROM Input); + +SELECT * FROM Input AS a JOIN $subq AS b ON a.subkey = b.subkey_plus_one order by subkey, key; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_left_null_column-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_left_null_column-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_left_null_column-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_left_null_column.cfg b/yt/yql/tests/sql/suites/join/mapjoin_left_null_column.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_left_null_column.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_left_null_column.sql b/yt/yql/tests/sql/suites/join/mapjoin_left_null_column.sql new file mode 100644 index 0000000000..df7b2ab987 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_left_null_column.sql @@ -0,0 +1,11 @@ +/* syntax version 1 */ +/* postgres can not */ + +PRAGMA yt.MapJoinLimit="1m"; + +USE plato; + +$t = [<|"x":"150", "y":1, "z":Null|>, <|"x":"150", "y":2, "z":Null|>]; + +SELECT * FROM Input1 AS a LEFT JOIN AS_TABLE($t) AS b ON a.key = b.x ORDER BY key, y; + diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_non_optional_left_only_single-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_non_optional_left_only_single-off.cfg new file mode 100644 index 0000000000..c658c9ddb5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_non_optional_left_only_single-off.cfg @@ -0,0 +1,3 @@ +in Input input6.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_non_optional_left_only_single.cfg b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_non_optional_left_only_single.cfg new file mode 100644 index 0000000000..684f1dbee4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_non_optional_left_only_single.cfg @@ -0,0 +1 @@ +in Input input6.txt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_non_optional_left_only_single.sql b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_non_optional_left_only_single.sql new file mode 100644 index 0000000000..518d33b511 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_non_optional_left_only_single.sql @@ -0,0 +1,15 @@ +/* syntax version 1 */ +/* postgres can not */ + +USE plato; + +$t = [<|"key1":"1", "subkey1":"a", "key":"1", "subkey":"a", "value":"value2_1"|>, <|"key1":"4", "subkey1":"d", "key":"4", "subkey":"d", "value":"value2_4"|>, <|"key1":"-5", "subkey1":"e", "key":"-5", "subkey":"e", "value":"value2_5"|>]; + +SELECT * +FROM + Input AS A +LEFT ONLY JOIN + AS_TABLE($t) AS B +ON + AsTuple(A.key, AsTuple(A.subkey, A.subkey1)) = AsTuple(B.key, AsTuple(B.subkey, B.subkey1)) +ORDER BY `key`; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_only_single-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_only_single-off.cfg new file mode 100644 index 0000000000..440cd8b680 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_only_single-off.cfg @@ -0,0 +1,3 @@ +in Input input5.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_only_single.cfg b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_only_single.cfg new file mode 100644 index 0000000000..000848a05d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_only_single.cfg @@ -0,0 +1 @@ +in Input input5.txt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_only_single.sql b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_only_single.sql new file mode 100644 index 0000000000..d6eab69ed8 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_only_single.sql @@ -0,0 +1,15 @@ +/* syntax version 1 */ +/* postgres can not */ + +USE plato; + +$t = [<|"key":"1", "subkey":"a", "value":"value2_1"|>, <|"key":"4", "subkey":"d", "value":"value2_4"|>, <|"key":"-5", "subkey":"e", "value":"value2_5"|>]; + +SELECT * +FROM + Input AS A +LEFT ONLY JOIN + AS_TABLE($t) AS B +ON + AsTuple(cast(A.key as uint64), cast(A.subkey as String)) = AsTuple(cast(B.key as int64), cast(B.subkey as Utf8)) +ORDER BY `key`; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_many-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_many-off.cfg new file mode 100644 index 0000000000..c658c9ddb5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_many-off.cfg @@ -0,0 +1,3 @@ +in Input input6.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_many.cfg b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_many.cfg new file mode 100644 index 0000000000..684f1dbee4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_many.cfg @@ -0,0 +1 @@ +in Input input6.txt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_many.sql b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_many.sql new file mode 100644 index 0000000000..1175356b1d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_many.sql @@ -0,0 +1,16 @@ +/* syntax version 1 */ +/* postgres can not */ + +USE plato; + +$t = [<|"key1":"1", "subkey1":"a", "key":"1", "subkey":"a", "value":"value2_1"|>, <|"key1":"4", "subkey1":"d", "key":"4", "subkey":"d", "value":"value2_4"|>, <|"key1":"-5", "subkey1":"e", "key":"-5", "subkey":"e", "value":"value2_5"|>]; + +SELECT * +FROM + Input AS A +LEFT SEMI JOIN + AS_TABLE($t) AS B +ON + AsTuple(cast(A.key as uint64), cast(A.subkey as String)) = AsTuple(cast(B.key as int64), cast(B.subkey as Utf8)) + AND AsTuple(cast(A.key1 as uint64), cast(A.subkey1 as String)) = AsTuple(cast(B.key1 as int64), cast(B.subkey1 as Utf8)) +ORDER BY `key`; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_single-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_single-off.cfg new file mode 100644 index 0000000000..440cd8b680 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_single-off.cfg @@ -0,0 +1,3 @@ +in Input input5.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_single.cfg b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_single.cfg new file mode 100644 index 0000000000..000848a05d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_single.cfg @@ -0,0 +1 @@ +in Input input5.txt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_single.sql b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_single.sql new file mode 100644 index 0000000000..959c476b80 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_complex_type_optional_left_semi_single.sql @@ -0,0 +1,15 @@ +/* syntax version 1 */ +/* postgres can not */ + +USE plato; + +$t = [<|"key":"1", "subkey":"a", "value":"value2_1"|>, <|"key":"4", "subkey":"d", "value":"value2_4"|>, <|"key":"-5", "subkey":"e", "value":"value2_5"|>]; + +SELECT * +FROM + Input AS A +LEFT SEMI JOIN + AS_TABLE($t) AS B +ON + AsTuple(cast(A.key as uint64), cast(A.subkey as String)) = AsTuple(cast(B.key as int64), cast(B.subkey as Utf8)) +ORDER BY `key`; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_tablerecord-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_on_tablerecord-off.cfg new file mode 100644 index 0000000000..2dd54c12a3 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_tablerecord-off.cfg @@ -0,0 +1,5 @@ +in Input input4.txt +res result.txt +providers yt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_tablerecord.cfg b/yt/yql/tests/sql/suites/join/mapjoin_on_tablerecord.cfg new file mode 100644 index 0000000000..b4bb56a6bb --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_tablerecord.cfg @@ -0,0 +1,3 @@ +in Input input4.txt +res result.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_tablerecord.sql b/yt/yql/tests/sql/suites/join/mapjoin_on_tablerecord.sql new file mode 100644 index 0000000000..660b2d36b4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_tablerecord.sql @@ -0,0 +1,10 @@ +use plato; +pragma yt.MapJoinLimit="1M"; + +$i = select TableRecordIndex() as ind, t.* from Input as t; +$filter = select min(ind) as ind from $i group by subkey; + +select + * +from Input +where TableRecordIndex() in $filter; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_very_complex_type-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_on_very_complex_type-off.cfg new file mode 100644 index 0000000000..c658c9ddb5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_very_complex_type-off.cfg @@ -0,0 +1,3 @@ +in Input input6.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_very_complex_type.cfg b/yt/yql/tests/sql/suites/join/mapjoin_on_very_complex_type.cfg new file mode 100644 index 0000000000..684f1dbee4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_very_complex_type.cfg @@ -0,0 +1 @@ +in Input input6.txt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_on_very_complex_type.sql b/yt/yql/tests/sql/suites/join/mapjoin_on_very_complex_type.sql new file mode 100644 index 0000000000..2ee1b912b2 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_on_very_complex_type.sql @@ -0,0 +1,15 @@ +/* syntax version 1 */ +/* postgres can not */ + +USE plato; + +$t = [<|"key1":"1", "subkey1":"a", "key":"1", "subkey":"a", "value":"value2_1"|>, <|"key1":"4", "subkey1":"d", "key":"4", "subkey":"d", "value":"value2_4"|>, <|"key1":"-5", "subkey1":"e", "key":"-5", "subkey":"e", "value":"value2_5"|>]; + +SELECT * +FROM + Input AS A +LEFT SEMI JOIN + AS_TABLE($t) AS B +ON + AsTuple(A.subkey, AsTuple(A.subkey1, AsTuple(CAST(A.key AS Int64), CAST(A.key1 AS Uint64)))) = AsTuple(B.subkey, AsTuple(B.subkey1, AsTuple(CAST(B.key AS Uint64), CAST(B.key1 AS Int64)))) +ORDER BY `key`; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_opt_vs_2xopt-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_opt_vs_2xopt-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_opt_vs_2xopt-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_opt_vs_2xopt.cfg b/yt/yql/tests/sql/suites/join/mapjoin_opt_vs_2xopt.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_opt_vs_2xopt.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_opt_vs_2xopt.sql b/yt/yql/tests/sql/suites/join/mapjoin_opt_vs_2xopt.sql new file mode 100644 index 0000000000..73171384f0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_opt_vs_2xopt.sql @@ -0,0 +1,23 @@ +use plato; + +pragma yt.MapJoinLimit="1m"; + +$t1 = AsList( + AsStruct(Just(1) AS Key), + AsStruct(Just(2) AS Key), + AsStruct(Just(3) AS Key)); + +$t2 = AsList( + AsStruct(Just(Just(2)) AS Key), + AsStruct(Just(Just(3)) AS Key), + AsStruct(Just(Just(4)) AS Key), + AsStruct(Just(Just(5)) AS Key), + AsStruct(Just(Just(6)) AS Key)); + +insert into @t1 select * from as_table($t1); +insert into @t2 select * from as_table($t2); + +commit; + +select * +from @t1 as a join @t2 as b using(Key); diff --git a/yt/yql/tests/sql/suites/join/mapjoin_partial_uniq_keys-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_partial_uniq_keys-off.cfg new file mode 100644 index 0000000000..e76fa257e2 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_partial_uniq_keys-off.cfg @@ -0,0 +1,4 @@ +in Input uniqkeys.txt +res result.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_partial_uniq_keys.cfg b/yt/yql/tests/sql/suites/join/mapjoin_partial_uniq_keys.cfg new file mode 100644 index 0000000000..0e7b4058e1 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_partial_uniq_keys.cfg @@ -0,0 +1,2 @@ +in Input uniqkeys.txt +res result.txt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_partial_uniq_keys.sql b/yt/yql/tests/sql/suites/join/mapjoin_partial_uniq_keys.sql new file mode 100644 index 0000000000..2d152113e4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_partial_uniq_keys.sql @@ -0,0 +1,18 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +/* kikimr can not */ +/* ignore runonopt plan diff */ +USE plato; +pragma yt.MapJoinLimit="1m"; + +-- YQL-5582 +$join = (select + a.key as key, + a.subkey as subkey, + a.value as value +from (select * from Input where value > "bbb") as a +left join Input as b +on a.key = b.key); + + +select count(*) from $join; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_sharded.sql b/yt/yql/tests/sql/suites/join/mapjoin_sharded.sql new file mode 100644 index 0000000000..e5af0c4509 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_sharded.sql @@ -0,0 +1,13 @@ +use plato; + +/* postgres can not */ +/* kikimr can not */ + +pragma DisableSimpleColumns; +/* yt_local_var: MAP_JOIN_LIMIT = 30 */ +/* yqlrun_var: MAP_JOIN_LIMIT = 1000 */ +pragma yt.MapJoinLimit="MAP_JOIN_LIMIT"; +pragma yt.MapJoinShardCount = "10"; + +select * +from Input1 as a join Input2 as b on a.key = b.key and a.subkey = b.key; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_unused_keys.cfg b/yt/yql/tests/sql/suites/join/mapjoin_unused_keys.cfg new file mode 100644 index 0000000000..9a930ffe48 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_unused_keys.cfg @@ -0,0 +1,6 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +in Input5 kv5_sorted.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_unused_keys.sql b/yt/yql/tests/sql/suites/join/mapjoin_unused_keys.sql new file mode 100644 index 0000000000..d574e50062 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_unused_keys.sql @@ -0,0 +1,13 @@ +/* syntax version 1 */ +use plato; +pragma yt.MapJoinLimit="1m"; +pragma yt.DisableOptimizers="PhysicalOptimizer-FuseInnerMap"; + +select + +v3 + +from Input1 as a +join Input2 as b on (a.k1 = b.k2) +join Input3 as c on (a.k1 = c.k3) +order by v3; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_with_anonymous-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_with_anonymous-off.cfg new file mode 100644 index 0000000000..08630ad2c5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_with_anonymous-off.cfg @@ -0,0 +1,4 @@ +in Input input1.txt +res result.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_with_anonymous.cfg b/yt/yql/tests/sql/suites/join/mapjoin_with_anonymous.cfg new file mode 100644 index 0000000000..c8889a670f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_with_anonymous.cfg @@ -0,0 +1,2 @@ +in Input input1.txt +res result.txt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_with_anonymous.sql b/yt/yql/tests/sql/suites/join/mapjoin_with_anonymous.sql new file mode 100644 index 0000000000..0a6476fbda --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_with_anonymous.sql @@ -0,0 +1,12 @@ +/* postgres can not */ +/* kikimr can not */ +use plato; +pragma DisableSimpleColumns; + +pragma yt.MapJoinLimit="1m"; + +insert into @tmp select * from Input where key > "100"; +commit; + +select * from Input as a +left join @tmp as b on a.key = b.key; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_with_empty_read-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_with_empty_read-off.cfg new file mode 100644 index 0000000000..63f3b16e05 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_with_empty_read-off.cfg @@ -0,0 +1,3 @@ +in Input input1.txt +res result.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_with_empty_read.cfg b/yt/yql/tests/sql/suites/join/mapjoin_with_empty_read.cfg new file mode 100644 index 0000000000..5b34491eb1 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_with_empty_read.cfg @@ -0,0 +1,4 @@ +in Input input1.txt +res result.txt +providers yt + diff --git a/yt/yql/tests/sql/suites/join/mapjoin_with_empty_read.sql b/yt/yql/tests/sql/suites/join/mapjoin_with_empty_read.sql new file mode 100644 index 0000000000..eae0db98d5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_with_empty_read.sql @@ -0,0 +1,20 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +/* kikimr can not */ +use plato; +pragma yt.mapjoinlimit="1m"; + +$cnt = (select count(*) from Input); +$offset = ($cnt + 10) ?? 0; + +$in1 = (select key from Input where key != "" order by key limit 10 offset $offset); + +select * from Input as a +left join $in1 as b on a.key = b.key; + +$limit = ($cnt / 100) ?? 0; + +$in2 = (select key from Input where key != "" limit $limit); + +select * from Input as a +left only join $in2 as b on a.key = b.key; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_with_empty_struct-off.cfg b/yt/yql/tests/sql/suites/join/mapjoin_with_empty_struct-off.cfg new file mode 100644 index 0000000000..08630ad2c5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_with_empty_struct-off.cfg @@ -0,0 +1,4 @@ +in Input input1.txt +res result.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mapjoin_with_empty_struct.cfg b/yt/yql/tests/sql/suites/join/mapjoin_with_empty_struct.cfg new file mode 100644 index 0000000000..c8889a670f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_with_empty_struct.cfg @@ -0,0 +1,2 @@ +in Input input1.txt +res result.txt diff --git a/yt/yql/tests/sql/suites/join/mapjoin_with_empty_struct.sql b/yt/yql/tests/sql/suites/join/mapjoin_with_empty_struct.sql new file mode 100644 index 0000000000..c0fcc01374 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mapjoin_with_empty_struct.sql @@ -0,0 +1,14 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +/* kikimr can not */ +/* ignore yt detailed plan diff */ +use plato; +pragma yt.MapJoinLimit="10M"; + +$sizes = ( + SELECT + 0 AS id + FROM Input +); + +SELECT d.key FROM Input as d CROSS JOIN $sizes as s ORDER BY d.key; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_any_no_join_reduce-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_any_no_join_reduce-off.cfg new file mode 100644 index 0000000000..489ecd7e4a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_any_no_join_reduce-off.cfg @@ -0,0 +1,3 @@ +in Input sorted_uniq2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_any_no_join_reduce.cfg b/yt/yql/tests/sql/suites/join/mergejoin_any_no_join_reduce.cfg new file mode 100644 index 0000000000..de96d331e1 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_any_no_join_reduce.cfg @@ -0,0 +1 @@ +in Input sorted_uniq2.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_any_no_join_reduce.sql b/yt/yql/tests/sql/suites/join/mergejoin_any_no_join_reduce.sql new file mode 100644 index 0000000000..bcd9751286 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_any_no_join_reduce.sql @@ -0,0 +1,5 @@ +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="2"; + +select * from Input where key in (select "023" as key union all select "911" as key union all select "911" as key); diff --git a/yt/yql/tests/sql/suites/join/mergejoin_big_primary-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_big_primary-off.cfg new file mode 100644 index 0000000000..1f7a620911 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_big_primary-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_big_primary.cfg b/yt/yql/tests/sql/suites/join/mergejoin_big_primary.cfg new file mode 100644 index 0000000000..df8cd9f2c7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_big_primary.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_big_primary.sql b/yt/yql/tests/sql/suites/join/mergejoin_big_primary.sql new file mode 100644 index 0000000000..a05dcc865c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_big_primary.sql @@ -0,0 +1,10 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinAllowColumnRenames="true"; +pragma yt.JoinMergeUseSmallAsPrimary="false"; + +-- Input2 is smaller than Input1 +select * from Input1 as a join Input2 as b on a.k1 = b.k2 +order by a.v1, b.v2; + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_big_primary_unique-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_big_primary_unique-off.cfg new file mode 100644 index 0000000000..e41a2c5556 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_big_primary_unique-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1_unique.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_big_primary_unique.cfg b/yt/yql/tests/sql/suites/join/mergejoin_big_primary_unique.cfg new file mode 100644 index 0000000000..c0114c4136 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_big_primary_unique.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1_unique.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_big_primary_unique.sql b/yt/yql/tests/sql/suites/join/mergejoin_big_primary_unique.sql new file mode 100644 index 0000000000..79ac405416 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_big_primary_unique.sql @@ -0,0 +1,9 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinAllowColumnRenames="true"; +pragma yt.JoinMergeUseSmallAsPrimary="false"; + +-- Input2 is smaller than Input1, but Input1 has unique keys +select * from Input1 as a join Input2 as b on a.k1 = b.k2 and a.v1 = b.v2; + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_choose_primary-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_choose_primary-off.cfg new file mode 100644 index 0000000000..1f7a620911 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_choose_primary-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_choose_primary.cfg b/yt/yql/tests/sql/suites/join/mergejoin_choose_primary.cfg new file mode 100644 index 0000000000..df8cd9f2c7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_choose_primary.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_choose_primary.sql b/yt/yql/tests/sql/suites/join/mergejoin_choose_primary.sql new file mode 100644 index 0000000000..97d4a93ea3 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_choose_primary.sql @@ -0,0 +1,9 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinAllowColumnRenames="true"; + +-- Input2 is smaller than Input1 +select * from Input1 as a join Input2 as b on a.k1 = b.k2 +order by a.v1, b.v2; + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_choose_primary_with_retry-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_choose_primary_with_retry-off.cfg new file mode 100644 index 0000000000..1f7a620911 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_choose_primary_with_retry-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_choose_primary_with_retry.cfg b/yt/yql/tests/sql/suites/join/mergejoin_choose_primary_with_retry.cfg new file mode 100644 index 0000000000..23a3ae77d0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_choose_primary_with_retry.cfg @@ -0,0 +1,3 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +pragma yt.ParallelOperationsLimit="1" diff --git a/yt/yql/tests/sql/suites/join/mergejoin_choose_primary_with_retry.sql b/yt/yql/tests/sql/suites/join/mergejoin_choose_primary_with_retry.sql new file mode 100644 index 0000000000..aad534d5dd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_choose_primary_with_retry.sql @@ -0,0 +1,12 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinAllowColumnRenames="true"; + +-- emulate monsters in big table +pragma yt.JoinMergeReduceJobMaxSize="1"; + +-- Input2 is smaller than Input1 +select * from Input1 as a join Input2 as b on a.k1 = b.k2 +order by a.v1, b.v2; + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_align1-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_force_align1-off.cfg new file mode 100644 index 0000000000..9299e9217a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_align1-off.cfg @@ -0,0 +1,3 @@ +providers yt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_align1.cfg b/yt/yql/tests/sql/suites/join/mergejoin_force_align1.cfg new file mode 100644 index 0000000000..bb349dd8ab --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_align1.cfg @@ -0,0 +1 @@ +providers yt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_align1.sql b/yt/yql/tests/sql/suites/join/mergejoin_force_align1.sql new file mode 100644 index 0000000000..3504fd3cf1 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_align1.sql @@ -0,0 +1,26 @@ +/* syntax version 1 */ +/* postgres can not */ + +USE plato; + +pragma yt.JoinMergeTablesLimit="100"; +pragma yt.JoinMergeForce; + +insert into @t1 +select 1 as k1, 10 as v1; + +insert into @t2 +select 1u as k2, 100 as v2; + +insert into @t3 +select 1us as k3, 1000 as v3; + +insert into @t4 +select 1s as k4, 10000 as v4; + +commit; + + +select * from (select * from @t1 as a join @t3 as c on a.k1 = c.k3) as ac + join (select * from @t2 as b join @t4 as d on b.k2 = d.k4) as bd on ac.k1 = bd.k2 and ac.k3 = bd.k4; + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_align2-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_force_align2-off.cfg new file mode 100644 index 0000000000..9299e9217a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_align2-off.cfg @@ -0,0 +1,3 @@ +providers yt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_align2.cfg b/yt/yql/tests/sql/suites/join/mergejoin_force_align2.cfg new file mode 100644 index 0000000000..bb349dd8ab --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_align2.cfg @@ -0,0 +1 @@ +providers yt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_align2.sql b/yt/yql/tests/sql/suites/join/mergejoin_force_align2.sql new file mode 100644 index 0000000000..695adedf4a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_align2.sql @@ -0,0 +1,22 @@ +/* syntax version 1 */ +/* postgres can not */ + +USE plato; + +pragma yt.JoinMergeTablesLimit="100"; + +insert into @t1 +select 1 as k1, 10 as v1; + +insert into @t2 +select 1u as k2, 100 as v2; + +insert into @t3 +select 1us as k3, 1000 as v3; + +commit; + +select * from @t2 as b + left join /*+ merge() */ @t3 as c on b.k2 = c.k3 + left join @t1 as a on a.k1 = b.k2 and a.k1=c.k3; + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_align3-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_force_align3-off.cfg new file mode 100644 index 0000000000..9299e9217a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_align3-off.cfg @@ -0,0 +1,3 @@ +providers yt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_align3.cfg b/yt/yql/tests/sql/suites/join/mergejoin_force_align3.cfg new file mode 100644 index 0000000000..bb349dd8ab --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_align3.cfg @@ -0,0 +1 @@ +providers yt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_align3.sql b/yt/yql/tests/sql/suites/join/mergejoin_force_align3.sql new file mode 100644 index 0000000000..1cb847dd29 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_align3.sql @@ -0,0 +1,19 @@ +/* syntax version 1 */ +/* postgres can not */ + +USE plato; + +pragma yt.JoinMergeTablesLimit="100"; +pragma yt.JoinMergeForce; + +insert into @t1 +select (1, 1u) as k1, 100u as v1; + +insert into @t2 +select (1u, 1) as k2, 100 as v2; + + +commit; + +select * from @t1 as a join @t2 as b on a.k1 = b.k2 and a.v1 = b.v2; + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_no_sorted-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_force_no_sorted-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_no_sorted-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_no_sorted.cfg b/yt/yql/tests/sql/suites/join/mergejoin_force_no_sorted.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_no_sorted.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_no_sorted.sql b/yt/yql/tests/sql/suites/join/mergejoin_force_no_sorted.sql new file mode 100644 index 0000000000..a7cd554ffb --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_no_sorted.sql @@ -0,0 +1,5 @@ +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeForce="true"; + +select a.key as key from Input1 as a join Input2 as b using(key) order by key; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_one_sorted-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_force_one_sorted-off.cfg new file mode 100644 index 0000000000..644d022f87 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_one_sorted-off.cfg @@ -0,0 +1,4 @@ +in Input input1.txt +in InputSorted sorted_uniq.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_one_sorted.cfg b/yt/yql/tests/sql/suites/join/mergejoin_force_one_sorted.cfg new file mode 100644 index 0000000000..a85b008cc0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_one_sorted.cfg @@ -0,0 +1,2 @@ +in Input input1.txt +in InputSorted sorted_uniq.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_one_sorted.sql b/yt/yql/tests/sql/suites/join/mergejoin_force_one_sorted.sql new file mode 100644 index 0000000000..ad74c2340b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_one_sorted.sql @@ -0,0 +1,6 @@ +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeForce="true"; +pragma yt.JoinMergeUnsortedFactor="0"; + +select a.key as key from InputSorted as a join Input as b using(key) order by key; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_per_link-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_force_per_link-off.cfg new file mode 100644 index 0000000000..7f40aa5617 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_per_link-off.cfg @@ -0,0 +1,6 @@ +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +providers yt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_per_link.cfg b/yt/yql/tests/sql/suites/join/mergejoin_force_per_link.cfg new file mode 100644 index 0000000000..f22309ab5f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_per_link.cfg @@ -0,0 +1,4 @@ +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_force_per_link.sql b/yt/yql/tests/sql/suites/join/mergejoin_force_per_link.sql new file mode 100644 index 0000000000..7a30768b9f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_force_per_link.sql @@ -0,0 +1,18 @@ +/* syntax version 1 */ +/* postgres can not */ + +use plato; +pragma yt.JoinMergeTablesLimit="10"; + +select + a.key as k1, + b.key as k2, + c.key as k3, + a.subkey as sk1, + b.subkey as sk2, + c.subkey as sk3 +from + Input1 as a join Input2 as b on a.key = b.key + join /*+ merge() */ Input3 as c on b.key = c.key +order by k3 +; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_input1.txt.attr b/yt/yql/tests/sql/suites/join/mergejoin_input1.txt.attr new file mode 100644 index 0000000000..6a779223f1 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_input1.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "PhraseID"; + "required" = %false; + "sort_order" = "ascending"; + "type" = "uint64" + }; + { + "name" = "BaseNo"; + "required" = %false; + "sort_order" = "ascending"; + "type" = "uint16" + }; + { + "name" = "Text"; + "required" = %false; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/mergejoin_input2.txt.attr b/yt/yql/tests/sql/suites/join/mergejoin_input2.txt.attr new file mode 100644 index 0000000000..1a5403e22b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_input2.txt.attr @@ -0,0 +1,60 @@ +{ + "_yql_row_spec" = { + "StrictSchema" = %true; + "Type" = [ + "StructType"; + [ + [ + "BannerID"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "BaseNo"; + [ + "OptionalType"; + [ + "DataType"; + "Uint16" + ] + ] + ]; + [ + "PhraseID"; + [ + "OptionalType"; + [ + "DataType"; + "Uint64" + ] + ] + ]; + [ + "ResultCost"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ]; + [ + "ResultFlatCost"; + [ + "OptionalType"; + [ + "DataType"; + "Int64" + ] + ] + ] + ] + ] + }; +} diff --git a/yt/yql/tests/sql/suites/join/mergejoin_left_null_column-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_left_null_column-off.cfg new file mode 100644 index 0000000000..0eb1ab8cde --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_left_null_column-off.cfg @@ -0,0 +1,3 @@ +in Input1 sorted_by_kv1.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_left_null_column.cfg b/yt/yql/tests/sql/suites/join/mergejoin_left_null_column.cfg new file mode 100644 index 0000000000..fa48e4fa82 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_left_null_column.cfg @@ -0,0 +1 @@ +in Input1 sorted_by_kv1.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_left_null_column.sql b/yt/yql/tests/sql/suites/join/mergejoin_left_null_column.sql new file mode 100644 index 0000000000..1dd27bcc3a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_left_null_column.sql @@ -0,0 +1,13 @@ +/* syntax version 1 */ +/* postgres can not */ + +PRAGMA yt.JoinMergeTablesLimit="10"; +PRAGMA yt.JoinAllowColumnRenames="true"; +PRAGMA yt.JoinMergeUnsortedFactor="5.0"; + +USE plato; + +$t = [<|"x":"bbb", "y":1, "z":Null|>, <|"x":"bbb", "y":2, "z":Null|>]; + +SELECT * FROM Input1 AS a LEFT JOIN AS_TABLE($t) AS b ON a.k1 = b.x ORDER BY k1, y; + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_narrows_output_sort-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_narrows_output_sort-off.cfg new file mode 100644 index 0000000000..a15ee3ce2e --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_narrows_output_sort-off.cfg @@ -0,0 +1,5 @@ +in Input1 kv1_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_narrows_output_sort.cfg b/yt/yql/tests/sql/suites/join/mergejoin_narrows_output_sort.cfg new file mode 100644 index 0000000000..4d81d34ed9 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_narrows_output_sort.cfg @@ -0,0 +1,3 @@ +in Input1 kv1_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_narrows_output_sort.sql b/yt/yql/tests/sql/suites/join/mergejoin_narrows_output_sort.sql new file mode 100644 index 0000000000..c5ddba7f1b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_narrows_output_sort.sql @@ -0,0 +1,11 @@ +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="3"; +pragma yt.JoinAllowColumnRenames="true"; +pragma SimpleColumns; + +from Input3 as c +join Input4 as d on c.k3 = d.k4 +right only join Input1 as a on a.k1 = c.k3 and a.v1 = c.v3 +select * order by u1 + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort-off.cfg new file mode 100644 index 0000000000..8e80f78742 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort-off.cfg @@ -0,0 +1,4 @@ +in SortedByKey sorted_uniq.txt +in SortedBySubkeyValue sorted_uniq1.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort.cfg b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort.cfg new file mode 100644 index 0000000000..ea9e6ce443 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort.cfg @@ -0,0 +1,2 @@ +in SortedByKey sorted_uniq.txt +in SortedBySubkeyValue sorted_uniq1.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort.sql b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort.sql new file mode 100644 index 0000000000..24b8a2901b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort.sql @@ -0,0 +1,42 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="0"; +pragma yt.JoinAllowColumnRenames="true"; +pragma yt.JoinMergeSetTopLevelFullSort="true"; + +FROM SortedBySubkeyValue AS a INNER JOIN SortedByKey AS b ON a.subkey = b.key +SELECT b.key, a.subkey, a.value +ORDER BY a.subkey, a.value, b.key; + +FROM SortedBySubkeyValue AS a RIGHT JOIN SortedByKey AS b ON a.subkey = b.key +SELECT b.key, a.subkey, a.value +ORDER BY b.key; + +FROM SortedBySubkeyValue AS a LEFT JOIN SortedByKey AS b ON a.subkey = b.key +SELECT b.key, a.subkey, a.value +ORDER BY a.subkey, a.value; + +FROM SortedBySubkeyValue AS a FULL JOIN SortedByKey AS b ON a.subkey = b.key +SELECT b.key, a.subkey, a.value +ORDER BY b.key, a.subkey, a.value; + +FROM SortedBySubkeyValue AS a RIGHT ONLY JOIN SortedByKey AS b ON a.subkey = b.key +SELECT b.key +ORDER BY b.key; + +FROM SortedBySubkeyValue AS a LEFT ONLY JOIN SortedByKey AS b ON a.subkey = b.key +SELECT a.subkey, a.value +ORDER BY a.subkey, a.value; + +FROM SortedBySubkeyValue AS a EXCLUSION JOIN SortedByKey AS b ON a.subkey = b.key +SELECT b.key, a.subkey, a.value +ORDER BY b.key, a.subkey, a.value; + +FROM SortedBySubkeyValue AS a RIGHT SEMI JOIN SortedByKey AS b ON a.subkey = b.key +SELECT b.key +ORDER BY b.key; + +FROM SortedBySubkeyValue AS a LEFT SEMI JOIN SortedByKey AS b ON a.subkey = b.key +SELECT a.subkey, a.value +ORDER BY a.subkey, a.value; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_cross-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_cross-off.cfg new file mode 100644 index 0000000000..287d1fa1ed --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_cross-off.cfg @@ -0,0 +1,5 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +in Input3 sorted_by_kv3.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_cross.cfg b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_cross.cfg new file mode 100644 index 0000000000..88a5beef60 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_cross.cfg @@ -0,0 +1,3 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +in Input3 sorted_by_kv3.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_cross.sql b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_cross.sql new file mode 100644 index 0000000000..8775257805 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_cross.sql @@ -0,0 +1,11 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="0"; +pragma yt.JoinAllowColumnRenames="true"; +pragma yt.JoinMergeSetTopLevelFullSort="true"; + +FROM Input1 AS a JOIN Input2 AS b ON b.k2 = a.k1 + CROSS JOIN Input3 AS c +SELECT c.k3 AS ck3, c.k3 AS ck3_extra, c.v3, a.k1 as ak1 ORDER BY ak1, ck3; + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_nested-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_nested-off.cfg new file mode 100644 index 0000000000..7859898010 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_nested-off.cfg @@ -0,0 +1,5 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_nested.cfg b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_nested.cfg new file mode 100644 index 0000000000..086641db8d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_nested.cfg @@ -0,0 +1,3 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_nested.sql b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_nested.sql new file mode 100644 index 0000000000..3e01d0acda --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_nested.sql @@ -0,0 +1,12 @@ +/* ignore yt detailed plan diff */ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="0"; +pragma yt.JoinAllowColumnRenames="true"; + +FROM Input1 AS a JOIN Input2 AS b ON b.k2 = a.k1 AND a.v1 = b.v2 + JOIN Input3 AS c ON a.k1 = c.k3 AND a.v1 = c.v3 +SELECT c.k3 AS ck3, c.k3 AS ck3_extra, c.k3 AS ck3_extra2, c.v3, a.k1 as ak1 +ORDER BY ck3, ck3_extra, ck3_extra2, c.v3 -- should be noop +; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_unmatched.cfg b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_unmatched.cfg new file mode 100644 index 0000000000..c13c3496d1 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_unmatched.cfg @@ -0,0 +1,3 @@ +in Input1 kv1_sorted1.txt +in Input2 kv2_sorted1.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_unmatched.sql b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_unmatched.sql new file mode 100644 index 0000000000..bc9b116f5d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_saves_output_sort_unmatched.sql @@ -0,0 +1,11 @@ +/* ignore yt detailed plan diff */ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="0"; +pragma yt.JoinAllowColumnRenames="true"; + +FROM Input1 AS a JOIN Input2 AS b ON b.k2 = a.k1 AND a.v1 = b.v2 +SELECT b.k2 AS bk2, b.v2 as bv2, a.k1 as ak1 +ORDER BY bv2 -- should be a separate sort +; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_semi_composite_to_inner-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_semi_composite_to_inner-off.cfg new file mode 100644 index 0000000000..d2366da42e --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_semi_composite_to_inner-off.cfg @@ -0,0 +1,6 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_semi_composite_to_inner.cfg b/yt/yql/tests/sql/suites/join/mergejoin_semi_composite_to_inner.cfg new file mode 100644 index 0000000000..829b6d19f2 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_semi_composite_to_inner.cfg @@ -0,0 +1,4 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_semi_composite_to_inner.sql b/yt/yql/tests/sql/suites/join/mergejoin_semi_composite_to_inner.sql new file mode 100644 index 0000000000..4897e2737b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_semi_composite_to_inner.sql @@ -0,0 +1,13 @@ +/* syntax version 1 */ +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="3"; +pragma yt.JoinAllowColumnRenames="true"; + +$semi = select * from Input3 as c join Input4 as d on c.k3 = d.k4; + +from $semi as semi +right semi join Input1 as a on a.k1 = semi.k3 and a.v1 = semi.v3 +join Input2 as b on b.k2 = a.k1 and b.v2 = a.v1 +select * order by u1; + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_semi_to_inner-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_semi_to_inner-off.cfg new file mode 100644 index 0000000000..aed2b8c61b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_semi_to_inner-off.cfg @@ -0,0 +1,4 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_semi_to_inner.cfg b/yt/yql/tests/sql/suites/join/mergejoin_semi_to_inner.cfg new file mode 100644 index 0000000000..6098eb907d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_semi_to_inner.cfg @@ -0,0 +1,2 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_semi_to_inner.sql b/yt/yql/tests/sql/suites/join/mergejoin_semi_to_inner.sql new file mode 100644 index 0000000000..3778d9f05b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_semi_to_inner.sql @@ -0,0 +1,10 @@ +/* syntax version 1 */ +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="0"; +pragma yt.JoinAllowColumnRenames="true"; + +from Input1 as a +left semi join Input2 as b on a.k1 = b.k2 and a.v1 = b.v2 +select * order by u1 + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_small_primary-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_small_primary-off.cfg new file mode 100644 index 0000000000..1f7a620911 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_small_primary-off.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_small_primary.cfg b/yt/yql/tests/sql/suites/join/mergejoin_small_primary.cfg new file mode 100644 index 0000000000..df8cd9f2c7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_small_primary.cfg @@ -0,0 +1,2 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_small_primary.sql b/yt/yql/tests/sql/suites/join/mergejoin_small_primary.sql new file mode 100644 index 0000000000..be3ce895b1 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_small_primary.sql @@ -0,0 +1,10 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinAllowColumnRenames="true"; +pragma yt.JoinMergeUseSmallAsPrimary="true"; + +-- Input2 is smaller than Input1 +select * from Input2 as b join Input1 as a on a.k1 = b.k2 +order by a.v1, b.v2; + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_inner.cfg b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_inner.cfg new file mode 100644 index 0000000000..1af5db027b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_inner.cfg @@ -0,0 +1,3 @@ +providers yt +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_inner.sql b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_inner.sql new file mode 100644 index 0000000000..86a76d3573 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_inner.sql @@ -0,0 +1,15 @@ +/* ignore yt detailed plan diff */ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinAllowColumnRenames="true"; + +$inner = + (FROM Input1 AS a JOIN Input2 AS b ON b.k2 = a.k1 AND a.v1 = b.v2 + SELECT b.k2 AS bk2, b.k2 AS bk2_extra, b.v2 AS bv2, a.k1 as ak1); + +SELECT * FROM $inner ORDER BY bv2, bk2_extra; +SELECT * FROM $inner ORDER BY bk2, bk2_extra, bv2; +SELECT * FROM $inner ORDER BY bk2_extra, bv2; +SELECT * FROM $inner ORDER BY bk2_extra; +SELECT * FROM $inner ORDER BY ak1; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_left.cfg b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_left.cfg new file mode 100644 index 0000000000..2de8793752 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_left.cfg @@ -0,0 +1,3 @@ +providers yt +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_left.sql b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_left.sql new file mode 100644 index 0000000000..16c281d696 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_left.sql @@ -0,0 +1,14 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinAllowColumnRenames="true"; + +$left = + (FROM Input1 AS a LEFT JOIN Input2 AS b ON b.k2 = a.k1 + SELECT b.k2 AS bk2, b.k2 AS bk2_extra, b.v2 AS bv2, a.k1 as ak1); + +SELECT * FROM $left ORDER BY bv2, bk2_extra; +SELECT * FROM $left ORDER BY bk2, bk2_extra, bv2; +SELECT * FROM $left ORDER BY bk2_extra, bv2; +SELECT * FROM $left ORDER BY bk2_extra; +SELECT * FROM $left ORDER BY ak1; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_nomatch.cfg b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_nomatch.cfg new file mode 100644 index 0000000000..2de8793752 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_nomatch.cfg @@ -0,0 +1,3 @@ +providers yt +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_nomatch.sql b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_nomatch.sql new file mode 100644 index 0000000000..ed613582c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_nomatch.sql @@ -0,0 +1,8 @@ +/* ignore yt detailed plan diff */ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinAllowColumnRenames="true"; + +FROM Input1 AS a JOIN Input2 AS b ON b.k2 = a.k1 +SELECT b.v2 AS bv2, a.k1 as ak1 ORDER BY ak1, bv2; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_right.cfg b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_right.cfg new file mode 100644 index 0000000000..1af5db027b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_right.cfg @@ -0,0 +1,3 @@ +providers yt +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_right.sql b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_right.sql new file mode 100644 index 0000000000..2e4238f110 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_sorts_output_for_sort_right.sql @@ -0,0 +1,14 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinAllowColumnRenames="true"; + +$right = + (FROM Input1 AS a RIGHT JOIN Input2 AS b ON b.k2 = a.k1 AND a.v1 = b.v2 + SELECT b.k2 AS bk2, b.k2 AS bk2_extra, b.v2 AS bv2, a.k1 as ak1, a.v1 as av1); + +SELECT * FROM $right ORDER BY bv2, bk2_extra; +SELECT * FROM $right ORDER BY bk2, bk2_extra, bv2; +SELECT * FROM $right ORDER BY bk2_extra, bv2; +SELECT * FROM $right ORDER BY bk2_extra; +SELECT * FROM $right ORDER BY ak1, av1; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_unused_keys.cfg b/yt/yql/tests/sql/suites/join/mergejoin_unused_keys.cfg new file mode 100644 index 0000000000..9a930ffe48 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_unused_keys.cfg @@ -0,0 +1,6 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +in Input5 kv5_sorted.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_unused_keys.sql b/yt/yql/tests/sql/suites/join/mergejoin_unused_keys.sql new file mode 100644 index 0000000000..78bc056914 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_unused_keys.sql @@ -0,0 +1,12 @@ +/* syntax version 1 */ +use plato; +pragma yt.JoinMergeTablesLimit="10"; + +select + +v3 + +from Input1 as a +join Input2 as b on (a.k1 = b.k2) +join Input3 as c on (a.k1 = c.k3) +order by v3; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names-off.cfg new file mode 100644 index 0000000000..8e80f78742 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names-off.cfg @@ -0,0 +1,4 @@ +in SortedByKey sorted_uniq.txt +in SortedBySubkeyValue sorted_uniq1.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names.cfg b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names.cfg new file mode 100644 index 0000000000..ea9e6ce443 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names.cfg @@ -0,0 +1,2 @@ +in SortedByKey sorted_uniq.txt +in SortedBySubkeyValue sorted_uniq1.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names.sql b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names.sql new file mode 100644 index 0000000000..7fe038ad6a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names.sql @@ -0,0 +1,19 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="3.0"; +pragma yt.JoinAllowColumnRenames="true"; + + +FROM SortedBySubkeyValue as a JOIN SortedByKey as b on a.subkey=b.key +SELECT * ORDER BY a.subkey, b.key; + +FROM SortedBySubkeyValue as a JOIN SortedByKey as b on a.subkey=b.key +SELECT a.subkey, b.key ORDER BY a.subkey, b.key; + + +FROM SortedBySubkeyValue as a LEFT JOIN SortedByKey as b on a.subkey=b.key +SELECT * ORDER BY a.subkey; + +FROM SortedBySubkeyValue as a RIGHT JOIN SortedByKey as b on a.subkey=b.key +SELECT * ORDER BY b.key; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nested-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nested-off.cfg new file mode 100644 index 0000000000..5d2e73b721 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nested-off.cfg @@ -0,0 +1,5 @@ +in Input sorted_by_key1.txt +in Input1 sorted_by_k1.txt +in Input2 sorted_by_k2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nested.cfg b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nested.cfg new file mode 100644 index 0000000000..15fbfe10b8 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nested.cfg @@ -0,0 +1,3 @@ +in Input sorted_by_key1.txt +in Input1 sorted_by_k1.txt +in Input2 sorted_by_k2.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nested.sql b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nested.sql new file mode 100644 index 0000000000..427553d99e --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nested.sql @@ -0,0 +1,11 @@ +/* ignore yt detailed plan diff */ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="3.0"; +pragma yt.JoinAllowColumnRenames="true"; + +FROM Input AS a JOIN Input1 AS b ON b.k1=a.key + JOIN Input2 AS c ON a.key=c.k2 +SELECT a.value as avalue, b.v1, c.k2 as ck2 ORDER BY avalue, b.v1, ck2; + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nonsorted-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nonsorted-off.cfg new file mode 100644 index 0000000000..ec195ece46 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nonsorted-off.cfg @@ -0,0 +1,4 @@ +in Unsorted input2.txt +in SortedBySubkeyValue sorted_uniq1.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nonsorted.cfg b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nonsorted.cfg new file mode 100644 index 0000000000..e049d17dbf --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nonsorted.cfg @@ -0,0 +1,2 @@ +in Unsorted input2.txt +in SortedBySubkeyValue sorted_uniq1.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nonsorted.sql b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nonsorted.sql new file mode 100644 index 0000000000..d97fb38e04 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_nonsorted.sql @@ -0,0 +1,11 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="100.0"; +pragma yt.JoinAllowColumnRenames="true"; + +$unsorted = (SELECT key, CAST((CAST(subkey as Int32) + 2) as String) as sk, value as val FROM Unsorted); + +FROM SortedBySubkeyValue AS a JOIN $unsorted AS b ON a.subkey=b.sk AND a.value=b.val +SELECT * ORDER BY a.key,b.key; + diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_norename-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_norename-off.cfg new file mode 100644 index 0000000000..8e80f78742 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_norename-off.cfg @@ -0,0 +1,4 @@ +in SortedByKey sorted_uniq.txt +in SortedBySubkeyValue sorted_uniq1.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_norename.cfg b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_norename.cfg new file mode 100644 index 0000000000..ea9e6ce443 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_norename.cfg @@ -0,0 +1,2 @@ +in SortedByKey sorted_uniq.txt +in SortedBySubkeyValue sorted_uniq1.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_norename.sql b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_norename.sql new file mode 100644 index 0000000000..07ad22faf7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_different_key_names_norename.sql @@ -0,0 +1,19 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="3.0"; +pragma yt.JoinAllowColumnRenames="false"; + + +FROM SortedBySubkeyValue as a JOIN SortedByKey as b on a.subkey=b.key +SELECT * ORDER BY a.subkey, b.key; + +FROM SortedBySubkeyValue as a JOIN SortedByKey as b on a.subkey=b.key +SELECT a.subkey, b.key ORDER BY a.subkey, b.key; + + +FROM SortedBySubkeyValue as a LEFT JOIN SortedByKey as b on a.subkey=b.key +SELECT * ORDER BY a.subkey; + +FROM SortedBySubkeyValue as a RIGHT JOIN SortedByKey as b on a.subkey=b.key +SELECT * ORDER BY b.key; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_reverse_key_order-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_with_reverse_key_order-off.cfg new file mode 100644 index 0000000000..01597c0916 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_reverse_key_order-off.cfg @@ -0,0 +1,4 @@ +in Input1 mergejoin_input1.txt +in Input2 mergejoin_input2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_reverse_key_order.cfg b/yt/yql/tests/sql/suites/join/mergejoin_with_reverse_key_order.cfg new file mode 100644 index 0000000000..3ea969d8b4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_reverse_key_order.cfg @@ -0,0 +1,2 @@ +in Input1 mergejoin_input1.txt +in Input2 mergejoin_input2.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_reverse_key_order.sql b/yt/yql/tests/sql/suites/join/mergejoin_with_reverse_key_order.sql new file mode 100644 index 0000000000..5cc0731682 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_reverse_key_order.sql @@ -0,0 +1,10 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="3.0"; + +SELECT pd.Text + FROM Input2 as m2 + INNER JOIN Input1 as pd + USING (BaseNo, PhraseID) +ORDER BY pd.Text; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_table_range-off.cfg b/yt/yql/tests/sql/suites/join/mergejoin_with_table_range-off.cfg new file mode 100644 index 0000000000..7dd23dd911 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_table_range-off.cfg @@ -0,0 +1,6 @@ +in Left1 sorted_by_key1.txt +in Left2 sorted_by_key2.txt +in Right1 sorted_by_key3.txt +in Right2 sorted_by_key4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_table_range.cfg b/yt/yql/tests/sql/suites/join/mergejoin_with_table_range.cfg new file mode 100644 index 0000000000..5182327159 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_table_range.cfg @@ -0,0 +1,4 @@ +in Left1 sorted_by_key1.txt +in Left2 sorted_by_key2.txt +in Right1 sorted_by_key3.txt +in Right2 sorted_by_key4.txt diff --git a/yt/yql/tests/sql/suites/join/mergejoin_with_table_range.sql b/yt/yql/tests/sql/suites/join/mergejoin_with_table_range.sql new file mode 100644 index 0000000000..95f96e883f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/mergejoin_with_table_range.sql @@ -0,0 +1,11 @@ +PRAGMA DisableSimpleColumns; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="3.0"; + +SELECT * + FROM CONCAT("Left1", "Left2") as a + INNER JOIN CONCAT("Right1", "Right2") as b + USING(key) +ORDER BY a.value,b.value; + diff --git a/yt/yql/tests/sql/suites/join/nested_semi_join-off.cfg b/yt/yql/tests/sql/suites/join/nested_semi_join-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/nested_semi_join-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/nested_semi_join.cfg b/yt/yql/tests/sql/suites/join/nested_semi_join.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/nested_semi_join.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/nested_semi_join.sql b/yt/yql/tests/sql/suites/join/nested_semi_join.sql new file mode 100644 index 0000000000..f8b8277292 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/nested_semi_join.sql @@ -0,0 +1,9 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +use plato; + +$w1 = (select u.subkey as subkey, u.value as value from Input1 as u left semi join Input1 as v on u.key == v.key); + +$t1 = (select x.value from Input1 as x left semi join $w1 as y on x.subkey == y.subkey); + +select * from $t1; diff --git a/yt/yql/tests/sql/suites/join/no_empty_join_for_dyn-off.cfg b/yt/yql/tests/sql/suites/join/no_empty_join_for_dyn-off.cfg new file mode 100644 index 0000000000..893ac062c3 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/no_empty_join_for_dyn-off.cfg @@ -0,0 +1,5 @@ +in Input1 empty_dynamic.txt +in Input2 empty_dynamic.txt +providers yt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/no_empty_join_for_dyn.cfg b/yt/yql/tests/sql/suites/join/no_empty_join_for_dyn.cfg new file mode 100644 index 0000000000..9b9c114a16 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/no_empty_join_for_dyn.cfg @@ -0,0 +1,3 @@ +in Input1 empty_dynamic.txt +in Input2 empty_dynamic.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/no_empty_join_for_dyn.sql b/yt/yql/tests/sql/suites/join/no_empty_join_for_dyn.sql new file mode 100644 index 0000000000..cb7b8b50d4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/no_empty_join_for_dyn.sql @@ -0,0 +1,6 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +SELECT * +FROM plato.Input1 as A +INNER JOIN plato.Input2 as B +ON A.key=B.key; diff --git a/yt/yql/tests/sql/suites/join/nopushdown_filter_over_inner-off.cfg b/yt/yql/tests/sql/suites/join/nopushdown_filter_over_inner-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/nopushdown_filter_over_inner-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/nopushdown_filter_over_inner.cfg b/yt/yql/tests/sql/suites/join/nopushdown_filter_over_inner.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/nopushdown_filter_over_inner.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/nopushdown_filter_over_inner.sql b/yt/yql/tests/sql/suites/join/nopushdown_filter_over_inner.sql new file mode 100644 index 0000000000..ed4f7c70ca --- /dev/null +++ b/yt/yql/tests/sql/suites/join/nopushdown_filter_over_inner.sql @@ -0,0 +1,6 @@ +/* postgres can not */ +PRAGMA DisableSimpleColumns; +use plato; + +-- should not pushdown +select * from Input1 as a inner join Input2 as b on a.key = b.key where Unwrap(cast(a.key as Int32)) > 100 order by a.key; diff --git a/yt/yql/tests/sql/suites/join/nopushdown_filter_with_depends_on-off.cfg b/yt/yql/tests/sql/suites/join/nopushdown_filter_with_depends_on-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/nopushdown_filter_with_depends_on-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/nopushdown_filter_with_depends_on.cfg b/yt/yql/tests/sql/suites/join/nopushdown_filter_with_depends_on.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/nopushdown_filter_with_depends_on.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/nopushdown_filter_with_depends_on.sql b/yt/yql/tests/sql/suites/join/nopushdown_filter_with_depends_on.sql new file mode 100644 index 0000000000..6066449757 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/nopushdown_filter_with_depends_on.sql @@ -0,0 +1,8 @@ +/* postgres can not */ +/* hybridfile can not */ +/* custom check: len(yt_res_yson[0][b'Write'][0][b'Data']) < 4 */ +use plato; + +-- should not pushdown +select * from Input1 as a left semi join Input2 as b using(key) where Random(TableRow()) < 0.1 order by key; + diff --git a/yt/yql/tests/sql/suites/join/opt_on_opt_side-off.cfg b/yt/yql/tests/sql/suites/join/opt_on_opt_side-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/opt_on_opt_side-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/opt_on_opt_side.cfg b/yt/yql/tests/sql/suites/join/opt_on_opt_side.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/opt_on_opt_side.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/opt_on_opt_side.sql b/yt/yql/tests/sql/suites/join/opt_on_opt_side.sql new file mode 100644 index 0000000000..f4abb9909e --- /dev/null +++ b/yt/yql/tests/sql/suites/join/opt_on_opt_side.sql @@ -0,0 +1,20 @@ +PRAGMA DisableSimpleColumns; +use plato; + +SELECT + A.key, + B.subkey +FROM + Input2 AS A +LEFT JOIN + ( + SELECT + key, + CAST(key AS INT) AS subkey + FROM + Input3 + ) AS B +ON + A.key == B.key +ORDER BY A.key +; diff --git a/yt/yql/tests/sql/suites/join/opt_on_opt_side_with_group-off.cfg b/yt/yql/tests/sql/suites/join/opt_on_opt_side_with_group-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/opt_on_opt_side_with_group-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/opt_on_opt_side_with_group.cfg b/yt/yql/tests/sql/suites/join/opt_on_opt_side_with_group.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/opt_on_opt_side_with_group.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/opt_on_opt_side_with_group.sql b/yt/yql/tests/sql/suites/join/opt_on_opt_side_with_group.sql new file mode 100644 index 0000000000..f01cd2147d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/opt_on_opt_side_with_group.sql @@ -0,0 +1,24 @@ +PRAGMA DisableSimpleColumns; +use plato; + +SELECT + A.key as key, + B.subkey, + COUNT(*) AS count +FROM + Input2 AS A +LEFT JOIN + ( + SELECT + key, + CAST(key AS INT) AS subkey + FROM + Input3 + ) AS B +ON + A.key == B.key +GROUP BY + A.key, B.subkey +ORDER BY + key +; diff --git a/yt/yql/tests/sql/suites/join/order_of_qualified-off.cfg b/yt/yql/tests/sql/suites/join/order_of_qualified-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/order_of_qualified-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/order_of_qualified.cfg b/yt/yql/tests/sql/suites/join/order_of_qualified.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/order_of_qualified.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/order_of_qualified.sql b/yt/yql/tests/sql/suites/join/order_of_qualified.sql new file mode 100644 index 0000000000..a28e3beaea --- /dev/null +++ b/yt/yql/tests/sql/suites/join/order_of_qualified.sql @@ -0,0 +1,6 @@ +PRAGMA DisableSimpleColumns; +use plato; +SELECT b.*,1 as q,a.* +FROM Input2 AS a +JOIN Input3 AS b +ON a.value == b.value; diff --git a/yt/yql/tests/sql/suites/join/premap_common_cross-off.cfg b/yt/yql/tests/sql/suites/join/premap_common_cross-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_cross-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_common_cross.cfg b/yt/yql/tests/sql/suites/join/premap_common_cross.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_cross.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/premap_common_cross.sql b/yt/yql/tests/sql/suites/join/premap_common_cross.sql new file mode 100644 index 0000000000..2790c4a108 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_cross.sql @@ -0,0 +1,8 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; + +from (select key as akey, subkey, value as avalue from Input1) as a +cross join Input2 as b +select a.akey, a.subkey, b.subkey, b.value +order by a.akey, a.subkey, b.subkey, b.value; diff --git a/yt/yql/tests/sql/suites/join/premap_common_inner-off.cfg b/yt/yql/tests/sql/suites/join/premap_common_inner-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_inner-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_common_inner.cfg b/yt/yql/tests/sql/suites/join/premap_common_inner.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_inner.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/premap_common_inner.sql b/yt/yql/tests/sql/suites/join/premap_common_inner.sql new file mode 100644 index 0000000000..eab52d0662 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_inner.sql @@ -0,0 +1,8 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; + +from (select key, subkey, 1 as value from Input1) as a +join Input2 as b using(key) +select a.key, a.subkey, a.value, b.value +order by a.key; diff --git a/yt/yql/tests/sql/suites/join/premap_common_inner_both_sides-off.cfg b/yt/yql/tests/sql/suites/join/premap_common_inner_both_sides-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_inner_both_sides-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_common_inner_both_sides.cfg b/yt/yql/tests/sql/suites/join/premap_common_inner_both_sides.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_inner_both_sides.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/premap_common_inner_both_sides.sql b/yt/yql/tests/sql/suites/join/premap_common_inner_both_sides.sql new file mode 100644 index 0000000000..7689cc7fa6 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_inner_both_sides.sql @@ -0,0 +1,8 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; + +from (select key, subkey, 1 as value from Input1) as a +join (select key, subkey, 2 as value from Input2) as b using(key) +select a.key as key, a.subkey, a.value, b.subkey, b.value +order by key; diff --git a/yt/yql/tests/sql/suites/join/premap_common_inner_filter-off.cfg b/yt/yql/tests/sql/suites/join/premap_common_inner_filter-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_inner_filter-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_common_inner_filter.cfg b/yt/yql/tests/sql/suites/join/premap_common_inner_filter.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_inner_filter.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/premap_common_inner_filter.sql b/yt/yql/tests/sql/suites/join/premap_common_inner_filter.sql new file mode 100644 index 0000000000..24d54e5f9c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_inner_filter.sql @@ -0,0 +1,8 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; + +from (select key, subkey || key as subkey, value from Input1 where value != "ddd") as a +join Input2 as b using(key) +select a.key, a.subkey, b.value +order by a.key; diff --git a/yt/yql/tests/sql/suites/join/premap_common_left_cross-off.cfg b/yt/yql/tests/sql/suites/join/premap_common_left_cross-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_left_cross-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_common_left_cross.cfg b/yt/yql/tests/sql/suites/join/premap_common_left_cross.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_left_cross.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/premap_common_left_cross.sql b/yt/yql/tests/sql/suites/join/premap_common_left_cross.sql new file mode 100644 index 0000000000..a7c8302df9 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_left_cross.sql @@ -0,0 +1,13 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; + +$one = (select key, 1 as subkey, value from Input1); +$two = (select key, value from Input2); +$three = (select key, value, 2 as subkey from Input3); + +from $one as a +cross join $two as b +left join $three as c on (c.key = a.key and c.value = b.value) +select * order by a.key,a.subkey,b.key,b.value + diff --git a/yt/yql/tests/sql/suites/join/premap_common_multiparents-off.cfg b/yt/yql/tests/sql/suites/join/premap_common_multiparents-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_multiparents-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_common_multiparents.cfg b/yt/yql/tests/sql/suites/join/premap_common_multiparents.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_multiparents.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/premap_common_multiparents.sql b/yt/yql/tests/sql/suites/join/premap_common_multiparents.sql new file mode 100644 index 0000000000..e31ee06f4e --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_multiparents.sql @@ -0,0 +1,15 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; + +$map = (select key, subkey, 1 as value, 2 as another from Input1); + +from $map as a +join Input2 as b using(key) +select a.key, a.value, b.value +order by a.key,a.value; + +from $map as a +join Input3 as b using(key) +select a.key, a.value, a.subkey, b.value +order by a.key,a.value; diff --git a/yt/yql/tests/sql/suites/join/premap_common_multiparents_no_premap-off.cfg b/yt/yql/tests/sql/suites/join/premap_common_multiparents_no_premap-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_multiparents_no_premap-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_common_multiparents_no_premap.cfg b/yt/yql/tests/sql/suites/join/premap_common_multiparents_no_premap.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_multiparents_no_premap.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/premap_common_multiparents_no_premap.sql b/yt/yql/tests/sql/suites/join/premap_common_multiparents_no_premap.sql new file mode 100644 index 0000000000..e49c29fa42 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_multiparents_no_premap.sql @@ -0,0 +1,14 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; + +$map = (select key, subkey, 1 as value, 2 as another from Input1); + +from $map as a +join Input2 as b using(key) +select a.key, a.value, b.value +order by a.key,a.value; + +from $map as a +select a.key, a.value, a.subkey +order by a.key,a.value; diff --git a/yt/yql/tests/sql/suites/join/premap_common_right_tablecontent-off.cfg b/yt/yql/tests/sql/suites/join/premap_common_right_tablecontent-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_right_tablecontent-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_common_right_tablecontent.cfg b/yt/yql/tests/sql/suites/join/premap_common_right_tablecontent.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_right_tablecontent.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/premap_common_right_tablecontent.sql b/yt/yql/tests/sql/suites/join/premap_common_right_tablecontent.sql new file mode 100644 index 0000000000..1bd47b60a0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_right_tablecontent.sql @@ -0,0 +1,11 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; + + +$keys = (select key from Input3); + +from (select key, value, key IN $keys as flag from Input1) as a +right join (select key, key IN $keys as flag from Input2) as b using(key) +select a.key, a.value, a.flag, b.flag +order by a.key; diff --git a/yt/yql/tests/sql/suites/join/premap_common_semi-off.cfg b/yt/yql/tests/sql/suites/join/premap_common_semi-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_semi-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_common_semi.cfg b/yt/yql/tests/sql/suites/join/premap_common_semi.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_semi.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/premap_common_semi.sql b/yt/yql/tests/sql/suites/join/premap_common_semi.sql new file mode 100644 index 0000000000..343b8748b7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_common_semi.sql @@ -0,0 +1,8 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; + +from (select key, subkey as asubkey, value from Input1) as a +left semi join (select key, 1 as value from Input2) as b using(key) +select a.key, a.asubkey +order by a.key; diff --git a/yt/yql/tests/sql/suites/join/premap_context_dep-off.cfg b/yt/yql/tests/sql/suites/join/premap_context_dep-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_context_dep-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_context_dep.cfg b/yt/yql/tests/sql/suites/join/premap_context_dep.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_context_dep.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/premap_context_dep.sql b/yt/yql/tests/sql/suites/join/premap_context_dep.sql new file mode 100644 index 0000000000..277a634626 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_context_dep.sql @@ -0,0 +1,8 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; + +from (select key, subkey || key as subkey, value, TableRecordIndex() as tr from Input1) as a +join Input2 as b using(key) +select a.key, a.subkey, a.tr, b.value +order by a.key, a.tr; diff --git a/yt/yql/tests/sql/suites/join/premap_map_cross-off.cfg b/yt/yql/tests/sql/suites/join/premap_map_cross-off.cfg new file mode 100644 index 0000000000..287d1fa1ed --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_map_cross-off.cfg @@ -0,0 +1,5 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +in Input3 sorted_by_kv3.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_map_cross.cfg b/yt/yql/tests/sql/suites/join/premap_map_cross.cfg new file mode 100644 index 0000000000..88a5beef60 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_map_cross.cfg @@ -0,0 +1,3 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +in Input3 sorted_by_kv3.txt diff --git a/yt/yql/tests/sql/suites/join/premap_map_cross.sql b/yt/yql/tests/sql/suites/join/premap_map_cross.sql new file mode 100644 index 0000000000..75ec5b34cf --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_map_cross.sql @@ -0,0 +1,9 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; +pragma yt.MapJoinLimit="1m"; + +from (select k1, v1, Just(1) as u1 from Input1) as a +cross join (select k2, v2, Just(2) as u2 from Input2) as b +select * +order by a.k1,b.k2,a.v1,b.v2; diff --git a/yt/yql/tests/sql/suites/join/premap_map_inner-off.cfg b/yt/yql/tests/sql/suites/join/premap_map_inner-off.cfg new file mode 100644 index 0000000000..287d1fa1ed --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_map_inner-off.cfg @@ -0,0 +1,5 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +in Input3 sorted_by_kv3.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_map_inner.cfg b/yt/yql/tests/sql/suites/join/premap_map_inner.cfg new file mode 100644 index 0000000000..88a5beef60 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_map_inner.cfg @@ -0,0 +1,3 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +in Input3 sorted_by_kv3.txt diff --git a/yt/yql/tests/sql/suites/join/premap_map_inner.sql b/yt/yql/tests/sql/suites/join/premap_map_inner.sql new file mode 100644 index 0000000000..737b8a2de0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_map_inner.sql @@ -0,0 +1,9 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; +pragma yt.MapJoinLimit="1m"; + +from (select k1, v1 as u1 from Input1) as a +join (select k2, v2 as u2 from Input2) as b on a.k1 = b.k2 +select a.k1,a.u1,b.u2 +order by a.k1,a.u1; diff --git a/yt/yql/tests/sql/suites/join/premap_map_semi-off.cfg b/yt/yql/tests/sql/suites/join/premap_map_semi-off.cfg new file mode 100644 index 0000000000..287d1fa1ed --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_map_semi-off.cfg @@ -0,0 +1,5 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +in Input3 sorted_by_kv3.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_map_semi.cfg b/yt/yql/tests/sql/suites/join/premap_map_semi.cfg new file mode 100644 index 0000000000..88a5beef60 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_map_semi.cfg @@ -0,0 +1,3 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +in Input3 sorted_by_kv3.txt diff --git a/yt/yql/tests/sql/suites/join/premap_map_semi.sql b/yt/yql/tests/sql/suites/join/premap_map_semi.sql new file mode 100644 index 0000000000..c8ea1a1ef8 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_map_semi.sql @@ -0,0 +1,9 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; +pragma yt.MapJoinLimit="1m"; + +from (select k1, v1 || u1 as v1 from Input1) as a +left semi join (select k2, u2 || v2 as u2 from Input2) as b on a.k1 = b.k2 +select * +order by a.k1,a.v1; diff --git a/yt/yql/tests/sql/suites/join/premap_merge_extrasort1-off.cfg b/yt/yql/tests/sql/suites/join/premap_merge_extrasort1-off.cfg new file mode 100644 index 0000000000..01597c0916 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_merge_extrasort1-off.cfg @@ -0,0 +1,4 @@ +in Input1 mergejoin_input1.txt +in Input2 mergejoin_input2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_merge_extrasort1.cfg b/yt/yql/tests/sql/suites/join/premap_merge_extrasort1.cfg new file mode 100644 index 0000000000..3ea969d8b4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_merge_extrasort1.cfg @@ -0,0 +1,2 @@ +in Input1 mergejoin_input1.txt +in Input2 mergejoin_input2.txt diff --git a/yt/yql/tests/sql/suites/join/premap_merge_extrasort1.sql b/yt/yql/tests/sql/suites/join/premap_merge_extrasort1.sql new file mode 100644 index 0000000000..46cc25e42e --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_merge_extrasort1.sql @@ -0,0 +1,12 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="3.0"; + + +SELECT pd.Text, pd.PhraseID, m2.BaseNo + FROM Input2 as m2 + INNER JOIN (select PhraseID, BaseNo, True as Text from Input1) as pd + USING (BaseNo, PhraseID) +ORDER BY pd.PhraseID, m2.BaseNo; diff --git a/yt/yql/tests/sql/suites/join/premap_merge_extrasort2-off.cfg b/yt/yql/tests/sql/suites/join/premap_merge_extrasort2-off.cfg new file mode 100644 index 0000000000..01597c0916 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_merge_extrasort2-off.cfg @@ -0,0 +1,4 @@ +in Input1 mergejoin_input1.txt +in Input2 mergejoin_input2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_merge_extrasort2.cfg b/yt/yql/tests/sql/suites/join/premap_merge_extrasort2.cfg new file mode 100644 index 0000000000..3ea969d8b4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_merge_extrasort2.cfg @@ -0,0 +1,2 @@ +in Input1 mergejoin_input1.txt +in Input2 mergejoin_input2.txt diff --git a/yt/yql/tests/sql/suites/join/premap_merge_extrasort2.sql b/yt/yql/tests/sql/suites/join/premap_merge_extrasort2.sql new file mode 100644 index 0000000000..b8d4f8e5f3 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_merge_extrasort2.sql @@ -0,0 +1,12 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="3.0"; + + +SELECT pd.Text, m2.BannerID + FROM (select BaseNo, PhraseID, 100 as BannerID from Input2) as m2 + INNER JOIN (select PhraseID, BaseNo, 999 as Text from Input1) as pd + USING (BaseNo, PhraseID) +ORDER BY pd.Text, m2.BannerID; diff --git a/yt/yql/tests/sql/suites/join/premap_merge_inner-off.cfg b/yt/yql/tests/sql/suites/join/premap_merge_inner-off.cfg new file mode 100644 index 0000000000..287d1fa1ed --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_merge_inner-off.cfg @@ -0,0 +1,5 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +in Input3 sorted_by_kv3.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_merge_inner.cfg b/yt/yql/tests/sql/suites/join/premap_merge_inner.cfg new file mode 100644 index 0000000000..88a5beef60 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_merge_inner.cfg @@ -0,0 +1,3 @@ +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv2.txt +in Input3 sorted_by_kv3.txt diff --git a/yt/yql/tests/sql/suites/join/premap_merge_inner.sql b/yt/yql/tests/sql/suites/join/premap_merge_inner.sql new file mode 100644 index 0000000000..2557b94ac4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_merge_inner.sql @@ -0,0 +1,9 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; +pragma yt.JoinMergeTablesLimit="10"; + +from (select k1, v1 as u1 from Input1) as a +join (select k2, v2 as u2 from Input2) as b on a.k1 = b.k2 +select a.k1,a.u1,b.u2 +order by a.k1,a.u1; diff --git a/yt/yql/tests/sql/suites/join/premap_merge_with_remap-off.cfg b/yt/yql/tests/sql/suites/join/premap_merge_with_remap-off.cfg new file mode 100644 index 0000000000..01597c0916 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_merge_with_remap-off.cfg @@ -0,0 +1,4 @@ +in Input1 mergejoin_input1.txt +in Input2 mergejoin_input2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_merge_with_remap.cfg b/yt/yql/tests/sql/suites/join/premap_merge_with_remap.cfg new file mode 100644 index 0000000000..3ea969d8b4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_merge_with_remap.cfg @@ -0,0 +1,2 @@ +in Input1 mergejoin_input1.txt +in Input2 mergejoin_input2.txt diff --git a/yt/yql/tests/sql/suites/join/premap_merge_with_remap.sql b/yt/yql/tests/sql/suites/join/premap_merge_with_remap.sql new file mode 100644 index 0000000000..6a582ffa76 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_merge_with_remap.sql @@ -0,0 +1,17 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; +pragma yt.JoinMergeTablesLimit="10"; +pragma yt.JoinMergeUnsortedFactor="3.0"; + +INSERT INTO @inp2 +SELECT * FROM Input2 +ORDER BY BaseNo DESC; + +COMMIT; + +SELECT pd.BaseNo, m2.PhraseID, m2.Extra + FROM Input1 as pd + LEFT JOIN (select BaseNo, PhraseID, 1 as Extra from @inp2) as m2 + USING (BaseNo, PhraseID) +ORDER BY pd.BaseNo, m2.PhraseID, m2.Extra; diff --git a/yt/yql/tests/sql/suites/join/premap_no_premap-off.cfg b/yt/yql/tests/sql/suites/join/premap_no_premap-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_no_premap-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_no_premap.cfg b/yt/yql/tests/sql/suites/join/premap_no_premap.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_no_premap.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/premap_no_premap.sql b/yt/yql/tests/sql/suites/join/premap_no_premap.sql new file mode 100644 index 0000000000..533fa758ce --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_no_premap.sql @@ -0,0 +1,27 @@ +PRAGMA DisableSimpleColumns; +PRAGMA DisablePullUpFlatMapOverJoin; +use plato; + +-- not renaming +from (select key, subkey || key as subkey, value from Input1) as a +join Input2 as b using(key) +select a.key, a.subkey, b.value +order by a.key; + +-- not fixed size +from (select key, "aaa" as subkey, value from Input1) as a +join Input2 as b using(key) +select a.key, a.subkey, b.value +order by a.key; + +-- to many Justs +from (select key, Just(Just(1)) as subkey, value from Input1) as a +join Input2 as b using(key) +select a.key, a.subkey, b.value +order by a.key; + +-- container +from (select key, AsTuple(1) as subkey, value from Input1) as a +join Input2 as b using(key) +select a.key, a.subkey, b.value +order by a.key; diff --git a/yt/yql/tests/sql/suites/join/premap_nonseq_flatmap-off.cfg b/yt/yql/tests/sql/suites/join/premap_nonseq_flatmap-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_nonseq_flatmap-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/premap_nonseq_flatmap.cfg b/yt/yql/tests/sql/suites/join/premap_nonseq_flatmap.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_nonseq_flatmap.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/premap_nonseq_flatmap.sql b/yt/yql/tests/sql/suites/join/premap_nonseq_flatmap.sql new file mode 100644 index 0000000000..0163d931ba --- /dev/null +++ b/yt/yql/tests/sql/suites/join/premap_nonseq_flatmap.sql @@ -0,0 +1,11 @@ +PRAGMA DisableSimpleColumns; +use plato; + +$hashes = ( + SELECT multiplier AS hash + FROM (SELECT ListFromRange(0, 3) AS multiplier) + FLATTEN BY multiplier +); + +SELECT * FROM Input1 AS a CROSS JOIN $hashes AS h +ORDER BY a.key,a.subkey,h.hash; diff --git a/yt/yql/tests/sql/suites/join/pullup_context_dep-off.cfg b/yt/yql/tests/sql/suites/join/pullup_context_dep-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_context_dep-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/pullup_context_dep.cfg b/yt/yql/tests/sql/suites/join/pullup_context_dep.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_context_dep.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/pullup_context_dep.sql b/yt/yql/tests/sql/suites/join/pullup_context_dep.sql new file mode 100644 index 0000000000..5c8b94fc25 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_context_dep.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +use plato; + +from (select key, subkey || key as subkey, value, TablePath() as tp from Input1) as a +join Input2 as b using(key) +select a.key, a.subkey, a.tp, b.value +order by a.key, a.tp; diff --git a/yt/yql/tests/sql/suites/join/pullup_cross-off.cfg b/yt/yql/tests/sql/suites/join/pullup_cross-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_cross-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/pullup_cross.cfg b/yt/yql/tests/sql/suites/join/pullup_cross.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_cross.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/pullup_cross.sql b/yt/yql/tests/sql/suites/join/pullup_cross.sql new file mode 100644 index 0000000000..7b5f75f0ba --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_cross.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +use plato; + +from (select key, subkey || key as subkey, value || "v" as value from Input1) as a +cross join Input2 as b +select a.key, a.subkey, b.subkey, b.value +order by a.key, a.subkey, b.subkey, b.value; diff --git a/yt/yql/tests/sql/suites/join/pullup_exclusion-off.cfg b/yt/yql/tests/sql/suites/join/pullup_exclusion-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_exclusion-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/pullup_exclusion.cfg b/yt/yql/tests/sql/suites/join/pullup_exclusion.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_exclusion.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/pullup_exclusion.sql b/yt/yql/tests/sql/suites/join/pullup_exclusion.sql new file mode 100644 index 0000000000..b865107bbf --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_exclusion.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +use plato; + +from (select key, subkey || key as subkey, value from Input1) as a +exclusion join (select key || subkey as subkey, key, 1 as value from Input2) as b on a.key = b.key +select a.key as akey, b.key as bkey, a.subkey, b.subkey, b.value +order by akey; diff --git a/yt/yql/tests/sql/suites/join/pullup_inner-off.cfg b/yt/yql/tests/sql/suites/join/pullup_inner-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_inner-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/pullup_inner.cfg b/yt/yql/tests/sql/suites/join/pullup_inner.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_inner.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/pullup_inner.sql b/yt/yql/tests/sql/suites/join/pullup_inner.sql new file mode 100644 index 0000000000..097302e12e --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_inner.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +use plato; + +from (select key, subkey || key as subkey, value from Input1) as a +join (select key || subkey as subkey, key, 1 as value from Input2) as b on a.key = b.key +select a.key as akey, b.key as bkey, a.subkey, b.subkey, b.value +order by akey; diff --git a/yt/yql/tests/sql/suites/join/pullup_left-off.cfg b/yt/yql/tests/sql/suites/join/pullup_left-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_left-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/pullup_left.cfg b/yt/yql/tests/sql/suites/join/pullup_left.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_left.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/pullup_left.sql b/yt/yql/tests/sql/suites/join/pullup_left.sql new file mode 100644 index 0000000000..1784fea6cc --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_left.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +use plato; + +from (select key, subkey || key as subkey, value from Input1) as a +left join (select key || subkey as subkey, key, 1 as value from Input2) as b on a.key = b.key +select a.key as akey, b.key as bkey, a.subkey, b.subkey, b.value +order by akey; diff --git a/yt/yql/tests/sql/suites/join/pullup_left_semi-off.cfg b/yt/yql/tests/sql/suites/join/pullup_left_semi-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_left_semi-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/pullup_left_semi.cfg b/yt/yql/tests/sql/suites/join/pullup_left_semi.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_left_semi.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/pullup_left_semi.sql b/yt/yql/tests/sql/suites/join/pullup_left_semi.sql new file mode 100644 index 0000000000..feeec671b6 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_left_semi.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +use plato; + +from (select key, subkey || key as subkey, value from Input1) as a +left semi join (select key || subkey as subkey, key, 1 as value from Input2) as b on a.key = b.key +select a.key as akey, a.subkey +order by akey; diff --git a/yt/yql/tests/sql/suites/join/pullup_null_column-off.cfg b/yt/yql/tests/sql/suites/join/pullup_null_column-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_null_column-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/pullup_null_column.cfg b/yt/yql/tests/sql/suites/join/pullup_null_column.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_null_column.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/pullup_null_column.sql b/yt/yql/tests/sql/suites/join/pullup_null_column.sql new file mode 100644 index 0000000000..d7a5c88783 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_null_column.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +use plato; + +from Input1 as a +left join (select key, null as subkey, 1 as value from Input2) as b on a.key = b.key +select a.key as akey, b.key as bkey, a.subkey, b.subkey, b.value +order by akey; diff --git a/yt/yql/tests/sql/suites/join/pullup_random-off.cfg b/yt/yql/tests/sql/suites/join/pullup_random-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_random-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/pullup_random.cfg b/yt/yql/tests/sql/suites/join/pullup_random.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_random.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/pullup_random.sql b/yt/yql/tests/sql/suites/join/pullup_random.sql new file mode 100644 index 0000000000..f884b2d8fb --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_random.sql @@ -0,0 +1,8 @@ +/* kikimr can not - due to random */ +PRAGMA DisableSimpleColumns; +use plato; + +from (select key, subkey || key as subkey, value, RANDOM(value || "x") <= 1.0 as rn from Input1) as a +join Input2 as b using(key) +select a.key, a.subkey, a.rn, b.value +order by a.key, a.rn; diff --git a/yt/yql/tests/sql/suites/join/pullup_renaming-off.cfg b/yt/yql/tests/sql/suites/join/pullup_renaming-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_renaming-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/pullup_renaming.cfg b/yt/yql/tests/sql/suites/join/pullup_renaming.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_renaming.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/pullup_renaming.sql b/yt/yql/tests/sql/suites/join/pullup_renaming.sql new file mode 100644 index 0000000000..0f13acd39f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_renaming.sql @@ -0,0 +1,8 @@ +PRAGMA DisableSimpleColumns; +use plato; + +from (select key as akey1, key as akey2, subkey || key as subkey, value from Input1) as a +left join (select key || subkey as subkey, key as bkey1, key as bkey2, 1 as value from Input2) as b +on a.akey1 = b.bkey1 and a.akey1 = b.bkey2 and a.akey2 = b.bkey1 +select a.akey1 as akey1, b.bkey1 as bkey1, a.subkey, b.subkey, b.value +order by akey1, bkey1; diff --git a/yt/yql/tests/sql/suites/join/pullup_rownumber-off.cfg b/yt/yql/tests/sql/suites/join/pullup_rownumber-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_rownumber-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/pullup_rownumber.cfg b/yt/yql/tests/sql/suites/join/pullup_rownumber.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_rownumber.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/pullup_rownumber.sql b/yt/yql/tests/sql/suites/join/pullup_rownumber.sql new file mode 100644 index 0000000000..a40f65b939 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pullup_rownumber.sql @@ -0,0 +1,7 @@ +PRAGMA DisableSimpleColumns; +use plato; + +from (select key, subkey || key as subkey, value, ROW_NUMBER() over w as rn from Input1 window w as ()) as a +join Input2 as b using(key) +select a.key, a.subkey, a.rn, b.value +order by a.key, a.rn; diff --git a/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_assume_strict-off.cfg b/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_assume_strict-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_assume_strict-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_assume_strict.cfg b/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_assume_strict.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_assume_strict.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_assume_strict.sql b/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_assume_strict.sql new file mode 100644 index 0000000000..e6fd2ce9af --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_assume_strict.sql @@ -0,0 +1,6 @@ +/* postgres can not */ +PRAGMA DisableSimpleColumns; +use plato; + +-- should pushdown +select * from Input1 as a inner join Input2 as b on a.key = b.key where AssumeStrict(Unwrap(cast(a.key as Int32))) > 100 order by a.key; diff --git a/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_strict_udf.cfg b/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_strict_udf.cfg new file mode 100644 index 0000000000..75143a2d4b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_strict_udf.cfg @@ -0,0 +1,3 @@ +in Input1 input1.txt +in Input2 input2.txt +udf math_udf diff --git a/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_strict_udf.sql b/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_strict_udf.sql new file mode 100644 index 0000000000..12ab5e8f6d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pushdown_filter_over_inner_with_strict_udf.sql @@ -0,0 +1,6 @@ +/* postgres can not */ +PRAGMA DisableSimpleColumns; +use plato; + +-- should pushdown +select * from Input1 as a inner join Input2 as b on a.key = b.key where Math::IsFinite(cast(a.key as Double)) order by a.key; diff --git a/yt/yql/tests/sql/suites/join/pushdown_filter_over_left-off.cfg b/yt/yql/tests/sql/suites/join/pushdown_filter_over_left-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pushdown_filter_over_left-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/pushdown_filter_over_left.cfg b/yt/yql/tests/sql/suites/join/pushdown_filter_over_left.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pushdown_filter_over_left.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/pushdown_filter_over_left.sql b/yt/yql/tests/sql/suites/join/pushdown_filter_over_left.sql new file mode 100644 index 0000000000..d5b8567576 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/pushdown_filter_over_left.sql @@ -0,0 +1,6 @@ +/* postgres can not */ +PRAGMA DisableSimpleColumns; +use plato; + +-- should pushdown +select * from Input1 as a left join Input2 as b on a.key = b.key where Unwrap(cast(a.key as Int32)) > 100 order by a.key; diff --git a/yt/yql/tests/sql/suites/join/right_trivial-off.cfg b/yt/yql/tests/sql/suites/join/right_trivial-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/right_trivial-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/right_trivial.cfg b/yt/yql/tests/sql/suites/join/right_trivial.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/right_trivial.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/right_trivial.sql b/yt/yql/tests/sql/suites/join/right_trivial.sql new file mode 100644 index 0000000000..d63d52b615 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/right_trivial.sql @@ -0,0 +1,5 @@ +PRAGMA DisableSimpleColumns; +select coalesce(Input1.key, "_null") as a, coalesce(Input1.subkey, "_null") as b, coalesce(Input3.value, "_null") as c +from plato.Input1 +right join plato.Input3 using (key) +order by a, b, c;
\ No newline at end of file diff --git a/yt/yql/tests/sql/suites/join/root.txt.attr b/yt/yql/tests/sql/suites/join/root.txt.attr new file mode 100644 index 0000000000..8cfa8bc1a9 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/root.txt.attr @@ -0,0 +1,8 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"Uint64"]]; + ["leaf";["OptionalType";["DataType";"Uint64"]]]; + ["branch";["OptionalType";["DataType";"Uint64"]]]; + ["value";["OptionalType";["DataType";"String"]]]] + ]; +}} diff --git a/yt/yql/tests/sql/suites/join/selfjoin_on_sorted-off.cfg b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted-off.cfg new file mode 100644 index 0000000000..579f91d547 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted-off.cfg @@ -0,0 +1,4 @@ +in Input sorted_uniq.txt + +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/selfjoin_on_sorted.cfg b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted.cfg new file mode 100644 index 0000000000..e6665422d5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted.cfg @@ -0,0 +1,2 @@ +in Input sorted_uniq.txt + diff --git a/yt/yql/tests/sql/suites/join/selfjoin_on_sorted.sql b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted.sql new file mode 100644 index 0000000000..dc33eadc98 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted.sql @@ -0,0 +1,2 @@ +PRAGMA DisableSimpleColumns; +select * from plato.Input as a inner join plato.Input as b on a.key = b.key; diff --git a/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_filter-off.cfg b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_filter-off.cfg new file mode 100644 index 0000000000..579f91d547 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_filter-off.cfg @@ -0,0 +1,4 @@ +in Input sorted_uniq.txt + +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_filter-replicate.cfg b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_filter-replicate.cfg new file mode 100644 index 0000000000..1aa0bdd86e --- /dev/null +++ b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_filter-replicate.cfg @@ -0,0 +1,6 @@ +in Input sorted_uniq.txt + +providers dq +pragma dq.HashJoinMode="off"; +pragma dq.SplitStageOnDqReplicate="false"; +pragma dq.SpillingEngine="disable"; diff --git a/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_filter.cfg b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_filter.cfg new file mode 100644 index 0000000000..e6665422d5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_filter.cfg @@ -0,0 +1,2 @@ +in Input sorted_uniq.txt + diff --git a/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_filter.sql b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_filter.sql new file mode 100644 index 0000000000..7134d1c830 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_filter.sql @@ -0,0 +1,4 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +$in = (select * from plato.Input where key > "100"); +select * from $in as a inner join $in as b on a.key = b.key; diff --git a/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_rename-off.cfg b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_rename-off.cfg new file mode 100644 index 0000000000..579f91d547 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_rename-off.cfg @@ -0,0 +1,4 @@ +in Input sorted_uniq.txt + +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_rename.cfg b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_rename.cfg new file mode 100644 index 0000000000..e6665422d5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_rename.cfg @@ -0,0 +1,2 @@ +in Input sorted_uniq.txt + diff --git a/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_rename.sql b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_rename.sql new file mode 100644 index 0000000000..51746196d6 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/selfjoin_on_sorted_with_rename.sql @@ -0,0 +1,2 @@ +PRAGMA DisableSimpleColumns; +select a.key as key, b.subkey as subkey, b.value as value from plato.Input as a inner join plato.Input as b on a.key = b.key; diff --git a/yt/yql/tests/sql/suites/join/simple_columns_partial-off.cfg b/yt/yql/tests/sql/suites/join/simple_columns_partial-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/simple_columns_partial-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/simple_columns_partial.cfg b/yt/yql/tests/sql/suites/join/simple_columns_partial.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/simple_columns_partial.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/simple_columns_partial.sql b/yt/yql/tests/sql/suites/join/simple_columns_partial.sql new file mode 100644 index 0000000000..da45ff2766 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/simple_columns_partial.sql @@ -0,0 +1,23 @@ +/* postgres can not */ +use plato; +pragma SimpleColumns; + +SELECT * +FROM `Input2` AS a +LEFT SEMI JOIN `Input3` AS b +ON a.value == b.value; + +SELECT * +FROM `Input2` AS a +LEFT ONLY JOIN `Input3` AS b +ON a.value == b.value; + +SELECT * +FROM `Input2` AS a +RIGHT SEMI JOIN `Input3` AS b +ON a.value == b.value; + +SELECT * +FROM `Input2` AS a +RIGHT ONLY JOIN `Input3` AS b +ON a.value == b.value; diff --git a/yt/yql/tests/sql/suites/join/sorted_by_k1.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_k1.txt.attr new file mode 100644 index 0000000000..9cef99eb90 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_k1.txt.attr @@ -0,0 +1,19 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k1"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v1"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_k2.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_k2.txt.attr new file mode 100644 index 0000000000..39faeeb22c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_k2.txt.attr @@ -0,0 +1,19 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k2"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v2"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_key1.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_key1.txt.attr new file mode 100644 index 0000000000..852ba949fb --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_key1.txt.attr @@ -0,0 +1,19 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "key"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "value"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_key2.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_key2.txt.attr new file mode 100644 index 0000000000..852ba949fb --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_key2.txt.attr @@ -0,0 +1,19 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "key"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "value"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_key3.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_key3.txt.attr new file mode 100644 index 0000000000..852ba949fb --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_key3.txt.attr @@ -0,0 +1,19 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "key"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "value"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_key4.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_key4.txt.attr new file mode 100644 index 0000000000..852ba949fb --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_key4.txt.attr @@ -0,0 +1,19 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "key"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "value"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_key_subkey.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_key_subkey.txt.attr new file mode 100644 index 0000000000..1752b0ee6d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_key_subkey.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "key"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "subkey"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "value"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_kv1.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_kv1.txt.attr new file mode 100644 index 0000000000..4185224ec0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_kv1.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k1"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v1"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u1"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_kv1_1.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_kv1_1.txt.attr new file mode 100644 index 0000000000..4185224ec0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_kv1_1.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k1"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v1"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u1"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_kv1_dup.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_kv1_dup.txt.attr new file mode 100644 index 0000000000..4185224ec0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_kv1_dup.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k1"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v1"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u1"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_kv1_opt.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_kv1_opt.txt.attr new file mode 100644 index 0000000000..aee2f17230 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_kv1_opt.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k1"; + "required" = %false; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v1"; + "required" = %false; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u1"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_kv1_unique.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_kv1_unique.txt.attr new file mode 100644 index 0000000000..6059c56833 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_kv1_unique.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %true + > + [ + { + "name" = "k1"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v1"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u1"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_kv2.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_kv2.txt.attr new file mode 100644 index 0000000000..387ceb1b55 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_kv2.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k2"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v2"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u2"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_kv2_dup.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_kv2_dup.txt.attr new file mode 100644 index 0000000000..387ceb1b55 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_kv2_dup.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k2"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v2"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u2"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_kv2_empty.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_kv2_empty.txt.attr new file mode 100644 index 0000000000..387ceb1b55 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_kv2_empty.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k2"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v2"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u2"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_kv2_opt.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_kv2_opt.txt.attr new file mode 100644 index 0000000000..d10189b748 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_kv2_opt.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k2"; + "required" = %false; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v2"; + "required" = %false; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u2"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_by_kv3.txt.attr b/yt/yql/tests/sql/suites/join/sorted_by_kv3.txt.attr new file mode 100644 index 0000000000..3b51f7ab03 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_by_kv3.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "k3"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "v3"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u3"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/sorted_uniq.txt.attr b/yt/yql/tests/sql/suites/join/sorted_uniq.txt.attr new file mode 100644 index 0000000000..3cbe9af3fd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_uniq.txt.attr @@ -0,0 +1,12 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"String"]]; + ["subkey";["DataType";"String"]]; + ["value";["DataType";"String"]] + ]]; + "SortDirections"=[1;]; + "SortedBy"=["key";]; + "SortedByTypes"=[["DataType";"String";];]; + "SortMembers"=["key";]; + "UniqueKeys"=%true; +}} diff --git a/yt/yql/tests/sql/suites/join/sorted_uniq1.txt.attr b/yt/yql/tests/sql/suites/join/sorted_uniq1.txt.attr new file mode 100644 index 0000000000..fad1fb2801 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_uniq1.txt.attr @@ -0,0 +1,12 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"String"]]; + ["subkey";["DataType";"String"]]; + ["value";["DataType";"String"]] + ]]; + "SortDirections"=[1;1;]; + "SortedBy"=["subkey";"value"]; + "SortedByTypes"=[["DataType";"String";];["DataType";"String";];]; + "SortMembers"=["subkey";"value"]; + "UniqueKeys"=%true; +}} diff --git a/yt/yql/tests/sql/suites/join/sorted_uniq2.txt.attr b/yt/yql/tests/sql/suites/join/sorted_uniq2.txt.attr new file mode 100644 index 0000000000..09cc6be90d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/sorted_uniq2.txt.attr @@ -0,0 +1,12 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"String"]]; + ["subkey";["DataType";"String"]]; + ["value";["DataType";"String"]] + ]]; + "SortDirections"=[1;]; + "SortedBy"=["key"]; + "SortedByTypes"=[["DataType";"String";]]; + "SortMembers"=["key";]; + "UniqueKeys"=%true; +}} diff --git a/yt/yql/tests/sql/suites/join/split_to_list_as_key-off.cfg b/yt/yql/tests/sql/suites/join/split_to_list_as_key-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/split_to_list_as_key-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/split_to_list_as_key.cfg b/yt/yql/tests/sql/suites/join/split_to_list_as_key.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/split_to_list_as_key.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/split_to_list_as_key.sql b/yt/yql/tests/sql/suites/join/split_to_list_as_key.sql new file mode 100644 index 0000000000..64be5ae083 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/split_to_list_as_key.sql @@ -0,0 +1,7 @@ +/* syntax version 1 */ +PRAGMA DisableSimpleColumns; +use plato; + +from Input1 as a +join Input2 as b on a.key = String::SplitToList(b.key, "_")[0] +select * order by a.key,a.subkey,b.subkey diff --git a/yt/yql/tests/sql/suites/join/star_join-off.cfg b/yt/yql/tests/sql/suites/join/star_join-off.cfg new file mode 100644 index 0000000000..64e0857bc5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join-off.cfg @@ -0,0 +1,7 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +in Input5 kv5_sorted.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/star_join.cfg b/yt/yql/tests/sql/suites/join/star_join.cfg new file mode 100644 index 0000000000..a884c15308 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join.cfg @@ -0,0 +1,5 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +in Input5 kv5_sorted.txt diff --git a/yt/yql/tests/sql/suites/join/star_join.sql b/yt/yql/tests/sql/suites/join/star_join.sql new file mode 100644 index 0000000000..19c7c910ce --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join.sql @@ -0,0 +1,12 @@ +/* syntax version 1 */ +use plato; +pragma yt.JoinEnableStarJoin="true"; + + +$rightSemi = select * from Input2 as b right semi join Input1 as a on a.v1 = b.v2 and a.k1 = b.k2; +$leftOnly = select * from $rightSemi as rs left only join Input3 as c on rs.k1 = c.k3 and rs.v1 = c.v3; +$right = select * from Input4 as d right join $leftOnly as lo on d.v4 = lo.v1 and lo.k1 = d.k4; +$inner = select * from $right as r join any Input5 as e on r.k1 = e.k5 and e.v5 = r.v1; + +select * from $inner order by u1,u5; + diff --git a/yt/yql/tests/sql/suites/join/star_join_inners-off.cfg b/yt/yql/tests/sql/suites/join/star_join_inners-off.cfg new file mode 100644 index 0000000000..7859898010 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_inners-off.cfg @@ -0,0 +1,5 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/star_join_inners.cfg b/yt/yql/tests/sql/suites/join/star_join_inners.cfg new file mode 100644 index 0000000000..086641db8d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_inners.cfg @@ -0,0 +1,3 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt diff --git a/yt/yql/tests/sql/suites/join/star_join_inners.sql b/yt/yql/tests/sql/suites/join/star_join_inners.sql new file mode 100644 index 0000000000..9396fe8f6d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_inners.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +use plato; +pragma yt.JoinEnableStarJoin="true"; + +from any Input2 as b +join any Input1 as a on b.k2 = a.k1 and a.v1 = b.v2 +join any Input3 as c on a.k1 = c.k3 and c.v3 = a.v1 +select * order by u1 + diff --git a/yt/yql/tests/sql/suites/join/star_join_inners_premap-off.cfg b/yt/yql/tests/sql/suites/join/star_join_inners_premap-off.cfg new file mode 100644 index 0000000000..7859898010 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_inners_premap-off.cfg @@ -0,0 +1,5 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/star_join_inners_premap.cfg b/yt/yql/tests/sql/suites/join/star_join_inners_premap.cfg new file mode 100644 index 0000000000..086641db8d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_inners_premap.cfg @@ -0,0 +1,3 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt diff --git a/yt/yql/tests/sql/suites/join/star_join_inners_premap.sql b/yt/yql/tests/sql/suites/join/star_join_inners_premap.sql new file mode 100644 index 0000000000..4cf67ca9ab --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_inners_premap.sql @@ -0,0 +1,13 @@ +/* syntax version 1 */ +use plato; +pragma yt.JoinEnableStarJoin="true"; +pragma DisablePullUpFlatMapOverJoin; + +$a = select k1,v1,u1, 1 as t1 from Input1; +$c = select k3,v3,u3, 3 as t3 from Input3; + +from any Input2 as b +join any $a as a on b.k2 = a.k1 and a.v1 = b.v2 +join any $c as c on a.k1 = c.k3 and c.v3 = a.v1 +select * order by u1 + diff --git a/yt/yql/tests/sql/suites/join/star_join_inners_vk_sorted-off.cfg b/yt/yql/tests/sql/suites/join/star_join_inners_vk_sorted-off.cfg new file mode 100644 index 0000000000..45c529ffa9 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_inners_vk_sorted-off.cfg @@ -0,0 +1,5 @@ +in Input1 vk1_sorted.txt +in Input2 vk2_sorted.txt +in Input3 vk3_sorted.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/star_join_inners_vk_sorted.cfg b/yt/yql/tests/sql/suites/join/star_join_inners_vk_sorted.cfg new file mode 100644 index 0000000000..354c0f1d8d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_inners_vk_sorted.cfg @@ -0,0 +1,3 @@ +in Input1 vk1_sorted.txt +in Input2 vk2_sorted.txt +in Input3 vk3_sorted.txt diff --git a/yt/yql/tests/sql/suites/join/star_join_inners_vk_sorted.sql b/yt/yql/tests/sql/suites/join/star_join_inners_vk_sorted.sql new file mode 100644 index 0000000000..9396fe8f6d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_inners_vk_sorted.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +use plato; +pragma yt.JoinEnableStarJoin="true"; + +from any Input2 as b +join any Input1 as a on b.k2 = a.k1 and a.v1 = b.v2 +join any Input3 as c on a.k1 = c.k3 and c.v3 = a.v1 +select * order by u1 + diff --git a/yt/yql/tests/sql/suites/join/star_join_mirror-off.cfg b/yt/yql/tests/sql/suites/join/star_join_mirror-off.cfg new file mode 100644 index 0000000000..64e0857bc5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_mirror-off.cfg @@ -0,0 +1,7 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +in Input5 kv5_sorted.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/star_join_mirror.cfg b/yt/yql/tests/sql/suites/join/star_join_mirror.cfg new file mode 100644 index 0000000000..a884c15308 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_mirror.cfg @@ -0,0 +1,5 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +in Input5 kv5_sorted.txt diff --git a/yt/yql/tests/sql/suites/join/star_join_mirror.sql b/yt/yql/tests/sql/suites/join/star_join_mirror.sql new file mode 100644 index 0000000000..8aaf6431b0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_mirror.sql @@ -0,0 +1,11 @@ +/* syntax version 1 */ +use plato; +pragma yt.JoinEnableStarJoin="true"; + +$leftSemi = select * from Input1 as a left semi join Input2 as b on b.k2 = a.k1 and a.v1 = b.v2; +$rightOnly = select * from Input3 as c right only join $leftSemi as ls on ls.k1 = c.k3 and ls.v1 = c.v3; +$left = select * from $rightOnly as ro left join Input4 as d on ro.v1 = d.v4 and d.k4 = ro.k1; +$inner = select * from any Input5 as e join $left as l on e.k5 = l.k1 and l.v1 = e.v5; + +select * from $inner order by u1,u5; + diff --git a/yt/yql/tests/sql/suites/join/star_join_multi-off.cfg b/yt/yql/tests/sql/suites/join/star_join_multi-off.cfg new file mode 100644 index 0000000000..64e0857bc5 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_multi-off.cfg @@ -0,0 +1,7 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +in Input5 kv5_sorted.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/star_join_multi.cfg b/yt/yql/tests/sql/suites/join/star_join_multi.cfg new file mode 100644 index 0000000000..a884c15308 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_multi.cfg @@ -0,0 +1,5 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +in Input5 kv5_sorted.txt diff --git a/yt/yql/tests/sql/suites/join/star_join_multi.sql b/yt/yql/tests/sql/suites/join/star_join_multi.sql new file mode 100644 index 0000000000..b6553ce006 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_multi.sql @@ -0,0 +1,22 @@ +/* syntax version 1 */ +use plato; +pragma yt.JoinEnableStarJoin="true"; + + +-- first Star JOIN chain +$rightSemi = select * from Input2 as b right semi join Input1 as a on a.v1 = b.v2 and a.k1 = b.k2; +$leftOnly = select * from $rightSemi as rs left only join Input3 as c on rs.k1 = c.k3 and rs.v1 = c.v3; +$right = select * from Input4 as d right join $leftOnly as lo on d.v4 = lo.v1 and lo.k1 = d.k4; +$chain1 = select * from $right as r join any Input5 as e on r.k1 = e.k5 and e.v5 = r.v1; + +-- second Star JOIN chain (mirror reflection of first one) +$leftSemi = select * from Input1 as a1 left semi join Input2 as b1 on b1.k2 = a1.k1 and a1.v1 = b1.v2; +$rightOnly = select * from Input3 as c1 right only join $leftSemi as ls on ls.k1 = c1.k3 and ls.v1 = c1.v3; +$left = select * from $rightOnly as ro left join Input4 as d1 on ro.v1 = d1.v4 and d1.k4 = ro.k1; +$chain2 = select * from any Input5 as e1 join $left as l on e1.k5 = l.k1 and l.v1 = e1.v5; + + +select left.k1 as k1, right.v1 as v1 from +$chain1 as left join $chain2 as right on left.k1 = right.k1 and left.v1 = right.v1 +order by k1,v1; + diff --git a/yt/yql/tests/sql/suites/join/star_join_semionly-off.cfg b/yt/yql/tests/sql/suites/join/star_join_semionly-off.cfg new file mode 100644 index 0000000000..7859898010 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_semionly-off.cfg @@ -0,0 +1,5 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/star_join_semionly.cfg b/yt/yql/tests/sql/suites/join/star_join_semionly.cfg new file mode 100644 index 0000000000..086641db8d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_semionly.cfg @@ -0,0 +1,3 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt diff --git a/yt/yql/tests/sql/suites/join/star_join_semionly.sql b/yt/yql/tests/sql/suites/join/star_join_semionly.sql new file mode 100644 index 0000000000..bd158ea86d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_semionly.sql @@ -0,0 +1,9 @@ +/* syntax version 1 */ +use plato; +pragma yt.JoinEnableStarJoin="true"; + +from Input1 as a +left semi join Input2 as b on a.k1 = b.k2 +left only join Input3 as c on a.k1 = c.k3 +select * order by u1 + diff --git a/yt/yql/tests/sql/suites/join/star_join_semionly_premap-off.cfg b/yt/yql/tests/sql/suites/join/star_join_semionly_premap-off.cfg new file mode 100644 index 0000000000..7859898010 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_semionly_premap-off.cfg @@ -0,0 +1,5 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/star_join_semionly_premap.cfg b/yt/yql/tests/sql/suites/join/star_join_semionly_premap.cfg new file mode 100644 index 0000000000..086641db8d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_semionly_premap.cfg @@ -0,0 +1,3 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt diff --git a/yt/yql/tests/sql/suites/join/star_join_semionly_premap.sql b/yt/yql/tests/sql/suites/join/star_join_semionly_premap.sql new file mode 100644 index 0000000000..370490c9fd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_semionly_premap.sql @@ -0,0 +1,14 @@ +/* syntax version 1 */ +use plato; +pragma yt.JoinEnableStarJoin="true"; +pragma DisablePullUpFlatMapOverJoin; + +$a = select k1,v1,u1, 1 as t1 from Input1; +$b = select k2,v2,u2, 2 as t2 from Input2; +$c = select k3,v3,u3, 3 as t3 from Input3; + +from $a as a +left semi join $b as b on a.k1 = b.k2 +left only join $c as c on a.k1 = c.k3 +select * order by u1 + diff --git a/yt/yql/tests/sql/suites/join/star_join_with_diff_complex_key.cfg b/yt/yql/tests/sql/suites/join/star_join_with_diff_complex_key.cfg new file mode 100644 index 0000000000..00227305fc --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_with_diff_complex_key.cfg @@ -0,0 +1,5 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/star_join_with_diff_complex_key.sql b/yt/yql/tests/sql/suites/join/star_join_with_diff_complex_key.sql new file mode 100644 index 0000000000..94408a517e --- /dev/null +++ b/yt/yql/tests/sql/suites/join/star_join_with_diff_complex_key.sql @@ -0,0 +1,10 @@ +/* syntax version 1 */ +use plato; +pragma yt.JoinEnableStarJoin="true"; + + +select * +from Input1 as a +join any Input2 as b on a.k1 = b.k2 AND a.v1 = b.v2 +join any Input3 as c on a.k1 = c.k3 AND a.v1 = c.v3 +left join Input4 as d on (c.v3, c.u3) = (d.v4, d.u4) diff --git a/yt/yql/tests/sql/suites/join/starjoin_unused_keys.cfg b/yt/yql/tests/sql/suites/join/starjoin_unused_keys.cfg new file mode 100644 index 0000000000..9a930ffe48 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/starjoin_unused_keys.cfg @@ -0,0 +1,6 @@ +in Input1 kv1_sorted.txt +in Input2 kv2_sorted.txt +in Input3 kv3_sorted.txt +in Input4 kv4_sorted.txt +in Input5 kv5_sorted.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/starjoin_unused_keys.sql b/yt/yql/tests/sql/suites/join/starjoin_unused_keys.sql new file mode 100644 index 0000000000..4f2d3d932d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/starjoin_unused_keys.sql @@ -0,0 +1,13 @@ +/* syntax version 1 */ +use plato; +pragma yt.JoinEnableStarJoin="true"; + +select + +v3 + +from any Input1 as a +join any Input2 as b on (a.k1 = b.k2 and a.v1 = b.v2) +join any Input3 as c on (a.k1 = c.k3 and a.v1 = c.v3) +join Input4 as d on (a.k1 = d.k4) +order by v3; diff --git a/yt/yql/tests/sql/suites/join/strict_keys.cfg b/yt/yql/tests/sql/suites/join/strict_keys.cfg new file mode 100644 index 0000000000..b54c86b56b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/strict_keys.cfg @@ -0,0 +1,3 @@ +xfail +in Input1 sorted_by_kv1.txt +in Input2 sorted_by_kv1_opt.txt diff --git a/yt/yql/tests/sql/suites/join/strict_keys.sql b/yt/yql/tests/sql/suites/join/strict_keys.sql new file mode 100644 index 0000000000..b9ca0641f8 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/strict_keys.sql @@ -0,0 +1,10 @@ +/* custom error:Strict key type match requested, but keys have different types*/ +use plato; + +define subquery $strict() as + pragma StrictJoinKeyTypes; + select count(*) from Input1 as a join Input2 as b using(k1) +end define; + +select count(*) from Input1 as a join Input2 as b using(k1); +select * from $strict(); diff --git a/yt/yql/tests/sql/suites/join/three_equalities-off.cfg b/yt/yql/tests/sql/suites/join/three_equalities-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/three_equalities-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/three_equalities.cfg b/yt/yql/tests/sql/suites/join/three_equalities.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/three_equalities.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/three_equalities.sql b/yt/yql/tests/sql/suites/join/three_equalities.sql new file mode 100644 index 0000000000..51637f9154 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/three_equalities.sql @@ -0,0 +1,12 @@ +PRAGMA DisableSimpleColumns; +USE plato; +SELECT * FROM + Input1 AS A +JOIN + Input2 AS B +ON + A.key == B.key AND + (cast(A.subkey AS int) + 1 == cast(B.subkey AS int)) AND + A.value == B.value +ORDER BY A.key +; diff --git a/yt/yql/tests/sql/suites/join/three_equalities_paren-off.cfg b/yt/yql/tests/sql/suites/join/three_equalities_paren-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/three_equalities_paren-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/three_equalities_paren.cfg b/yt/yql/tests/sql/suites/join/three_equalities_paren.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/three_equalities_paren.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/three_equalities_paren.sql b/yt/yql/tests/sql/suites/join/three_equalities_paren.sql new file mode 100644 index 0000000000..b1be3c32e2 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/three_equalities_paren.sql @@ -0,0 +1,11 @@ +PRAGMA DisableSimpleColumns; +USE plato; +SELECT * FROM + Input2 AS A +JOIN + Input4 AS B +ON + (A.key == B.key) AND + (A.subkey == B.subkey) AND + (A.value == B.value) +; diff --git a/yt/yql/tests/sql/suites/join/trivial_view-off.cfg b/yt/yql/tests/sql/suites/join/trivial_view-off.cfg new file mode 100644 index 0000000000..43f157699a --- /dev/null +++ b/yt/yql/tests/sql/suites/join/trivial_view-off.cfg @@ -0,0 +1,4 @@ +in Input1 view_input.txt +in Input2 input.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/trivial_view.cfg b/yt/yql/tests/sql/suites/join/trivial_view.cfg new file mode 100644 index 0000000000..3f072cc800 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/trivial_view.cfg @@ -0,0 +1,2 @@ +in Input1 view_input.txt +in Input2 input.txt diff --git a/yt/yql/tests/sql/suites/join/trivial_view.sql b/yt/yql/tests/sql/suites/join/trivial_view.sql new file mode 100644 index 0000000000..8534f3a0c7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/trivial_view.sql @@ -0,0 +1,9 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +/* syntax version 1 */ +use plato; +SELECT a.v, b.value +FROM `Input1` VIEW `ksv` AS a +JOIN `Input2` AS b +ON a.k == b.key +ORDER BY a.v; diff --git a/yt/yql/tests/sql/suites/join/two_aggrs.sql b/yt/yql/tests/sql/suites/join/two_aggrs.sql new file mode 100644 index 0000000000..1be595ca17 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/two_aggrs.sql @@ -0,0 +1,18 @@ +USE plato; + +PRAGMA yt.JoinMergeForce = "1"; +pragma yt.JoinMergeTablesLimit="10"; + +$join = + SELECT a.key as key1, a.subkey as subkey1 + FROM (SELECT * FROM Input8 WHERE subkey != "bar") AS a + JOIN (SELECT * FROM Input8 WHERE subkey != "foo") AS b + ON a.key = b.key AND a.subkey = b.subkey; + +SELECT key1, subkey1, count(*) +FROM $join +GROUP COMPACT BY subkey1, key1; + +SELECT key1, subkey1 +FROM $join +GROUP COMPACT BY key1, subkey1; diff --git a/yt/yql/tests/sql/suites/join/uniqkeys.txt.attr b/yt/yql/tests/sql/suites/join/uniqkeys.txt.attr new file mode 100644 index 0000000000..e847d48e3e --- /dev/null +++ b/yt/yql/tests/sql/suites/join/uniqkeys.txt.attr @@ -0,0 +1,12 @@ +{"_yql_row_spec"={ + "Type"=["StructType";[ + ["key";["DataType";"String"]]; + ["subkey";["DataType";"String"]]; + ["value";["DataType";"String"]] + ]]; + "SortDirections"=[1;1;]; + "SortedBy"=["key";"subkey";]; + "SortedByTypes"=[["DataType";"String";];["DataType";"String";];]; + "SortMembers"=["key";"subkey";]; + "UniqueKeys"=%true +}} diff --git a/yt/yql/tests/sql/suites/join/view_input.txt.attr b/yt/yql/tests/sql/suites/join/view_input.txt.attr new file mode 100644 index 0000000000..22c3547210 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/view_input.txt.attr @@ -0,0 +1,31 @@ +{ + "_yql_view_ksv"="SELECT key as k, subkey as s, value as v FROM self"; + "_yql_row_spec" = { + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "DataType"; + "String" + ] + ]; + [ + "subkey"; + [ + "DataType"; + "String" + ] + ]; + [ + "value"; + [ + "DataType"; + "String" + ] + ] + ] + ] + } +} diff --git a/yt/yql/tests/sql/suites/join/vk1_sorted.txt.attr b/yt/yql/tests/sql/suites/join/vk1_sorted.txt.attr new file mode 100644 index 0000000000..068381b88f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/vk1_sorted.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "v1"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "k1"; + "required" = %false; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u1"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/vk2_sorted.txt.attr b/yt/yql/tests/sql/suites/join/vk2_sorted.txt.attr new file mode 100644 index 0000000000..ff5c200f6b --- /dev/null +++ b/yt/yql/tests/sql/suites/join/vk2_sorted.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "v2"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "k2"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u2"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/vk3_sorted.txt.attr b/yt/yql/tests/sql/suites/join/vk3_sorted.txt.attr new file mode 100644 index 0000000000..c399355613 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/vk3_sorted.txt.attr @@ -0,0 +1,25 @@ +{ + "schema" = < + "strict" = %true; + "unique_keys" = %false + > + [ + { + "name" = "v3"; + "required" = %false; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "k3"; + "required" = %true; + "sort_order" = "ascending"; + "type" = "string" + }; + { + "name" = "u3"; + "required" = %true; + "type" = "string" + } + ]; +} diff --git a/yt/yql/tests/sql/suites/join/yql-10654_pullup_with_sys_columns-off.cfg b/yt/yql/tests/sql/suites/join/yql-10654_pullup_with_sys_columns-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-10654_pullup_with_sys_columns-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/yql-10654_pullup_with_sys_columns.cfg b/yt/yql/tests/sql/suites/join/yql-10654_pullup_with_sys_columns.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-10654_pullup_with_sys_columns.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/yql-10654_pullup_with_sys_columns.sql b/yt/yql/tests/sql/suites/join/yql-10654_pullup_with_sys_columns.sql new file mode 100644 index 0000000000..543df58892 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-10654_pullup_with_sys_columns.sql @@ -0,0 +1,14 @@ +/* postgres can not */ +/* syntax version 1 */ +USE plato; +PRAGMA DisableSimpleColumns; + +$src = + select key, subkey || key as subkey, value from Input + union all + select * from AS_TABLE(ListCreate(Struct<key:String,subkey:String,value:String>)); + +select a.key, a.subkey, b.value +from Input as a +left join $src as b using(key) +order by a.key; diff --git a/yt/yql/tests/sql/suites/join/yql-12022-off.cfg b/yt/yql/tests/sql/suites/join/yql-12022-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-12022-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/yql-12022.cfg b/yt/yql/tests/sql/suites/join/yql-12022.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-12022.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/yql-12022.sql b/yt/yql/tests/sql/suites/join/yql-12022.sql new file mode 100644 index 0000000000..15766d3004 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-12022.sql @@ -0,0 +1,13 @@ +/* postgres can not */ +/* syntax version 1 */ +USE plato; + +DEFINE SUBQUERY $sub($name) AS + SELECT * FROM $name +END DEFINE; + +SELECT a.key +FROM $sub("Input") AS a +INNER JOIN Input AS b +ON a.key = b.key +WHERE JoinTableRow().`a.subkey` == "wat" diff --git a/yt/yql/tests/sql/suites/join/yql-14829_left-off.cfg b/yt/yql/tests/sql/suites/join/yql-14829_left-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-14829_left-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/yql-14829_left.cfg b/yt/yql/tests/sql/suites/join/yql-14829_left.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-14829_left.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/yql-14829_left.sql b/yt/yql/tests/sql/suites/join/yql-14829_left.sql new file mode 100644 index 0000000000..8e36a759e2 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-14829_left.sql @@ -0,0 +1,35 @@ +USE plato; + +pragma yt.JoinEnableStarJoin="true"; + +insert into @x +select Just('xxx') as id +order by id; + +insert into @y +select Just('yyy') as id +order by id; + +insert into @a +select Just('aaa') as id +order by id; + +commit; + + +$xy_left = ( + SELECT + x.id AS id + FROM + ANY @x AS x + LEFT JOIN ANY @y AS y + ON x.id == y.id +); + +SELECT + * +FROM + ANY @a AS a + LEFT JOIN ANY $xy_left AS b + ON a.id == b.id; + diff --git a/yt/yql/tests/sql/suites/join/yql-14829_leftonly-off.cfg b/yt/yql/tests/sql/suites/join/yql-14829_leftonly-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-14829_leftonly-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/yql-14829_leftonly.cfg b/yt/yql/tests/sql/suites/join/yql-14829_leftonly.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-14829_leftonly.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/yql-14829_leftonly.sql b/yt/yql/tests/sql/suites/join/yql-14829_leftonly.sql new file mode 100644 index 0000000000..50ef1bae40 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-14829_leftonly.sql @@ -0,0 +1,35 @@ +USE plato; + +pragma yt.JoinEnableStarJoin="true"; + +insert into @x +select Just('xxx') as id +order by id; + +insert into @y +select Just('yyy') as id +order by id; + +insert into @a +select Just('aaa') as id +order by id; + +commit; + + +$xy_leftonly = ( + SELECT + x.id AS id + FROM + @x AS x + LEFT ONLY JOIN @y AS y + ON x.id == y.id +); + +SELECT + * +FROM + @a AS a + LEFT ONLY JOIN $xy_leftonly AS b + ON a.id == b.id; + diff --git a/yt/yql/tests/sql/suites/join/yql-14847-off.cfg b/yt/yql/tests/sql/suites/join/yql-14847-off.cfg new file mode 100644 index 0000000000..86539293ac --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-14847-off.cfg @@ -0,0 +1,5 @@ +in Input1 input1.txt +in Input2 input7.txt +in Input3 input3.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/yql-14847.cfg b/yt/yql/tests/sql/suites/join/yql-14847.cfg new file mode 100644 index 0000000000..5cac58c60c --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-14847.cfg @@ -0,0 +1,3 @@ +in Input1 input1.txt +in Input2 input7.txt +in Input3 input3.txt diff --git a/yt/yql/tests/sql/suites/join/yql-14847.sql b/yt/yql/tests/sql/suites/join/yql-14847.sql new file mode 100644 index 0000000000..25d2f0394f --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-14847.sql @@ -0,0 +1,23 @@ +USE plato; + +pragma yt.MapJoinLimit="1M"; + +$t = ( +SELECT + l.key as key, + r.subkey as subkey, + l.value || r.value as value +FROM + Input1 as l +CROSS JOIN + Input2 as r +); + +SELECT + l.*, + r.value as rvalue +FROM + $t as l +LEFT JOIN + Input3 as r +ON l.key = coalesce("" || r.key, "") diff --git a/yt/yql/tests/sql/suites/join/yql-16011.cfg b/yt/yql/tests/sql/suites/join/yql-16011.cfg new file mode 100644 index 0000000000..bb349dd8ab --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-16011.cfg @@ -0,0 +1 @@ +providers yt diff --git a/yt/yql/tests/sql/suites/join/yql-16011.sql b/yt/yql/tests/sql/suites/join/yql-16011.sql new file mode 100644 index 0000000000..bb8698027d --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-16011.sql @@ -0,0 +1,27 @@ +USE plato; + +PRAGMA AnsiInForEmptyOrNullableItemsCollections = "true"; +PRAGMA yt.MapJoinLimit="1m"; +PRAGMA yt.LookupJoinLimit="64k"; +PRAGMA yt.LookupJoinMaxRows="100"; + + +insert into @T1 +select Just('fooo'u) as ID order by ID; + +insert into @T2 +select 't' as text, '{}'y as tags, 'foo' as ID +order by ID; + +commit; + + +$lost_ids = SELECT ID FROM @T2 WHERE ID NOT IN (SELECT ID FROM @T1); +$lost_samples_after_align = SELECT * FROM @T2 WHERE ID IN $lost_ids; + +SELECT * FROM $lost_samples_after_align; + +SELECT + text || 'a' as text, + tags, +FROM $lost_samples_after_align; diff --git a/yt/yql/tests/sql/suites/join/yql-19081.cfg b/yt/yql/tests/sql/suites/join/yql-19081.cfg new file mode 100644 index 0000000000..aaba13cbfa --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-19081.cfg @@ -0,0 +1,4 @@ +in Input1 sorted_uniq.txt +in Input2 sorted_uniq.txt +in Input3 input1.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/yql-19081.sql b/yt/yql/tests/sql/suites/join/yql-19081.sql new file mode 100644 index 0000000000..215ba02fe4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-19081.sql @@ -0,0 +1,12 @@ +USE plato; + +pragma yt.JoinMergeTablesLimit="100"; +pragma yt.MapJoinLimit="10M"; +pragma yt.MaxReplicationFactorToFuseOperations="1"; + +SELECT + a.key, a.subkey, c.value +FROM Input1 as a +JOIN /*+ merge() */ Input2 as b ON a.key = b.key AND a.subkey = b.subkey +JOIN Input3 as c ON b.key = c.key AND b.subkey = c.subkey +ORDER BY c.value; diff --git a/yt/yql/tests/sql/suites/join/yql-4275-off.cfg b/yt/yql/tests/sql/suites/join/yql-4275-off.cfg new file mode 100644 index 0000000000..3e2c239448 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-4275-off.cfg @@ -0,0 +1,3 @@ +in Input yql-4275.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/yql-4275.cfg b/yt/yql/tests/sql/suites/join/yql-4275.cfg new file mode 100644 index 0000000000..4461be80f4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-4275.cfg @@ -0,0 +1 @@ +in Input yql-4275.txt diff --git a/yt/yql/tests/sql/suites/join/yql-4275.sql b/yt/yql/tests/sql/suites/join/yql-4275.sql new file mode 100644 index 0000000000..99096a7bbd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-4275.sql @@ -0,0 +1,10 @@ +PRAGMA DisableSimpleColumns; +/* postgres can not */ +USE plato; + +SELECT +* +FROM Input as x1 +JOIN (select key ?? 4 as key from Input) as x2 on x1.key == x2.key +WHERE x2.key == 4 +; diff --git a/yt/yql/tests/sql/suites/join/yql-4275.txt.attr b/yt/yql/tests/sql/suites/join/yql-4275.txt.attr new file mode 100644 index 0000000000..4c1e650192 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-4275.txt.attr @@ -0,0 +1,40 @@ +{ + "_yql_row_spec" = { + "SortMembers"=["key";"subkey"];"SortedBy"=["key";"subkey"];"SortDirections"=[1;1];"SortedByTypes"=[["OptionalType";["DataType";"Int32"]];["OptionalType";["DataType";"String"]]]; + "Type" = [ + "StructType"; + [ + [ + "key"; + [ + "OptionalType"; + [ + "DataType"; + "Int32" + ] + ] + ]; + [ + "subkey"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ]; + [ + "value"; + [ + "OptionalType"; + [ + "DataType"; + "String" + ] + ] + ] + ] + ] + } +} diff --git a/yt/yql/tests/sql/suites/join/yql-8125-off.cfg b/yt/yql/tests/sql/suites/join/yql-8125-off.cfg new file mode 100644 index 0000000000..76a2a2b6a4 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-8125-off.cfg @@ -0,0 +1,3 @@ +in Input input_intersect.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/yql-8125.cfg b/yt/yql/tests/sql/suites/join/yql-8125.cfg new file mode 100644 index 0000000000..3df7813790 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-8125.cfg @@ -0,0 +1 @@ +in Input input_intersect.txt diff --git a/yt/yql/tests/sql/suites/join/yql-8125.sql b/yt/yql/tests/sql/suites/join/yql-8125.sql new file mode 100644 index 0000000000..b3d81a5509 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-8125.sql @@ -0,0 +1,29 @@ +use plato; + +PRAGMA yt.JoinCollectColumnarStatistics="async"; + +INSERT INTO @yang_ids +SELECT + * + from Input + where subkey <= "3" + LIMIT 100; +commit; + +INSERT INTO @yang_ids + SELECT + * + from Input as j + LEFT ONLY JOIN @yang_ids + USING(key); +commit; + +INSERT INTO @yang_ids + SELECT + * + from Input as j + LEFT ONLY JOIN @yang_ids + USING(key); +commit; + +select * from @yang_ids; diff --git a/yt/yql/tests/sql/suites/join/yql-8131-off.cfg b/yt/yql/tests/sql/suites/join/yql-8131-off.cfg new file mode 100644 index 0000000000..be399805c7 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-8131-off.cfg @@ -0,0 +1,2 @@ +in Input input_intersect.txt +providers yt diff --git a/yt/yql/tests/sql/suites/join/yql-8131.cfg b/yt/yql/tests/sql/suites/join/yql-8131.cfg new file mode 100644 index 0000000000..32d89a04e1 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-8131.cfg @@ -0,0 +1,3 @@ +in Input input_intersect.txt +providers yt + diff --git a/yt/yql/tests/sql/suites/join/yql-8131.sql b/yt/yql/tests/sql/suites/join/yql-8131.sql new file mode 100644 index 0000000000..bcdb5aa485 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-8131.sql @@ -0,0 +1,14 @@ +/* kikimr can not */ +use plato; + +PRAGMA DisableSimpleColumns; +PRAGMA yt.JoinCollectColumnarStatistics="async"; +PRAGMA yt.MinTempAvgChunkSize="0"; +PRAGMA yt.MapJoinLimit="1"; + +SELECT * +FROM (select distinct key,subkey from Input where cast(key as Int32) > 100 order by key limit 100) as a +RIGHT JOIN (select key,value from Input where cast(key as Int32) < 500) as b +USING(key) +ORDER BY a.key,a.subkey,b.value; + diff --git a/yt/yql/tests/sql/suites/join/yql-8980-off.cfg b/yt/yql/tests/sql/suites/join/yql-8980-off.cfg new file mode 100644 index 0000000000..61ca79e527 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-8980-off.cfg @@ -0,0 +1,7 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/yql-8980.cfg b/yt/yql/tests/sql/suites/join/yql-8980.cfg new file mode 100644 index 0000000000..5ffa9b00c0 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-8980.cfg @@ -0,0 +1,5 @@ +in Input input.txt +in Input1 input1.txt +in Input2 input2.txt +in Input3 input3.txt +in Input4 input4.txt diff --git a/yt/yql/tests/sql/suites/join/yql-8980.sql b/yt/yql/tests/sql/suites/join/yql-8980.sql new file mode 100644 index 0000000000..e2701ee730 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql-8980.sql @@ -0,0 +1,15 @@ +USE plato; + +$foo = (SELECT key, subkey, value IN ("wat", "bar") AS value FROM Input); + +SELECT + R0.key, R0.subkey, R0.value, + R1.key, R1.subkey, R1.value, + R2.key, R2.value +FROM $foo AS R0 +LEFT JOIN $foo AS R1 ON + R0.subkey = R1.key +LEFT JOIN $foo AS R2 ON + R1.subkey = R2.key +ORDER BY R0.key; + diff --git a/yt/yql/tests/sql/suites/join/yql_465-off.cfg b/yt/yql/tests/sql/suites/join/yql_465-off.cfg new file mode 100644 index 0000000000..e6a2551297 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql_465-off.cfg @@ -0,0 +1,4 @@ +in a input1.txt +in b input2.txt +providers dq +pragma Dq.HashJoinMode='off'; diff --git a/yt/yql/tests/sql/suites/join/yql_465.cfg b/yt/yql/tests/sql/suites/join/yql_465.cfg new file mode 100644 index 0000000000..96c331a7fd --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql_465.cfg @@ -0,0 +1,2 @@ +in a input1.txt +in b input2.txt diff --git a/yt/yql/tests/sql/suites/join/yql_465.sql b/yt/yql/tests/sql/suites/join/yql_465.sql new file mode 100644 index 0000000000..4054dc97c9 --- /dev/null +++ b/yt/yql/tests/sql/suites/join/yql_465.sql @@ -0,0 +1,3 @@ +PRAGMA DisableSimpleColumns; +use plato; +select * from (select * from a where a.key > "zzz") as a join b on a.key == b.key; |