should be it

This commit is contained in:
2025-10-24 19:21:19 -05:00
parent a4b23fc57c
commit f09560c7b1
14047 changed files with 3161551 additions and 1 deletions

View File

@@ -0,0 +1,129 @@
# name: test/sql/subquery/exists/test_correlated_exists.test
# description: Test correlated exists
# group: [exists]
statement ok
SET default_null_order='nulls_first';
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE integers(i INTEGER)
statement ok
INSERT INTO integers VALUES (1), (2), (3), (NULL)
# correlated EXISTS
query IT
SELECT i, EXISTS(SELECT i FROM integers WHERE i1.i>2) FROM integers i1 ORDER BY i;
----
NULL 0
1 0
2 0
3 1
query IT
SELECT i, EXISTS(SELECT i FROM integers WHERE i=i1.i) FROM integers i1 ORDER BY i;
----
NULL 0
1 1
2 1
3 1
query IT
SELECT i, EXISTS(SELECT i FROM integers WHERE i IS NULL OR i>i1.i*10) FROM integers i1 ORDER BY i;
----
NULL 1
1 1
2 1
3 1
query IT
SELECT i, EXISTS(SELECT i FROM integers WHERE i1.i>i OR i1.i IS NULL) FROM integers i1 ORDER BY i;
----
NULL 1
1 0
2 1
3 1
query I
SELECT i FROM integers i1 WHERE EXISTS(SELECT i FROM integers WHERE i=i1.i) ORDER BY i;
----
1
2
3
# correlated EXISTS with aggregations
query T
SELECT EXISTS(SELECT i FROM integers WHERE i>MIN(i1.i)) FROM integers i1;
----
1
query IR
SELECT i, SUM(i) FROM integers i1 GROUP BY i HAVING EXISTS(SELECT i FROM integers WHERE i>MIN(i1.i)) ORDER BY i;
----
1 1.000000
2 2.000000
query T
SELECT EXISTS(SELECT i+MIN(i1.i) FROM integers WHERE i=3) FROM integers i1;
----
1
query T
SELECT EXISTS(SELECT i+MIN(i1.i) FROM integers WHERE i=5) FROM integers i1;
----
0
# GROUP BY correlated exists
query TI
SELECT EXISTS(SELECT i FROM integers WHERE i=i1.i) AS g, COUNT(*) FROM integers i1 GROUP BY g ORDER BY g;
----
0 1
1 3
# SUM on exists
query R
SELECT SUM(CASE WHEN EXISTS(SELECT i FROM integers WHERE i=i1.i) THEN 1 ELSE 0 END) FROM integers i1;
----
3.000000
# aggregates with multiple parameters
query R
SELECT (SELECT COVAR_POP(i1.i, i2.i) FROM integers i2) FROM integers i1 ORDER BY 1
----
NULL
0.000000
0.000000
0.000000
query R
SELECT (SELECT COVAR_POP(i2.i, i1.i) FROM integers i2) FROM integers i1 ORDER BY 1
----
NULL
0.000000
0.000000
0.000000
query R
SELECT (SELECT COVAR_POP(i1.i+i2.i, i1.i+i2.i) FROM integers i2) FROM integers i1 ORDER BY 1
----
NULL
0.666667
0.666667
0.666667
query R
SELECT (SELECT COVAR_POP(i2.i, i2.i) FROM integers i2) FROM integers i1 ORDER BY 1;
----
0.666667
0.666667
0.666667
0.666667
query R
SELECT (SELECT COVAR_POP(i1.i, i1.i) FROM integers i2 LIMIT 1) FROM integers i1 ORDER BY 1;
----
0.666667

View File

@@ -0,0 +1,24 @@
# name: test/sql/subquery/exists/test_exists_union_by_name.test
# description: Test exists subquery with union by name
# group: [exists]
statement ok
create table all_types as select * exclude(small_enum, medium_enum, large_enum) from test_all_types() limit 0;
statement ok
SELECT (
EXISTS(
(
SELECT
DISTINCT outer_alltypes."BIGINT", outer_alltypes."INT"
FROM all_types inner_alltypes_1
WHERE inner_alltypes_1."BIGINT" GROUP BY NULL
)
UNION BY NAME
(
SELECT inner2."FLOAT" from all_types inner2
)
) IS DISTINCT FROM outer_alltypes."struct"
)
FROM all_types outer_alltypes GROUP BY ALL;

