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,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