diff --git a/regression-test/data/nereids_p0/subquery/correlated_scalar_subquery.out b/regression-test/data/nereids_p0/subquery/correlated_scalar_subquery.out index aa2a5ae022caa6a..4a38b67f59d68d4 100644 --- a/regression-test/data/nereids_p0/subquery/correlated_scalar_subquery.out +++ b/regression-test/data/nereids_p0/subquery/correlated_scalar_subquery.out @@ -31,3 +31,11 @@ -- !select_join2 -- 3 4 +-- !select_having1 -- +1 +1 + +-- !select_having2 -- +1 +1 + diff --git a/regression-test/suites/nereids_p0/subquery/correlated_scalar_subquery.groovy b/regression-test/suites/nereids_p0/subquery/correlated_scalar_subquery.groovy index d8f0e626a73b54f..05d6c3baedb5f2c 100644 --- a/regression-test/suites/nereids_p0/subquery/correlated_scalar_subquery.groovy +++ b/regression-test/suites/nereids_p0/subquery/correlated_scalar_subquery.groovy @@ -25,6 +25,10 @@ suite("correlated_scalar_subquery") { drop table if exists correlated_scalar_t2; """ + sql """ + drop table if exists correlated_scalar_t3; + """ + sql """ create table correlated_scalar_t1 (c1 bigint, c2 bigint) @@ -48,12 +52,27 @@ suite("correlated_scalar_subquery") { ); """ + sql """ + create table correlated_scalar_t3 + (c1 bigint, c2 bigint) + ENGINE=OLAP + DUPLICATE KEY(c1, c2) + COMMENT 'OLAP' + DISTRIBUTED BY HASH(c1) BUCKETS 1 + PROPERTIES ( + "replication_num" = "1" + ); + """ + sql """ insert into correlated_scalar_t1 values (1,null),(null,1),(1,2), (null,2),(1,3), (2,4), (2,5), (3,3), (3,4), (20,2), (22,3), (24,4),(null,null); """ sql """ insert into correlated_scalar_t2 values (1,null),(null,1),(1,4), (1,2), (null,3), (2,4), (3,7), (3,9),(null,null),(5,1); """ + sql """ + insert into correlated_scalar_t3 values (1,null),(null,1),(1,9), (1,8), (null,7), (2,6), (3,7), (3,9),(null,null),(5,1); + """ qt_select_where1 """select c1 from correlated_scalar_t1 where correlated_scalar_t1.c2 > (select c1 from correlated_scalar_t2 where correlated_scalar_t1.c1 = correlated_scalar_t2.c1 and correlated_scalar_t2.c2 < 4);""" qt_select_where2 """select c1 from correlated_scalar_t1 where correlated_scalar_t1.c2 > (select any_value(c1) from correlated_scalar_t2 where correlated_scalar_t1.c1 = correlated_scalar_t2.c1 and correlated_scalar_t2.c2 < 4);""" @@ -64,6 +83,9 @@ suite("correlated_scalar_subquery") { qt_select_join1 """select correlated_scalar_t1.* from correlated_scalar_t1 join correlated_scalar_t2 on correlated_scalar_t1.c1 = correlated_scalar_t2.c2 and correlated_scalar_t1.c2 > (select c1 from correlated_scalar_t2 where correlated_scalar_t1.c1 = correlated_scalar_t2.c1 and correlated_scalar_t2.c2 > 7);""" qt_select_join2 """select correlated_scalar_t1.* from correlated_scalar_t1 join correlated_scalar_t2 on correlated_scalar_t1.c1 = correlated_scalar_t2.c2 and correlated_scalar_t1.c2 > (select any_value(c1) from correlated_scalar_t2 where correlated_scalar_t1.c1 = correlated_scalar_t2.c1 and correlated_scalar_t2.c2 > 7);""" + qt_select_having1 """select c1 from correlated_scalar_t1 where correlated_scalar_t1.c2 > (select correlated_scalar_t2.c1 from correlated_scalar_t2 where correlated_scalar_t2.c2 < 4 having correlated_scalar_t1.c1 = correlated_scalar_t2.c1);""" + qt_select_having2 """select c1 from correlated_scalar_t1 where correlated_scalar_t1.c2 > (select any_value(correlated_scalar_t2.c1) from correlated_scalar_t2 where correlated_scalar_t2.c2 < 4 having correlated_scalar_t1.c1 = any_value(correlated_scalar_t2.c1));""" + test { sql """ select c1 from correlated_scalar_t1 where correlated_scalar_t1.c2 > (select c1 from correlated_scalar_t2 where correlated_scalar_t1.c1 = correlated_scalar_t2.c1); @@ -84,4 +106,32 @@ suite("correlated_scalar_subquery") { """ exception "correlate scalar subquery must return only 1 row" } -} + + test { + sql """ + select c1 from correlated_scalar_t1 where correlated_scalar_t1.c2 > (select correlated_scalar_t1.c1 from correlated_scalar_t2 where correlated_scalar_t2.c2 < 4 and correlated_scalar_t1.c1 = correlated_scalar_t2.c1 ); + """ + exception "outer query's column is not supported in subquery's output" + } + + test { + sql """ + select c1 from correlated_scalar_t1 where correlated_scalar_t1.c2 > (select any_value(correlated_scalar_t2.c1 +correlated_scalar_t1.c1 ) from correlated_scalar_t2 where correlated_scalar_t2.c2 < 4 and correlated_scalar_t1.c1 = correlated_scalar_t2.c1); + """ + exception "outer query's column is not supported in subquery's aggregation operator" + } + + test { + sql """ + select c1 from correlated_scalar_t1 where correlated_scalar_t1.c2 > (select min(correlated_scalar_t2.c1) from correlated_scalar_t2 join (select correlated_scalar_t3.c1 from correlated_scalar_t3 where correlated_scalar_t1.c1 = correlated_scalar_t3.c2 ) tt on correlated_scalar_t2.c2 > tt.c1); + """ + exception "Unsupported accesss outer join's column under join operator" + } + + test { + sql """ + select c1 from correlated_scalar_t1 where correlated_scalar_t1.c2 > (select min(correlated_scalar_t2.c1) from correlated_scalar_t2 join correlated_scalar_t3 on correlated_scalar_t1.c1 = correlated_scalar_t3.c2 ); + """ + exception "Unsupported accesss outer join's column under join operator" + } +} \ No newline at end of file