Files
email-tracker/external/duckdb/test/sql/join/empty_joins.test
2025-10-24 19:21:19 -05:00

127 lines
2.3 KiB
SQL

# name: test/sql/join/empty_joins.test
# description: Test joins with empty inputs
# group: [join]
statement ok
CREATE TABLE integers AS SELECT i FROM range(10) tbl(i)
statement ok
CREATE TABLE integers2 AS SELECT i FROM range(10) tbl(i)
statement ok
CREATE VIEW integers_empty AS SELECT * FROM integers WHERE rowid>100
statement ok
CREATE VIEW integers2_empty AS SELECT * FROM integers WHERE rowid>100
statement ok
CREATE VIEW empty_join AS SELECT * FROM integers JOIN integers2_empty USING (i)
# empty LHS
query I
SELECT COUNT(*) FROM integers_empty JOIN integers2 USING (i)
----
0
query I
SELECT COUNT(*) FROM integers_empty JOIN integers2 ON (integers_empty.i>integers2.i)
----
0
query I
SELECT COUNT(*) FROM integers_empty JOIN integers2 ON (integers_empty.i<>integers2.i)
----
0
query I
SELECT COUNT(*) FROM integers_empty JOIN integers2 ON (integers_empty.i<>integers2.i OR integers_empty.i+1<>integers2.i)
----
0
query I
SELECT * FROM integers_empty JOIN integers2 USING (i)
----
query I
SELECT COUNT(*) FROM integers_empty LEFT JOIN integers2 USING (i)
----
0
query I
SELECT * FROM integers_empty LEFT JOIN integers2 USING (i)
----
query I
SELECT COUNT(*) FROM integers_empty RIGHT JOIN integers2 USING (i)
----
10
query I
SELECT COUNT(*) FROM integers_empty FULL OUTER JOIN integers2 USING (i)
----
10
# empty RHS
query I
SELECT COUNT(*) FROM integers JOIN integers2_empty USING (i)
----
0
query I
SELECT * FROM integers JOIN integers2_empty USING (i)
----
query I
SELECT COUNT(*) FROM integers LEFT JOIN integers2_empty USING (i)
----
10
query I
SELECT COUNT(*) FROM integers RIGHT JOIN integers2_empty USING (i)
----
0
query I
SELECT * FROM integers RIGHT JOIN integers2_empty USING (i)
----
query I
SELECT COUNT(*) FROM integers FULL OUTER JOIN integers2_empty USING (i)
----
10
query II
SELECT integers.*, integers2_empty.* FROM integers FULL OUTER JOIN integers2_empty USING (i)
----
0 NULL
1 NULL
2 NULL
3 NULL
4 NULL
5 NULL
6 NULL
7 NULL
8 NULL
9 NULL
# nested empty
query I
SELECT COUNT(*) FROM integers JOIN empty_join USING (i)
----
0
query I
SELECT COUNT(*) FROM integers LEFT JOIN empty_join USING (i)
----
10
query I
SELECT COUNT(*) FROM integers RIGHT JOIN empty_join USING (i)
----
0
query I
SELECT COUNT(*) FROM integers FULL OUTER JOIN empty_join USING (i)
----
10