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,39 @@
# name: test/sql/join/right_outer/right_join_complex_null.test
# description: Test RIGHT OUTER JOIN on complex expression involving NULL
# group: [right_outer]
statement ok
PRAGMA enable_verification
statement ok
pragma verify_external
statement ok
CREATE TABLE t0(c0 DATE, PRIMARY KEY(c0));
statement ok
CREATE TABLE t1(c0 VARCHAR DEFAULT(DATE '1969-12-10'), c1 DOUBLE DEFAULT(0.16338108651823613));
statement ok
INSERT INTO t1(c1) VALUES (true);
statement ok
INSERT INTO t1(c0) VALUES (TIMESTAMP '1969-12-13 07:02:08');
statement ok
INSERT INTO t0(c0) VALUES (DATE '1970-01-01'), (TIMESTAMP '1969-12-13 17:49:43');
query I
SELECT MAX('a') FROM t0 JOIN t1 ON ((t0.c0)<=(((NULL)-(t1.rowid))::DATE));
----
NULL
query I
SELECT MAX('a') FROM t0 RIGHT JOIN t1 ON ((t0.c0)<=(((NULL)-(t1.rowid))::DATE));
----
a
statement error
SELECT MAX(agg0) FROM (SELECT MAX('a') AS agg0 FROM t0 RIGHT JOIN t1 ON ((t0.c0)<=(((NULL)-(t1.rowid)))) WHERE t1.c0 UNION ALL SELECT MAX('a') AS agg0 FROM t0 RIGHT JOIN t1 ON ((t0.c0)<=(((NULL)-(t1.rowid)))) WHERE (NOT t1.c0) UNION ALL SELECT MAX('a') AS agg0 FROM t0 RIGHT JOIN t1 ON ((t0.c0)<=(((NULL)-(t1.rowid)))) WHERE ((t1.c0) IS NULL)) as asdf;
----
<REGEX>:.*Binder Error.*Cannot compare values.*

View File

@@ -0,0 +1,156 @@
# name: test/sql/join/right_outer/test_right_outer.test
# description: Test RIGHT OUTER JOIN
# group: [right_outer]
statement ok
PRAGMA enable_verification
statement ok
pragma verify_external
statement ok
CREATE TABLE integers(i INTEGER, j INTEGER)
statement ok
INSERT INTO integers VALUES (1, 2), (2, 3), (3, 4)
statement ok
CREATE TABLE integers2(k INTEGER, l INTEGER)
statement ok
INSERT INTO integers2 VALUES (1, 10), (2, 20)
# all these tests are equivalent to the tests in test_left_outer.test
# but with the tables reversed and using a right outer join instead
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON integers.i=integers2.k ORDER BY i
----
1 2 1 10
2 3 2 20
3 4 NULL NULL
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON integers.i=integers2.k WHERE k IS NOT NULL ORDER BY i
----
1 2 1 10
2 3 2 20
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON integers.i=integers2.k AND integers2.k IS NOT NULL ORDER BY i
----
1 2 1 10
2 3 2 20
3 4 NULL NULL
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON i=1 ORDER BY i, k;
----
1 2 1 10
1 2 2 20
2 3 NULL NULL
3 4 NULL NULL
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON 1=1 ORDER BY i, k;
----
1 2 1 10
1 2 2 20
2 3 1 10
2 3 2 20
3 4 1 10
3 4 2 20
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON 1=2 ORDER BY i;
----
1 2 NULL NULL
2 3 NULL NULL
3 4 NULL NULL
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON NULL<>NULL ORDER BY i;
----
1 2 NULL NULL
2 3 NULL NULL
3 4 NULL NULL
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON i=1 ORDER BY i, k;
----
1 2 1 10
1 2 2 20
2 3 NULL NULL
3 4 NULL NULL
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON l=20 ORDER BY i, k;
----
1 2 2 20
2 3 2 20
3 4 2 20
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON l>0 ORDER BY i, k;
----
1 2 1 10
1 2 2 20
2 3 1 10
2 3 2 20
3 4 1 10
3 4 2 20
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON i=1 OR l=20 ORDER BY i, k;
----
1 2 1 10
1 2 2 20
2 3 2 20
3 4 2 20
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON i=4 OR l=17 ORDER BY i;
----
1 2 NULL NULL
2 3 NULL NULL
3 4 NULL NULL
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON i+l=21 ORDER BY i;
----
1 2 2 20
2 3 NULL NULL
3 4 NULL NULL
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON i+l>12 ORDER BY i, k;
----
1 2 2 20
2 3 2 20
3 4 1 10
3 4 2 20
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON integers.i<integers2.k WHERE integers.i <= 2 ORDER BY i
----
1 2 2 20
2 3 NULL NULL
query IIII
SELECT integers.*, integers2.* FROM integers2 RIGHT OUTER JOIN integers ON integers.i<integers2.k AND integers.i<integers2.l WHERE integers.i <= 2 ORDER BY i
----
1 2 2 20
2 3 NULL NULL
query IIII
SELECT integers.*, integers2.* FROM (SELECT * FROM integers2 WHERE k=100) integers2 RIGHT OUTER JOIN integers ON integers.i<integers2.k ORDER BY i
----
1 2 NULL NULL
2 3 NULL NULL
3 4 NULL NULL
query II
select t1.*, t2.* from (values (2), (3)) t2(i) right join (values(1), (2)) t1(i) on t1.i=t2.i AND t1.i+t2.i=4 ORDER BY 1, 2;
----
1 NULL
2 2