should be it
This commit is contained in:
238
external/duckdb/test/sql/function/generic/test_in.test
vendored
Normal file
238
external/duckdb/test/sql/function/generic/test_in.test
vendored
Normal file
@@ -0,0 +1,238 @@
|
||||
# name: test/sql/function/generic/test_in.test
|
||||
# description: Test IN statement
|
||||
# group: [generic]
|
||||
|
||||
statement ok
|
||||
SET default_null_order='nulls_first';
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1), (2), (3), (NULL);
|
||||
|
||||
query I
|
||||
SELECT * FROM integers WHERE i IN (1, 2) ORDER BY i
|
||||
----
|
||||
1
|
||||
2
|
||||
|
||||
query I
|
||||
SELECT * FROM integers WHERE i IN (1, 2, 3, 4, 5, 6, 7, 8) ORDER BY i
|
||||
----
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
query IT
|
||||
SELECT i, i IN (1, 2, 3, 4, 5, 6, 7, 8) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
|
||||
query IT
|
||||
SELECT i, i NOT IN (1, 3, 4, 5, 6, 7, 8) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 0
|
||||
2 1
|
||||
3 0
|
||||
|
||||
query II
|
||||
SELECT i, i IN (1, 2, NULL, 4, 5, 6, 7, 8) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 1
|
||||
2 1
|
||||
3 NULL
|
||||
|
||||
query IT
|
||||
SELECT i, i IN (i + 1) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 0
|
||||
2 0
|
||||
3 0
|
||||
|
||||
query IT
|
||||
SELECT i, i IN (i + 1, 42, i) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
|
||||
query IT
|
||||
SELECT i, 1 IN (i - 1, i, i + 1) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 1
|
||||
2 1
|
||||
3 0
|
||||
|
||||
query IT
|
||||
SELECT i, 1 NOT IN (i - 1, i, i + 1) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 0
|
||||
2 0
|
||||
3 1
|
||||
|
||||
query IT
|
||||
SELECT i, i IN (11, 12, 13, 14, 15, 16, 17, 18, 1, i) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
|
||||
query IT
|
||||
SELECT i, i NOT IN (11, 12, 13, 14, 15, 16, 17, 18, 1, i) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 0
|
||||
2 0
|
||||
3 0
|
||||
|
||||
query IT
|
||||
SELECT i, 1 IN (11, 12, 13, 14, 15, 16, 17, 18, 1, i) FROM integers ORDER BY i
|
||||
----
|
||||
NULL 1
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
|
||||
query IT
|
||||
SELECT i, 1 NOT IN (11, 12, 13, 14, 15, 16, 17, 18, 1, i) FROM integers ORDER BY i
|
||||
----
|
||||
NULL 0
|
||||
1 0
|
||||
2 0
|
||||
3 0
|
||||
|
||||
query IT
|
||||
SELECT i, i IN ((SELECT MAX(i) FROM integers), (SELECT MIN(i) FROM integers)) FROM integers ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 1
|
||||
2 0
|
||||
3 1
|
||||
|
||||
query III
|
||||
SELECT i, (SELECT MAX(i) FROM integers WHERE i <> i1.i), (SELECT MIN(i) FROM integers WHERE i <= i1.i) FROM integers i1 ORDER BY i
|
||||
----
|
||||
NULL NULL NULL
|
||||
1 3 1
|
||||
2 3 1
|
||||
3 2 1
|
||||
|
||||
query IT
|
||||
SELECT i, i IN ((SELECT MAX(i) FROM integers WHERE i <> i1.i), (SELECT MIN(i) FROM integers WHERE i <= i1.i)) FROM integers i1 ORDER BY i
|
||||
----
|
||||
NULL NULL
|
||||
1 1
|
||||
2 0
|
||||
3 0
|
||||
|
||||
query I
|
||||
SELECT 1 IN [1, 2, 3];
|
||||
----
|
||||
true
|
||||
|
||||
query I
|
||||
SELECT 1 IN [2, 2, 3];
|
||||
----
|
||||
false
|
||||
|
||||
statement ok
|
||||
PREPARE v1 AS SELECT 1 IN ?
|
||||
|
||||
query I
|
||||
EXECUTE v1([]);
|
||||
----
|
||||
false
|
||||
|
||||
query I
|
||||
SELECT 1 IN [];
|
||||
----
|
||||
false
|
||||
|
||||
query I
|
||||
EXECUTE v1([1, 2, 3]);
|
||||
----
|
||||
true
|
||||
|
||||
query I
|
||||
EXECUTE v1([2, 2, 3]);
|
||||
----
|
||||
false
|
||||
|
||||
# Test <expr> IN <column_ref>
|
||||
|
||||
query I
|
||||
with list_provider as (
|
||||
select [1, 2] as lst
|
||||
)
|
||||
SELECT i FROM (
|
||||
from integers, list_provider
|
||||
) t(i, lst) WHERE i IN lst ORDER BY i
|
||||
----
|
||||
1
|
||||
2
|
||||
|
||||
query I
|
||||
with list_provider as (
|
||||
select [1, 2, 3, 4, 5, 6, 7, 8] as lst
|
||||
)
|
||||
SELECT i FROM (
|
||||
from integers, list_provider
|
||||
) t(i, lst) WHERE i IN lst ORDER BY i
|
||||
----
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
query II
|
||||
with list_provider as (
|
||||
select [1, 2, 3, 4, 5, 6, 7, 8] as lst
|
||||
)
|
||||
SELECT i, i IN lst FROM (
|
||||
from integers, list_provider
|
||||
) t(i, lst) order by i
|
||||
----
|
||||
NULL NULL
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
|
||||
query II
|
||||
with list_provider as (
|
||||
select [1, 3, 4, 5, 6, 7, 8] as lst
|
||||
)
|
||||
SELECT i, i NOT IN lst FROM (
|
||||
from integers, list_provider
|
||||
) t(i, lst) order by i
|
||||
----
|
||||
NULL NULL
|
||||
1 0
|
||||
2 1
|
||||
3 0
|
||||
|
||||
query II
|
||||
with list_provider as (
|
||||
select [1, 2, NULL, 4, 5, 6, 7, 8] as lst
|
||||
)
|
||||
SELECT i, i IN lst FROM (
|
||||
from integers, list_provider
|
||||
) t(i, lst) order by i
|
||||
----
|
||||
NULL NULL
|
||||
1 1
|
||||
2 1
|
||||
3 0
|
||||
|
||||
# ^ Note the '0' on the last row
|
||||
# This is different from regular IN behavior
|
||||
|
||||
Reference in New Issue
Block a user