View File

@@ -0,0 +1,30 @@
# name: test/sql/subquery/exists/test_issue_9308.test
# description: Issue #9308: wrong result: NOT EXISTS predicate with correlated non-equality comparison
# group: [exists]
statement ok
PRAGMA enable_verification
statement ok
create or replace table t1(c1 int64);
statement ok
insert into t1 values (1);
statement ok
create or replace table t2(c1 int64);
query II
select c1, not exists (select 1 from t2 where t1.c1 <= t2.c1) from t1;
----
1 true
query I
select c1 from t1 where not exists (select 1 from t2 where t1.c1 <= t2.c1);
----
1
query I
select c1 from t1 anti join t2 on (t1.c1 <= t2.c1)
----
1

View File

@@ -0,0 +1,36 @@
# name: test/sql/subquery/exists/test_scalar_exists.test
# description: Test scalar EXISTS query
# group: [exists]
statement ok
PRAGMA enable_verification
query T
SELECT EXISTS(SELECT 1)
----
1
statement ok
CREATE TABLE integers(i INTEGER)
statement ok
INSERT INTO integers VALUES (1), (2), (3), (NULL)
query T
SELECT EXISTS(SELECT 1) FROM integers
----
1
1
1
1
query T
SELECT EXISTS(SELECT * FROM integers)
----
1
query T
SELECT EXISTS(SELECT * FROM integers WHERE i IS NULL)
----
1

View File

@@ -0,0 +1,118 @@
# name: test/sql/subquery/exists/test_uncorrelated_exists_subquery.test
# description: Test uncorrelated exists subqueries
# group: [exists]
statement ok
SET default_null_order='nulls_first';
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE integers(i INTEGER)
statement ok
INSERT INTO integers VALUES (1), (2), (3), (NULL)
# uncorrelated EXISTS
query I
SELECT * FROM integers WHERE EXISTS(SELECT 1) ORDER BY i
----
NULL
1
2
3
query I
SELECT * FROM integers WHERE EXISTS(SELECT * FROM integers) ORDER BY i
----
NULL
1
2
3
query I
SELECT * FROM integers WHERE NOT EXISTS(SELECT * FROM integers) ORDER BY i
----
query I
SELECT * FROM integers WHERE EXISTS(SELECT NULL) ORDER BY i
----
NULL
1
2
3
# exists in SELECT clause
query T
SELECT EXISTS(SELECT * FROM integers)
----
1
query T
SELECT EXISTS(SELECT * FROM integers WHERE i>10)
----
0
# multiple exists
query TT
SELECT EXISTS(SELECT * FROM integers), EXISTS(SELECT * FROM integers)
----
1 1
# exists used in operations
query T
SELECT EXISTS(SELECT * FROM integers) AND EXISTS(SELECT * FROM integers)
----
1
# nested EXISTS
query T
SELECT EXISTS(SELECT EXISTS(SELECT * FROM integers))
----
1
# uncorrelated IN
query I
SELECT * FROM integers WHERE 1 IN (SELECT 1) ORDER BY i
----
NULL
1
2
3
query I
SELECT * FROM integers WHERE 1 IN (SELECT * FROM integers) ORDER BY i
----
NULL
1
2
3
query I
SELECT * FROM integers WHERE 1 IN (SELECT NULL::INTEGER) ORDER BY i
----
# scalar NULL results
query T
SELECT 1 IN (SELECT NULL::INTEGER) FROM integers
----
NULL
NULL
NULL
NULL
query T
SELECT NULL IN (SELECT * FROM integers) FROM integers
----
NULL
NULL
NULL
NULL
# add aggregations after the subquery
query R
SELECT SUM(i) FROM integers WHERE 1 IN (SELECT * FROM integers)
----
6.000000