should be it
This commit is contained in:
23
external/duckdb/test/sql/subquery/any_all/issue_2999.test
vendored
Normal file
23
external/duckdb/test/sql/subquery/any_all/issue_2999.test
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
# name: test/sql/subquery/any_all/issue_2999.test
|
||||
# description: Issue #2999: Correlated group on ANY subquery
|
||||
# group: [any_all]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE t0 (c0 INT);
|
||||
|
||||
statement ok
|
||||
CREATE TABLE t1 (c0 INT);
|
||||
|
||||
statement ok
|
||||
INSERT INTO t0 VALUES (1);
|
||||
|
||||
statement ok
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
||||
query I
|
||||
SELECT 1 = ANY(SELECT 1 FROM t1 JOIN (SELECT count(*) GROUP BY t0.c0) AS x(x) ON TRUE) FROM t0;
|
||||
----
|
||||
true
|
||||
27
external/duckdb/test/sql/subquery/any_all/subquery_in.test
vendored
Normal file
27
external/duckdb/test/sql/subquery/any_all/subquery_in.test
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
# name: test/sql/subquery/any_all/subquery_in.test
|
||||
# description: Test subquery in IN clause
|
||||
# group: [any_all]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE t0 (c0 TIME,c1 DOUBLE PRECISION);
|
||||
|
||||
statement ok
|
||||
CREATE TABLE t1 (c0 INT);
|
||||
|
||||
statement ok
|
||||
INSERT INTO t1 VALUES (1),(10),(7),(9),(NULL),(1),(7),(7),(0),(8),(0),(9),(NULL),(5),(3),(8),(0);
|
||||
|
||||
statement error
|
||||
SELECT (FALSE) IN (TRUE, (SELECT TIME '13:35:07' FROM t1) BETWEEN t0.c0 AND t0.c0) FROM t0;
|
||||
----
|
||||
More than one row returned
|
||||
|
||||
statement ok
|
||||
SET scalar_subquery_error_on_multiple_rows=false
|
||||
|
||||
query I
|
||||
SELECT (FALSE) IN (TRUE, (SELECT TIME '13:35:07' FROM t1) BETWEEN t0.c0 AND t0.c0) FROM t0;
|
||||
----
|
||||
92
external/duckdb/test/sql/subquery/any_all/test_any_all.test
vendored
Normal file
92
external/duckdb/test/sql/subquery/any_all/test_any_all.test
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
# name: test/sql/subquery/any_all/test_any_all.test
|
||||
# description: Test ANY/ALL queries
|
||||
# group: [any_all]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1), (2), (3)
|
||||
|
||||
# ANY is like EXISTS without NULL values
|
||||
query T
|
||||
SELECT 2 > ANY(SELECT * FROM integers)
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 1 > ANY(SELECT * FROM integers)
|
||||
----
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT 4 > ALL(SELECT * FROM integers)
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 1 > ALL(SELECT * FROM integers)
|
||||
----
|
||||
0
|
||||
|
||||
# NULL input always results in NULL output
|
||||
query T
|
||||
SELECT NULL > ANY(SELECT * FROM integers)
|
||||
----
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT NULL > ALL(SELECT * FROM integers)
|
||||
----
|
||||
NULL
|
||||
|
||||
# now with a NULL value in the input
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (NULL)
|
||||
|
||||
# ANY returns either true or NULL
|
||||
query T
|
||||
SELECT 2 > ANY(SELECT * FROM integers)
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 1 > ANY(SELECT * FROM integers)
|
||||
----
|
||||
NULL
|
||||
|
||||
# ALL returns either NULL or false
|
||||
query T
|
||||
SELECT 4 > ALL(SELECT * FROM integers)
|
||||
----
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT 1 > ALL(SELECT * FROM integers)
|
||||
----
|
||||
0
|
||||
|
||||
# NULL input always results in NULL
|
||||
query T
|
||||
SELECT NULL > ANY(SELECT * FROM integers)
|
||||
----
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT NULL > ALL(SELECT * FROM integers)
|
||||
----
|
||||
NULL
|
||||
|
||||
# unsupported comparisons
|
||||
statement error
|
||||
SELECT 2 ^ ANY(SELECT * FROM integers)
|
||||
----
|
||||
Parser Error: ANY and ALL operators require one of =,<>,>,<,>=,<= comparisons!
|
||||
|
||||
statement error
|
||||
SELECT 2 ^ ANY([1, 2, 3])
|
||||
----
|
||||
Parser Error: Unsupported comparison "^" for ANY/ALL subquery
|
||||
184
external/duckdb/test/sql/subquery/any_all/test_correlated_any_all.test
vendored
Normal file
184
external/duckdb/test/sql/subquery/any_all/test_correlated_any_all.test
vendored
Normal file
@@ -0,0 +1,184 @@
|
||||
# name: test/sql/subquery/any_all/test_correlated_any_all.test
|
||||
# description: Test correlated ANY/ALL subqueries
|
||||
# group: [any_all]
|
||||
|
||||
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 ANY/ALL
|
||||
query T
|
||||
SELECT i=ANY(SELECT i FROM integers WHERE i=i1.i) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT i>ALL(SELECT (i+i1.i-1)/2 FROM integers WHERE i IS NOT NULL) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
NULL
|
||||
0
|
||||
0
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT i=ALL(SELECT i FROM integers WHERE i<>i1.i) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
|
||||
# correlated ANY/ALL
|
||||
query I
|
||||
SELECT i FROM integers i1 WHERE i=ANY(SELECT i FROM integers WHERE i=i1.i) ORDER BY i;
|
||||
----
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT i FROM integers i1 WHERE i<>ANY(SELECT i FROM integers WHERE i=i1.i) ORDER BY i;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT i FROM integers i1 WHERE i=ANY(SELECT i FROM integers WHERE i<>i1.i) ORDER BY i;
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT i FROM integers i1 WHERE i>ANY(SELECT i FROM integers WHERE i<>i1.i) ORDER BY i;
|
||||
----
|
||||
2
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT i FROM integers i1 WHERE i>ALL(SELECT (i+i1.i-1)/2 FROM integers WHERE i IS NOT NULL) ORDER BY i;
|
||||
----
|
||||
3
|
||||
|
||||
# if there is i=ANY() where the subquery returns an EMPTY result set and i=NULL, the result becomes FALSE instead
|
||||
# of NULL
|
||||
query T
|
||||
SELECT i=ALL(SELECT i FROM integers WHERE i=i1.i) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT i=ANY(SELECT i FROM integers WHERE i=i1.i) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT i<>ALL(SELECT i FROM integers WHERE i=i1.i) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT i<>ANY(SELECT i FROM integers WHERE i=i1.i) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT i=ALL(SELECT i FROM integers WHERE i<>i1.i) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT i=ANY(SELECT i FROM integers WHERE i<>i1.i) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT i>ANY(SELECT i FROM integers WHERE i<>i1.i) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT i>ALL(SELECT (i+i1.i-1)/2 FROM integers) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
NULL
|
||||
0
|
||||
0
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT i>ALL(SELECT (i+i1.i-1)/2 FROM integers WHERE i IS NOT NULL) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
NULL
|
||||
0
|
||||
0
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT i=ANY(SELECT i FROM integers WHERE i=i1.i OR i IS NULL) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
NULL
|
||||
1
|
||||
1
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT i=ALL(SELECT i FROM integers WHERE i=i1.i OR i IS NULL) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
# correlated ANY/ALL with aggregations
|
||||
query T
|
||||
SELECT MIN(i)>ANY(SELECT i FROM integers WHERE i>MIN(i1.i)) FROM integers i1;
|
||||
----
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT SUM(i)>ANY(SELECT i FROM integers WHERE i>MIN(i1.i)) FROM integers i1;
|
||||
----
|
||||
1
|
||||
|
||||
# correlated subquery with correlated any
|
||||
query T
|
||||
SELECT (SELECT SUM(i)+SUM(i1.i) FROM integers)>ANY(SELECT i FROM integers WHERE i>MIN(i1.i)) FROM integers i1;
|
||||
----
|
||||
1
|
||||
|
||||
# zero results for all
|
||||
query T
|
||||
SELECT i=ANY(SELECT i FROM integers WHERE i=i1.i AND i>10) FROM integers i1 ORDER BY i;
|
||||
----
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
|
||||
49
external/duckdb/test/sql/subquery/any_all/test_scalar_any_all.test
vendored
Normal file
49
external/duckdb/test/sql/subquery/any_all/test_scalar_any_all.test
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
# name: test/sql/subquery/any_all/test_scalar_any_all.test
|
||||
# description: Test scalar ANY/ALL queries
|
||||
# group: [any_all]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
# scalar ANY
|
||||
query T
|
||||
SELECT 1 = ANY(SELECT 1)
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 1 = ANY(SELECT NULL)
|
||||
----
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT 1 = ANY(SELECT 2)
|
||||
----
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT NULL = ANY(SELECT 2)
|
||||
----
|
||||
NULL
|
||||
|
||||
# scalar ALL
|
||||
query T
|
||||
SELECT 1 = ALL(SELECT 1)
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 1 = ALL(SELECT NULL)
|
||||
----
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT 1 = ALL(SELECT 2)
|
||||
----
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT NULL = ALL(SELECT 2)
|
||||
----
|
||||
NULL
|
||||
|
||||
79
external/duckdb/test/sql/subquery/any_all/test_scalar_in.test
vendored
Normal file
79
external/duckdb/test/sql/subquery/any_all/test_scalar_in.test
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
# name: test/sql/subquery/any_all/test_scalar_in.test
|
||||
# description: Test scalar IN query
|
||||
# group: [any_all]
|
||||
|
||||
statement ok
|
||||
SET default_null_order='nulls_first';
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
query T
|
||||
SELECT 1 IN (SELECT 1)
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT NULL IN (SELECT 1)
|
||||
----
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT 1 IN (SELECT NULL)
|
||||
----
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT 1 IN (SELECT 2)
|
||||
----
|
||||
0
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1), (2), (3)
|
||||
|
||||
query T
|
||||
SELECT 4 IN (SELECT * FROM integers)
|
||||
----
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT 1 IN (SELECT * FROM integers)
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 1 IN (SELECT * FROM integers) FROM integers
|
||||
----
|
||||
1
|
||||
1
|
||||
1
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (NULL)
|
||||
|
||||
query T
|
||||
SELECT 4 IN (SELECT * FROM integers)
|
||||
----
|
||||
NULL
|
||||
|
||||
query T
|
||||
SELECT 1 IN (SELECT * FROM integers)
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT * FROM integers WHERE (4 IN (SELECT * FROM integers)) IS NULL ORDER BY 1
|
||||
----
|
||||
NULL
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT * FROM integers WHERE (i IN (SELECT * FROM integers)) IS NULL ORDER BY 1
|
||||
----
|
||||
NULL
|
||||
|
||||
36
external/duckdb/test/sql/subquery/any_all/test_simple_not_in.test
vendored
Normal file
36
external/duckdb/test/sql/subquery/any_all/test_simple_not_in.test
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
# name: test/sql/subquery/any_all/test_simple_not_in.test
|
||||
# description: Test subqueries with (NOT) IN clause
|
||||
# group: [any_all]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
# scalar subquery
|
||||
query I
|
||||
SELECT 1 AS one WHERE 1 IN (SELECT 1);
|
||||
----
|
||||
1
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test (id INTEGER, b INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (1, 22)
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (2, 21)
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (3, 23)
|
||||
|
||||
query II
|
||||
SELECT * FROM test WHERE b IN (SELECT b FROM test WHERE b * id < 30) ORDER BY id, b
|
||||
----
|
||||
1 22
|
||||
|
||||
query II
|
||||
SELECT * FROM test WHERE b NOT IN (SELECT b FROM test WHERE b * id < 30) ORDER BY id, b
|
||||
----
|
||||
2 21
|
||||
3 23
|
||||
|
||||
219
external/duckdb/test/sql/subquery/any_all/test_uncorrelated_all_subquery.test
vendored
Normal file
219
external/duckdb/test/sql/subquery/any_all/test_uncorrelated_all_subquery.test
vendored
Normal file
@@ -0,0 +1,219 @@
|
||||
# name: test/sql/subquery/any_all/test_uncorrelated_all_subquery.test
|
||||
# description: Test uncorrelated ALL subqueries
|
||||
# group: [any_all]
|
||||
|
||||
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 ALL
|
||||
query I
|
||||
SELECT i FROM integers WHERE i >= ALL(SELECT i FROM integers)
|
||||
----
|
||||
|
||||
query IT
|
||||
SELECT i, i >= ALL(SELECT i FROM integers) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 0
|
||||
2 0
|
||||
3 NULL
|
||||
|
||||
query I
|
||||
SELECT i FROM integers WHERE i >= ALL(SELECT i FROM integers WHERE i IS NOT NULL)
|
||||
----
|
||||
3
|
||||
|
||||
query IT
|
||||
SELECT i, i >= ALL(SELECT i FROM integers WHERE i IS NOT NULL) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 0
|
||||
2 0
|
||||
3 1
|
||||
|
||||
query I
|
||||
SELECT i FROM integers WHERE i >= ALL(SELECT i FROM integers WHERE i IS NOT NULL)
|
||||
----
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT i FROM integers WHERE i > ALL(SELECT MIN(i) FROM integers)
|
||||
----
|
||||
2
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT i FROM integers WHERE i < ALL(SELECT MAX(i) FROM integers) ORDER BY 1
|
||||
----
|
||||
1
|
||||
2
|
||||
|
||||
query I
|
||||
SELECT i FROM integers WHERE i <= ALL(SELECT i FROM integers)
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT i FROM integers WHERE i <= ALL(SELECT i FROM integers WHERE i IS NOT NULL)
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT i FROM integers WHERE i = ALL(SELECT i FROM integers WHERE i=1)
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT i FROM integers WHERE i <> ALL(SELECT i FROM integers WHERE i=1)
|
||||
----
|
||||
2
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT i FROM integers WHERE i = ALL(SELECT i FROM integers WHERE i IS NOT NULL)
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT i FROM integers WHERE i <> ALL(SELECT i FROM integers WHERE i IS NOT NULL)
|
||||
----
|
||||
|
||||
# zero results always results in TRUE for ALL, even if "i" is NULL
|
||||
query I
|
||||
SELECT i FROM integers WHERE i <> ALL(SELECT i FROM integers WHERE i>10) ORDER BY i;
|
||||
----
|
||||
NULL
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
query IT
|
||||
SELECT i, i <> ALL(SELECT i FROM integers WHERE i>10) FROM integers ORDER BY i;
|
||||
----
|
||||
NULL 1
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
|
||||
# zero results always results in FALSE for ANY
|
||||
query IT
|
||||
SELECT i, i > ANY(SELECT i FROM integers WHERE i>10) FROM integers ORDER BY i;
|
||||
----
|
||||
NULL 0
|
||||
1 0
|
||||
2 0
|
||||
3 0
|
||||
|
||||
query IT
|
||||
SELECT i, i = ANY(SELECT i FROM integers WHERE i>10) FROM integers ORDER BY i;
|
||||
----
|
||||
NULL 0
|
||||
1 0
|
||||
2 0
|
||||
3 0
|
||||
|
||||
query IT
|
||||
SELECT i, i >= ANY(SELECT i FROM integers WHERE i>10) FROM integers ORDER BY i;
|
||||
----
|
||||
NULL 0
|
||||
1 0
|
||||
2 0
|
||||
3 0
|
||||
|
||||
query IT
|
||||
SELECT i, i <= ANY(SELECT i FROM integers WHERE i>10) FROM integers ORDER BY i;
|
||||
----
|
||||
NULL 0
|
||||
1 0
|
||||
2 0
|
||||
3 0
|
||||
|
||||
query IT
|
||||
SELECT i, i < ANY(SELECT i FROM integers WHERE i>10) FROM integers ORDER BY i;
|
||||
----
|
||||
NULL 0
|
||||
1 0
|
||||
2 0
|
||||
3 0
|
||||
|
||||
query IT
|
||||
SELECT i, i <> ANY(SELECT i FROM integers WHERE i>10) FROM integers ORDER BY i;
|
||||
----
|
||||
NULL 0
|
||||
1 0
|
||||
2 0
|
||||
3 0
|
||||
|
||||
# nested uncorrelated subqueries
|
||||
query I
|
||||
SELECT (SELECT (SELECT (SELECT 42)))
|
||||
----
|
||||
42
|
||||
|
||||
query T
|
||||
SELECT (SELECT EXISTS(SELECT * FROM integers WHERE i>2)) FROM integers;
|
||||
----
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
|
||||
query IR
|
||||
SELECT (SELECT MAX(i) FROM integers) AS k, SUM(i) FROM integers GROUP BY k;
|
||||
----
|
||||
3 6.000000
|
||||
|
||||
# subqueries in GROUP BY clause
|
||||
query TR
|
||||
SELECT i >= ALL(SELECT i FROM integers WHERE i IS NOT NULL) AS k, SUM(i) FROM integers GROUP BY k ORDER BY k;
|
||||
----
|
||||
NULL NULL
|
||||
0 3.000000
|
||||
1 3.000000
|
||||
|
||||
query R
|
||||
SELECT SUM(i) FROM integers GROUP BY (i >= ALL(SELECT i FROM integers WHERE i IS NOT NULL)) ORDER BY 1;
|
||||
----
|
||||
NULL
|
||||
3.000000
|
||||
3.000000
|
||||
|
||||
query TR
|
||||
SELECT i >= ALL(SELECT MIN(i) FROM integers WHERE i IS NOT NULL) AS k, SUM(i) FROM integers GROUP BY k ORDER BY k;
|
||||
----
|
||||
NULL NULL
|
||||
1 6.000000
|
||||
|
||||
# subquery in CASE statement
|
||||
query IR
|
||||
SELECT i, SUM(CASE WHEN (i >= ALL(SELECT i FROM integers WHERE i=2)) THEN 1 ELSE 0 END) FROM integers GROUP BY i ORDER BY i;
|
||||
----
|
||||
NULL 0.000000
|
||||
1 0.000000
|
||||
2 1.000000
|
||||
3 1.000000
|
||||
|
||||
# subquery in HAVING
|
||||
query IR
|
||||
SELECT i % 2 AS k, SUM(i) FROM integers GROUP BY k HAVING SUM(i) > (SELECT MAX(i) FROM integers)
|
||||
----
|
||||
1 4.000000
|
||||
|
||||
query I
|
||||
SELECT i FROM integers WHERE NOT(i IN (SELECT i FROM integers WHERE i>1));
|
||||
----
|
||||
1
|
||||
|
||||
# multiple subqueries in select without FROM
|
||||
query RI
|
||||
SELECT (SELECT SUM(i) FROM integers), (SELECT 42)
|
||||
----
|
||||
6.000000 42
|
||||
|
||||
134
external/duckdb/test/sql/subquery/any_all/test_uncorrelated_any_subquery.test
vendored
Normal file
134
external/duckdb/test/sql/subquery/any_all/test_uncorrelated_any_subquery.test
vendored
Normal file
@@ -0,0 +1,134 @@
|
||||
# name: test/sql/subquery/any_all/test_uncorrelated_any_subquery.test
|
||||
# description: Test uncorrelated ANY subqueries
|
||||
# group: [any_all]
|
||||
|
||||
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 ANY
|
||||
query I
|
||||
SELECT i FROM integers WHERE i <= ANY(SELECT i FROM integers)
|
||||
----
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT i FROM integers WHERE i > ANY(SELECT i FROM integers) ORDER BY 1
|
||||
----
|
||||
2
|
||||
3
|
||||
|
||||
query IT
|
||||
SELECT i, i > ANY(SELECT i FROM integers) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 NULL
|
||||
2 1
|
||||
3 1
|
||||
|
||||
query IT
|
||||
SELECT i, i > ANY(SELECT i FROM integers WHERE i IS NOT NULL) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 0
|
||||
2 1
|
||||
3 1
|
||||
|
||||
query IT
|
||||
SELECT i, NULL > ANY(SELECT i FROM integers) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 NULL
|
||||
2 NULL
|
||||
3 NULL
|
||||
|
||||
query IT
|
||||
SELECT i, NULL > ANY(SELECT i FROM integers WHERE i IS NOT NULL) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 NULL
|
||||
2 NULL
|
||||
3 NULL
|
||||
|
||||
query I
|
||||
SELECT i FROM integers WHERE i = ANY(SELECT i FROM integers) order by i
|
||||
----
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
query IT
|
||||
SELECT i, i = ANY(SELECT i FROM integers WHERE i>2) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 0
|
||||
2 0
|
||||
3 1
|
||||
|
||||
query IT
|
||||
SELECT i, i = ANY(SELECT i FROM integers WHERE i>2 OR i IS NULL) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 NULL
|
||||
2 NULL
|
||||
3 1
|
||||
|
||||
query IT
|
||||
SELECT i, i <> ANY(SELECT i FROM integers WHERE i>2) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 1
|
||||
2 1
|
||||
3 0
|
||||
|
||||
query IT
|
||||
SELECT i, i <> ANY(SELECT i FROM integers WHERE i>2 OR i IS NULL) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 1
|
||||
2 1
|
||||
3 NULL
|
||||
|
||||
# use a bunch of cross products to make bigger data sets (> STANDARD_VECTOR_SIZE)
|
||||
query IT
|
||||
SELECT i, i = ANY(SELECT i1.i FROM integers i1, integers i2, integers i3, integers i4, integers i5, integers i6 WHERE i1.i IS NOT NULL) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
|
||||
query IT
|
||||
SELECT i, i = ANY(SELECT i1.i FROM integers i1, integers i2, integers i3, integers i4, integers i5, integers i6 WHERE i1.i IS NOT NULL AND i1.i <> 2) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 1
|
||||
2 0
|
||||
3 1
|
||||
|
||||
query IT
|
||||
SELECT i, i >= ANY(SELECT i1.i FROM integers i1, integers i2, integers i3, integers i4, integers i5, integers i6 WHERE i1.i IS NOT NULL) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
|
||||
query IT
|
||||
SELECT i, i >= ANY(SELECT i1.i FROM integers i1, integers i2, integers i3, integers i4, integers i5, integers i6 WHERE i1.i IS NOT NULL AND i1.i <> 1 LIMIT 1) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 0
|
||||
2 1
|
||||
3 1
|
||||
|
||||
Reference in New Issue
Block a user