Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
181 changes: 94 additions & 87 deletions regression-test/suites/query_p0/join/mark_join/mark_join.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,17 @@
// under the License.

suite("mark_join") {
sql "drop table if exists t1;"
sql "drop table if exists t2;"
String suiteName = "mark_join"
String table_t1 = "${suiteName}_table_t1"
String table_t2 = "${suiteName}_table_t2"
String table_tbl1 = "${suiteName}_table_tbl1"
String table_tbl2 = "${suiteName}_table_tbl2"
String table_tbl3 = "${suiteName}_table_tbl3"

sql "drop table if exists ${table_t1};"
sql "drop table if exists ${table_t2};"
sql """
create table t1 (
create table ${table_t1} (
k1 int null,
k2 int null,
k3 bigint null,
Expand All @@ -31,7 +38,7 @@ suite("mark_join") {
"""

sql """
create table t2 (
create table ${table_t2} (
k1 int null,
k2 int null,
k3 bigint null,
Expand All @@ -42,33 +49,33 @@ suite("mark_join") {
properties("replication_num" = "1");
"""

sql "insert into t1 select 1,1,1,'a';"
sql "insert into t1 select 2,2,2,'b';"
sql "insert into t1 select 3,-3,null,'c';"
sql "insert into t1 select 3,3,null,'c';"
sql "insert into ${table_t1} select 1,1,1,'a';"
sql "insert into ${table_t1} select 2,2,2,'b';"
sql "insert into ${table_t1} select 3,-3,null,'c';"
sql "insert into ${table_t1} select 3,3,null,'c';"

sql "insert into t2 select 1,1,1,'a';"
sql "insert into t2 select 2,2,2,'b';"
sql "insert into t2 select 3,-3,null,'c';"
sql "insert into t2 select 3,3,null,'c';"
sql "insert into ${table_t2} select 1,1,1,'a';"
sql "insert into ${table_t2} select 2,2,2,'b';"
sql "insert into ${table_t2} select 3,-3,null,'c';"
sql "insert into ${table_t2} select 3,3,null,'c';"

qt_test """
select * from t1 where exists (select t2.k3 from t2 where t1.k2 = t2.k2) or k1 < 10 order by k1, k2;
select * from ${table_t1} where exists (select ${table_t2}.k3 from ${table_t2} where ${table_t1}.k2 = ${table_t2}.k2) or k1 < 10 order by k1, k2;
"""
qt_test """
select * from t1 where not exists (select t2.k3 from t2 where t1.k2 = t2.k2) or k1 < 10 order by k1, k2;
select * from ${table_t1} where not exists (select ${table_t2}.k3 from ${table_t2} where ${table_t1}.k2 = ${table_t2}.k2) or k1 < 10 order by k1, k2;
"""
qt_test """
select * from t1 where t1.k1 not in (select t2.k3 from t2 where t2.k2 = t1.k2) or k1 < 10 order by k1, k2;
select * from ${table_t1} where ${table_t1}.k1 not in (select ${table_t2}.k3 from ${table_t2} where ${table_t2}.k2 = ${table_t1}.k2) or k1 < 10 order by k1, k2;
"""


sql "drop table if exists tbl1;"
sql "drop table if exists tbl2;"
sql "drop table if exists tbl3;"
sql "drop table if exists ${table_tbl1};"
sql "drop table if exists ${table_tbl2};"
sql "drop table if exists ${table_tbl3};"

sql """
CREATE TABLE `tbl1` (
CREATE TABLE `${table_tbl1}` (
`unit_name` varchar(1080) NULL,
`cur_unit_name` varchar(1080) NOT NULL
) ENGINE=OLAP
Expand All @@ -80,7 +87,7 @@ suite("mark_join") {
"""

sql """
CREATE TABLE `tbl2` (
CREATE TABLE `${table_tbl2}` (
`org_code` varchar(150) NOT NULL ,
`org_name` varchar(300) NULL
) ENGINE=OLAP
Expand All @@ -92,7 +99,7 @@ suite("mark_join") {
"""

sql """
CREATE TABLE `tbl3` (
CREATE TABLE `${table_tbl3}` (
`id` bigint NOT NULL,
`acntm_name` varchar(500) NULL ,
`vendor_name` varchar(500) NULL
Expand All @@ -105,7 +112,7 @@ suite("mark_join") {
"""

sql """
insert into tbl1 (unit_name, cur_unit_name) values
insert into ${table_tbl1} (unit_name, cur_unit_name) values
('v1', 'o1'),
('v2', 'o2'),
('v3', 'o3'),
Expand All @@ -130,7 +137,7 @@ suite("mark_join") {
"""

sql """
insert into tbl2(org_code, org_name) values
insert into ${table_tbl2}(org_code, org_name) values
('v1', 'o1'),
('v2', 'o2'),
('v3', 'o3'),
Expand All @@ -144,7 +151,7 @@ suite("mark_join") {
"""

sql """
insert into tbl3 (id, vendor_name, acntm_name)
insert into ${table_tbl3} (id, vendor_name, acntm_name)
values(1, 'o1', 'v1'),
(2, 'o2', 'v2'),
(3, 'o3', 'v3'),
Expand All @@ -157,123 +164,123 @@ suite("mark_join") {
(10, null, 'v5');
"""

sql " analyze table tbl1 with sync;"
sql " analyze table tbl2 with sync;"
sql " analyze table tbl3 with sync;"
sql " analyze table ${table_tbl1} with sync;"
sql " analyze table ${table_tbl2} with sync;"
sql " analyze table ${table_tbl3} with sync;"

sql "set disable_join_reorder=0;"
qt_test_right_semi_mark_join """
select
tbl3.id,
tbl3.acntm_name,
tbl3.vendor_name,
tbl3.vendor_name in (
${table_tbl3}.id,
${table_tbl3}.acntm_name,
${table_tbl3}.vendor_name,
${table_tbl3}.vendor_name in (
select
tbl1.unit_name
${table_tbl1}.unit_name
from
tbl2
join tbl1 on tbl1.cur_unit_name = tbl2.org_name
${table_tbl2}
join ${table_tbl1} on ${table_tbl1}.cur_unit_name = ${table_tbl2}.org_name
where
tbl2.org_code = tbl3.acntm_name
${table_tbl2}.org_code = ${table_tbl3}.acntm_name
) v1,
tbl3.vendor_name not in (
${table_tbl3}.vendor_name not in (
select
tbl1.unit_name
${table_tbl1}.unit_name
from
tbl2
join tbl1 on tbl1.cur_unit_name = tbl2.org_name
${table_tbl2}
join ${table_tbl1} on ${table_tbl1}.cur_unit_name = ${table_tbl2}.org_name
where
tbl2.org_code = tbl3.acntm_name
${table_tbl2}.org_code = ${table_tbl3}.acntm_name
) v2
from
tbl3 order by 1,2,3,4,5;
${table_tbl3} order by 1,2,3,4,5;
"""

sql "set disable_join_reorder=1;"
qt_test_right_semi_mark_join_2 """
select
tbl3.id,
tbl3.acntm_name,
tbl3.vendor_name,
tbl3.vendor_name in (
${table_tbl3}.id,
${table_tbl3}.acntm_name,
${table_tbl3}.vendor_name,
${table_tbl3}.vendor_name in (
select
tbl1.unit_name
${table_tbl1}.unit_name
from
tbl2
join tbl1 on tbl1.cur_unit_name = tbl2.org_name
${table_tbl2}
join ${table_tbl1} on ${table_tbl1}.cur_unit_name = ${table_tbl2}.org_name
where
tbl2.org_code = tbl3.acntm_name
${table_tbl2}.org_code = ${table_tbl3}.acntm_name
) v1,
tbl3.vendor_name not in (
${table_tbl3}.vendor_name not in (
select
tbl1.unit_name
${table_tbl1}.unit_name
from
tbl2
join tbl1 on tbl1.cur_unit_name = tbl2.org_name
${table_tbl2}
join ${table_tbl1} on ${table_tbl1}.cur_unit_name = ${table_tbl2}.org_name
where
tbl2.org_code = tbl3.acntm_name
${table_tbl2}.org_code = ${table_tbl3}.acntm_name
) v2
from
tbl3 order by 1,2,3,4,5;
${table_tbl3} order by 1,2,3,4,5;
"""

sql "set disable_join_reorder=0;"
qt_test_right_semi_mark_join_no_null """
select
tbl3.id,
tbl3.acntm_name,
tbl3.vendor_name,
tbl3.vendor_name in (
${table_tbl3}.id,
${table_tbl3}.acntm_name,
${table_tbl3}.vendor_name,
${table_tbl3}.vendor_name in (
select
tbl1.unit_name
${table_tbl1}.unit_name
from
tbl2
join tbl1 on tbl1.cur_unit_name = tbl2.org_name
${table_tbl2}
join ${table_tbl1} on ${table_tbl1}.cur_unit_name = ${table_tbl2}.org_name
where
tbl2.org_code = tbl3.acntm_name
and tbl1.unit_name is not null
${table_tbl2}.org_code = ${table_tbl3}.acntm_name
and ${table_tbl1}.unit_name is not null
) v1,
tbl3.vendor_name not in (
${table_tbl3}.vendor_name not in (
select
tbl1.unit_name
${table_tbl1}.unit_name
from
tbl2
join tbl1 on tbl1.cur_unit_name = tbl2.org_name
${table_tbl2}
join ${table_tbl1} on ${table_tbl1}.cur_unit_name = ${table_tbl2}.org_name
where
tbl2.org_code = tbl3.acntm_name
and tbl1.unit_name is not null
${table_tbl2}.org_code = ${table_tbl3}.acntm_name
and ${table_tbl1}.unit_name is not null
) v2
from
tbl3 order by 1,2,3,4,5;
${table_tbl3} order by 1,2,3,4,5;
"""

sql "set disable_join_reorder=1;"
qt_test_right_semi_mark_join_no_null_2 """
select
tbl3.id,
tbl3.acntm_name,
tbl3.vendor_name,
tbl3.vendor_name in (
${table_tbl3}.id,
${table_tbl3}.acntm_name,
${table_tbl3}.vendor_name,
${table_tbl3}.vendor_name in (
select
tbl1.unit_name
${table_tbl1}.unit_name
from
tbl2
join tbl1 on tbl1.cur_unit_name = tbl2.org_name
${table_tbl2}
join ${table_tbl1} on ${table_tbl1}.cur_unit_name = ${table_tbl2}.org_name
where
tbl2.org_code = tbl3.acntm_name
and tbl1.unit_name is not null
${table_tbl2}.org_code = ${table_tbl3}.acntm_name
and ${table_tbl1}.unit_name is not null
) v1,
tbl3.vendor_name not in (
${table_tbl3}.vendor_name not in (
select
tbl1.unit_name
${table_tbl1}.unit_name
from
tbl2
join tbl1 on tbl1.cur_unit_name = tbl2.org_name
${table_tbl2}
join ${table_tbl1} on ${table_tbl1}.cur_unit_name = ${table_tbl2}.org_name
where
tbl2.org_code = tbl3.acntm_name
and tbl1.unit_name is not null
${table_tbl2}.org_code = ${table_tbl3}.acntm_name
and ${table_tbl1}.unit_name is not null
) v2
from
tbl3 order by 1,2,3,4,5;
${table_tbl3} order by 1,2,3,4,5;
"""
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,30 @@


suite("right_semi_mark_join") {
sql "drop table if exists tbl1;"
sql "drop table if exists tbl2;"
sql "drop table if exists tbl3;"
String suiteName = "right_semi_mark_join"
String table_tbl1 = "${suiteName}_table_tbl1"
String table_tbl2 = "${suiteName}_table_tbl2"
String table_tbl3 = "${suiteName}_table_tbl3"

sql "drop table if exists ${table_tbl1};"
sql "drop table if exists ${table_tbl2};"
sql "drop table if exists ${table_tbl3};"

sql """
create table tbl1 (pk int, col1 bigint, col2 bigint) engine = olap DUPLICATE KEY(pk) distributed by hash(pk) buckets 10 properties("replication_num" = "1");
create table ${table_tbl1} (pk int, col1 bigint, col2 bigint) engine = olap DUPLICATE KEY(pk) distributed by hash(pk) buckets 10 properties("replication_num" = "1");
"""

sql """
insert into
tbl1(pk, col1, col2)
${table_tbl1}(pk, col1, col2)
values
(0, null, 18332), (1, 788547, null), (2, 4644959, -56), (3, 8364628, 72), (4, null, -5581),
(5, 2344024, -62), (6, -2689177, 22979), (7, 1320, -41), (8, null, -54), (9, 12, -6236),
(10, -8321648, null), (11, 153691, null), (12, -8056, null), (13, -12, -2343514), (14, -35, -3361960);
"""

sql """
create table tbl2 (
create table ${table_tbl2} (
pk int, col1 bigint, col2 bigint
) engine = olap
distributed by hash(pk) buckets 4
Expand All @@ -44,14 +49,14 @@ suite("right_semi_mark_join") {

sql """
insert into
tbl2(pk, col1, col2)
${table_tbl2}(pk, col1, col2)
values
(0, 108, 31161), (1, 1479175, 6764263), (2, 110, 25), (3, 110, -18656), (4, null, -51),
(5, 21, 27), (6, -6950217, 1585978), (7, null, null), (8, null, 3453467), (9, null, -6701140);
"""

sql """
create table tbl3 (
create table ${table_tbl3} (
pk int, col1 bigint, col2 bigint, col3 bigint
) engine = olap
DUPLICATE KEY(pk) distributed by hash(pk) buckets 10
Expand All @@ -60,7 +65,7 @@ suite("right_semi_mark_join") {

sql """
insert into
tbl3(pk, col1, col2)
${table_tbl3}(pk, col1, col2)
values
(0, 55, -58), (1, 49, 29792), (2, 95, 32361), (3, 31243, -27428), (4, -27400, null),
(5, 31243, null), (6, null, -27428), (7, null, 7), (8, 31243, -21951), (9, 13186, 24466),
Expand All @@ -87,13 +92,13 @@ suite("right_semi_mark_join") {
T1.pk AS C1,
T1.col2 AS C2
FROM
tbl1 AS T1 FULL
OUTER JOIN tbl2 AS T2 ON T1.col1 <= T2.col2
${table_tbl1} AS T1 FULL
OUTER JOIN ${table_tbl2} AS T2 ON T1.col1 <= T2.col2
OR T2.col1 IN (
SELECT
T3.col2
FROM
tbl3 AS T3
${table_tbl3} AS T3
WHERE
T2.col2 = T3.col1
)
Expand Down