127 lines
2.3 KiB
SQL
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
|