should be it
This commit is contained in:
26
external/duckdb/test/sql/join/full_outer/full_outer_join_cache.test
vendored
Normal file
26
external/duckdb/test/sql/join/full_outer/full_outer_join_cache.test
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# name: test/sql/join/full_outer/full_outer_join_cache.test
|
||||
# description: Test full outer join with caches
|
||||
# group: [full_outer]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
pragma verify_external
|
||||
|
||||
statement ok
|
||||
CREATE TABLE smalltable AS SELECT 1::INTEGER a;
|
||||
|
||||
# values 1...1024 10x
|
||||
statement ok
|
||||
CREATE TABLE bigtable AS SELECT a::INTEGER a FROM generate_series(0, 9999, 1) tbl(a), generate_series(0, 9, 1) tbl2(b);
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM bigtable FULL OUTER JOIN smalltable USING (a)
|
||||
----
|
||||
100000
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM bigtable RIGHT OUTER JOIN smalltable USING (a)
|
||||
----
|
||||
10
|
||||
106
external/duckdb/test/sql/join/full_outer/full_outer_join_union.test
vendored
Normal file
106
external/duckdb/test/sql/join/full_outer/full_outer_join_union.test
vendored
Normal file
@@ -0,0 +1,106 @@
|
||||
# name: test/sql/join/full_outer/full_outer_join_union.test
|
||||
# description: Test FULL OUTER JOIN with unions
|
||||
# group: [full_outer]
|
||||
|
||||
statement ok
|
||||
SET default_null_order='nulls_first';
|
||||
|
||||
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, 1), (3, 3);
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers2(k INTEGER, l INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers2 VALUES (1, 10), (2, 20);
|
||||
|
||||
# equality join
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k
|
||||
UNION ALL
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k
|
||||
ORDER BY i
|
||||
----
|
||||
NULL NULL 2 20
|
||||
NULL NULL 2 20
|
||||
1 1 1 10
|
||||
1 1 1 10
|
||||
3 3 NULL NULL
|
||||
3 3 NULL NULL
|
||||
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k
|
||||
UNION
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k
|
||||
ORDER BY i
|
||||
----
|
||||
NULL NULL 2 20
|
||||
1 1 1 10
|
||||
3 3 NULL NULL
|
||||
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k
|
||||
UNION
|
||||
SELECT i+1, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k
|
||||
UNION
|
||||
SELECT i+2, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k
|
||||
UNION
|
||||
SELECT i+3, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k
|
||||
UNION
|
||||
SELECT i+4, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k
|
||||
ORDER BY 1,2,3,4
|
||||
----
|
||||
NULL NULL 2 20
|
||||
1 1 1 10
|
||||
2 1 1 10
|
||||
3 1 1 10
|
||||
3 3 NULL NULL
|
||||
4 1 1 10
|
||||
4 3 NULL NULL
|
||||
5 1 1 10
|
||||
5 3 NULL NULL
|
||||
6 3 NULL NULL
|
||||
7 3 NULL NULL
|
||||
|
||||
query IIII
|
||||
SELECT DISTINCT * FROM (
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k
|
||||
UNION ALL
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k) tbl
|
||||
ORDER BY i
|
||||
----
|
||||
NULL NULL 2 20
|
||||
1 1 1 10
|
||||
3 3 NULL NULL
|
||||
|
||||
# many unions/full outer joins with views
|
||||
statement ok
|
||||
CREATE VIEW v1 AS
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k
|
||||
UNION ALL
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k
|
||||
|
||||
query IIIIII
|
||||
SELECT * FROM v1 FULL OUTER JOIN v1 v2 USING (i, j) ORDER BY 1, 2, 3, 4, 5, 6
|
||||
----
|
||||
NULL NULL NULL NULL 2 20
|
||||
NULL NULL NULL NULL 2 20
|
||||
NULL NULL 2 20 NULL NULL
|
||||
NULL NULL 2 20 NULL NULL
|
||||
1 1 1 10 1 10
|
||||
1 1 1 10 1 10
|
||||
1 1 1 10 1 10
|
||||
1 1 1 10 1 10
|
||||
3 3 NULL NULL NULL NULL
|
||||
3 3 NULL NULL NULL NULL
|
||||
3 3 NULL NULL NULL NULL
|
||||
3 3 NULL NULL NULL NULL
|
||||
57
external/duckdb/test/sql/join/full_outer/test_full_outer_join.test
vendored
Normal file
57
external/duckdb/test/sql/join/full_outer/test_full_outer_join.test
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
# name: test/sql/join/full_outer/test_full_outer_join.test
|
||||
# description: Test FULL OUTER JOIN
|
||||
# group: [full_outer]
|
||||
|
||||
statement ok
|
||||
SET default_null_order='nulls_first';
|
||||
|
||||
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, 1), (3, 3)
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers2(k INTEGER, l INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers2 VALUES (1, 10), (2, 20)
|
||||
|
||||
# equality join
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k ORDER BY i
|
||||
----
|
||||
NULL NULL 2 20
|
||||
1 1 1 10
|
||||
3 3 NULL NULL
|
||||
|
||||
# equality join with additional non-equality predicate
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k AND integers.j > integers2.l ORDER BY 1, 2, 3, 4
|
||||
----
|
||||
NULL NULL 1 10
|
||||
NULL NULL 2 20
|
||||
1 1 NULL NULL
|
||||
3 3 NULL NULL
|
||||
|
||||
# equality join with varchar values
|
||||
query IIIT
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN (SELECT k, l::VARCHAR AS l FROM integers2) integers2 ON integers.i=integers2.k ORDER BY 1, 2, 3, 4
|
||||
----
|
||||
NULL NULL 2 20
|
||||
1 1 1 10
|
||||
3 3 NULL NULL
|
||||
|
||||
# empty RHS
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN (SELECT * FROM integers2 WHERE 1=0) integers2 ON integers.i=integers2.k ORDER BY 1, 2, 3, 4
|
||||
----
|
||||
1 1 NULL NULL
|
||||
3 3 NULL NULL
|
||||
|
||||
37
external/duckdb/test/sql/join/full_outer/test_full_outer_join_complex.test
vendored
Normal file
37
external/duckdb/test/sql/join/full_outer/test_full_outer_join_complex.test
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
# name: test/sql/join/full_outer/test_full_outer_join_complex.test
|
||||
# description: Test complex FULL OUTER JOIN
|
||||
# group: [full_outer]
|
||||
|
||||
statement ok
|
||||
SET default_null_order='nulls_first';
|
||||
|
||||
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, 1)
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers2(k INTEGER, l INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers2 VALUES (1, 10)
|
||||
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i+integers2.k+9<>integers.j+integers2.l ORDER BY 1, 2, 3, 4
|
||||
----
|
||||
NULL NULL 1 10
|
||||
1 1 NULL NULL
|
||||
|
||||
# empty RHS
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN (SELECT * FROM integers2 WHERE 1=0) integers2 ON integers.i+integers2.k+9<>integers.j+integers2.l ORDER BY 1, 2, 3, 4
|
||||
----
|
||||
1 1 NULL NULL
|
||||
|
||||
37
external/duckdb/test/sql/join/full_outer/test_full_outer_join_inequality.test
vendored
Normal file
37
external/duckdb/test/sql/join/full_outer/test_full_outer_join_inequality.test
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
# name: test/sql/join/full_outer/test_full_outer_join_inequality.test
|
||||
# description: Test inequality FULL OUTER JOIN
|
||||
# group: [full_outer]
|
||||
|
||||
statement ok
|
||||
SET default_null_order='nulls_first';
|
||||
|
||||
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, 1)
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers2(k INTEGER, l INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers2 VALUES (1, 10)
|
||||
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i<>integers2.k ORDER BY 1, 2, 3, 4
|
||||
----
|
||||
NULL NULL 1 10
|
||||
1 1 NULL NULL
|
||||
|
||||
# empty RHS
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN (SELECT * FROM integers2 WHERE 1=0) integers2 ON integers.i<>integers2.k ORDER BY 1, 2, 3, 4
|
||||
----
|
||||
1 1 NULL NULL
|
||||
|
||||
173
external/duckdb/test/sql/join/full_outer/test_full_outer_join_issue_4252.test
vendored
Normal file
173
external/duckdb/test/sql/join/full_outer/test_full_outer_join_issue_4252.test
vendored
Normal file
@@ -0,0 +1,173 @@
|
||||
# name: test/sql/join/full_outer/test_full_outer_join_issue_4252.test
|
||||
# description: Test Issue: 4252
|
||||
# group: [full_outer]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test (x INT, y INT);
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (1, 1), (2, 2), (3, 3);
|
||||
|
||||
query II
|
||||
SELECT * FROM (SELECT a2.x FROM (SELECT x FROM test WHERE x > 3) AS a1 FULL OUTER JOIN (SELECT x FROM test WHERE x = 1) AS a2 ON a1.x = a2.x) AS a3 FULL OUTER JOIN (SELECT 1 AS x) AS a4 ON a3.x = a4.x;
|
||||
----
|
||||
1 1
|
||||
|
||||
statement ok
|
||||
CREATE TABLE df1(day DATE, value INTEGER, organization VARCHAR);
|
||||
INSERT INTO df1 VALUES
|
||||
('2022-01-01', 10, 'org1'),
|
||||
('2022-01-05', 20, 'org2'),
|
||||
('2022-01-10', 30, 'org3');
|
||||
|
||||
statement ok
|
||||
CREATE TABLE df2(day DATE, value INTEGER, organization VARCHAR);
|
||||
INSERT INTO df2 VALUES
|
||||
('2022-01-01', 100, 'org1'),
|
||||
('2022-09-01', 200, 'org2'),
|
||||
('2022-03-01', 300, 'org3');
|
||||
|
||||
statement ok
|
||||
CREATE TABLE df3(day DATE, value INTEGER, organization VARCHAR);
|
||||
INSERT INTO df3 VALUES
|
||||
('2022-01-02', 1000, 'org1'),
|
||||
('2022-02-03', 2000, 'org2'),
|
||||
('2022-04-01', 3000, 'org3');
|
||||
|
||||
query II
|
||||
SELECT
|
||||
coalesce(anon_1.month, anon_2.month) AS month,
|
||||
coalesce(coalesce(CAST(anon_1.value AS REAL), 0.0) + coalesce(CAST(anon_2.value AS REAL), 0.0), 0.0) AS value
|
||||
FROM (
|
||||
SELECT coalesce(anon_3.month, anon_4.month) AS month,
|
||||
coalesce(coalesce(CAST(anon_3.value AS REAL), 0.0) + coalesce(CAST(anon_4.value AS REAL), 0.0), 0.0) AS value
|
||||
FROM (
|
||||
SELECT month AS month, sum(anon_5.value) AS value
|
||||
FROM (
|
||||
SELECT date_trunc('month', day) AS month, coalesce(sum(value), 0.0) AS value
|
||||
FROM df1
|
||||
WHERE day >= CAST('2022-01-01 00:00:00' AS DATE)
|
||||
AND day <= CAST('2022-01-31 00:00:00' AS DATE)
|
||||
AND (organization ILIKE 'org4')
|
||||
GROUP BY date_trunc('month', day)
|
||||
) AS anon_5
|
||||
GROUP BY GROUPING SETS((month))
|
||||
) AS anon_3
|
||||
FULL OUTER JOIN (
|
||||
SELECT month AS month, sum(anon_6.value) AS value
|
||||
FROM (
|
||||
SELECT date_trunc('month', day) AS month, coalesce(sum(value), 0.0) AS value
|
||||
FROM df2
|
||||
WHERE day >= CAST('2022-01-01 00:00:00' AS DATE)
|
||||
AND day <= CAST('2022-01-31 00:00:00' AS DATE)
|
||||
GROUP BY date_trunc('month', day)
|
||||
) AS anon_6
|
||||
GROUP BY GROUPING SETS((month))
|
||||
) AS anon_4 ON anon_3.month = anon_4.month
|
||||
) AS anon_1
|
||||
FULL OUTER JOIN (
|
||||
SELECT month AS month, sum(anon_7.value) AS value
|
||||
FROM (
|
||||
SELECT date_trunc('month', day) AS month, coalesce(sum(value), 0.0) AS value
|
||||
FROM df3
|
||||
WHERE day >= CAST('2022-01-01 00:00:00' AS DATE)
|
||||
AND day <= CAST('2022-01-31 00:00:00' AS DATE)
|
||||
GROUP BY date_trunc('month', day)
|
||||
) AS anon_7
|
||||
GROUP BY GROUPING SETS((month))
|
||||
) AS anon_2 ON anon_1.month = anon_2.month
|
||||
----
|
||||
2022-01-01 1100.0
|
||||
|
||||
query II
|
||||
SELECT
|
||||
coalesce(anon_1.month, anon_2.month) AS month,
|
||||
coalesce(coalesce(CAST(anon_1.value AS REAL), 0.0) + coalesce(CAST(anon_2.value AS REAL), 0.0), 0.0) AS value
|
||||
FROM (
|
||||
SELECT coalesce(anon_3.month, anon_4.month) AS month,
|
||||
coalesce(coalesce(CAST(anon_3.value AS REAL), 0.0) + coalesce(CAST(anon_4.value AS REAL), 0.0), 0.0) AS value
|
||||
FROM (
|
||||
SELECT month AS month, sum(anon_5.value) AS value
|
||||
FROM (
|
||||
SELECT date_trunc('month', day) AS month, coalesce(sum(value), 0.0) AS value
|
||||
FROM df1
|
||||
WHERE day >= CAST('2022-01-01 00:00:00' AS DATE)
|
||||
AND day <= CAST('2022-01-31 00:00:00' AS DATE)
|
||||
AND (organization ILIKE 'org1')
|
||||
GROUP BY date_trunc('month', day)
|
||||
) AS anon_5
|
||||
GROUP BY GROUPING SETS((month))
|
||||
) AS anon_3
|
||||
FULL OUTER JOIN (
|
||||
SELECT month AS month, sum(anon_6.value) AS value
|
||||
FROM (
|
||||
SELECT date_trunc('month', day) AS month, coalesce(sum(value), 0.0) AS value
|
||||
FROM df2
|
||||
WHERE day >= CAST('2022-01-01 00:00:00' AS DATE)
|
||||
AND day <= CAST('2022-01-31 00:00:00' AS DATE)
|
||||
GROUP BY date_trunc('month', day)
|
||||
) AS anon_6
|
||||
GROUP BY GROUPING SETS((month))
|
||||
) AS anon_4 ON anon_3.month = anon_4.month
|
||||
) AS anon_1
|
||||
FULL OUTER JOIN (
|
||||
SELECT month AS month, sum(anon_7.value) AS value
|
||||
FROM (
|
||||
SELECT date_trunc('month', day) AS month, coalesce(sum(value), 0.0) AS value
|
||||
FROM df3
|
||||
WHERE day >= CAST('2022-01-01 00:00:00' AS DATE)
|
||||
AND day <= CAST('2022-01-31 00:00:00' AS DATE)
|
||||
GROUP BY date_trunc('month', day)
|
||||
) AS anon_7
|
||||
GROUP BY GROUPING SETS((month))
|
||||
) AS anon_2 ON anon_1.month = anon_2.month
|
||||
----
|
||||
2022-01-01 1110.0
|
||||
|
||||
query II
|
||||
SELECT
|
||||
coalesce(anon_1.month, anon_2.month) AS month,
|
||||
coalesce(coalesce(CAST(anon_1.value AS REAL), 0.0) + coalesce(CAST(anon_2.value AS REAL), 0.0), 0.0) AS value
|
||||
FROM (
|
||||
SELECT coalesce(anon_3.month, anon_4.month) AS month,
|
||||
coalesce(coalesce(CAST(anon_3.value AS REAL), 0.0) + coalesce(CAST(anon_4.value AS REAL), 0.0), 0.0) AS value
|
||||
FROM (
|
||||
SELECT month AS month, sum(anon_6.value) AS value
|
||||
FROM (
|
||||
SELECT date_trunc('month', day) AS month, coalesce(sum(value), 0.0) AS value
|
||||
FROM df2
|
||||
WHERE day >= CAST('2022-01-01 00:00:00' AS DATE)
|
||||
AND day <= CAST('2022-01-31 00:00:00' AS DATE)
|
||||
GROUP BY date_trunc('month', day)
|
||||
) AS anon_6
|
||||
GROUP BY GROUPING SETS((month))
|
||||
) AS anon_3
|
||||
FULL OUTER JOIN (
|
||||
SELECT month AS month, sum(anon_5.value) AS value
|
||||
FROM (
|
||||
SELECT date_trunc('month', day) AS month, coalesce(sum(value), 0.0) AS value
|
||||
FROM df1
|
||||
WHERE day >= CAST('2022-01-01 00:00:00' AS DATE)
|
||||
AND day <= CAST('2022-01-31 00:00:00' AS DATE)
|
||||
AND (organization ILIKE 'org4')
|
||||
GROUP BY date_trunc('month', day)
|
||||
) AS anon_5
|
||||
GROUP BY GROUPING SETS((month))
|
||||
) AS anon_4 ON anon_3.month = anon_4.month
|
||||
) AS anon_1
|
||||
FULL OUTER JOIN (
|
||||
SELECT month AS month, sum(anon_7.value) AS value
|
||||
FROM (
|
||||
SELECT date_trunc('month', day) AS month, coalesce(sum(value), 0.0) AS value
|
||||
FROM df3
|
||||
WHERE day >= CAST('2022-01-01 00:00:00' AS DATE)
|
||||
AND day <= CAST('2022-01-31 00:00:00' AS DATE)
|
||||
GROUP BY date_trunc('month', day)
|
||||
) AS anon_7
|
||||
GROUP BY GROUPING SETS((month))
|
||||
) AS anon_2 ON anon_1.month = anon_2.month
|
||||
----
|
||||
2022-01-01 1100.0
|
||||
65
external/duckdb/test/sql/join/full_outer/test_full_outer_join_many_matches.test_slow
vendored
Normal file
65
external/duckdb/test/sql/join/full_outer/test_full_outer_join_many_matches.test_slow
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
# name: test/sql/join/full_outer/test_full_outer_join_many_matches.test_slow
|
||||
# description: Test FULL OUTER JOIN with many matches
|
||||
# group: [full_outer]
|
||||
|
||||
statement ok
|
||||
SET default_null_order='nulls_first';
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
PRAGMA verify_parallelism
|
||||
|
||||
statement ok
|
||||
PRAGMA verify_external
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers AS SELECT a i, 1 j FROM generate_series(0, 1999, 1) t1(a);
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers2 AS SELECT a k, 2 l FROM generate_series(2000, 3999, 1) t1(a);
|
||||
|
||||
# equality join
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k
|
||||
----
|
||||
4000
|
||||
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.k ORDER BY 1, 2, 3, 4
|
||||
----
|
||||
16000 values hashing to 8b9eab043624ff470b00a981c1d588d9
|
||||
|
||||
# range join
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers FULL OUTER JOIN integers2 ON integers.j>integers2.l
|
||||
----
|
||||
4000
|
||||
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.j>integers2.l ORDER BY 1, 2, 3, 4
|
||||
----
|
||||
16000 values hashing to 8b9eab043624ff470b00a981c1d588d9
|
||||
|
||||
# inequality join
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers FULL OUTER JOIN integers2 ON integers.j+1<>integers2.l;
|
||||
----
|
||||
4000
|
||||
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.j+1<>integers2.l ORDER BY 1, 2, 3, 4
|
||||
----
|
||||
16000 values hashing to 8b9eab043624ff470b00a981c1d588d9
|
||||
|
||||
# complex join condition
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers FULL OUTER JOIN integers2 ON integers.j+integers2.l<>3;
|
||||
----
|
||||
4000
|
||||
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.j+integers2.l<>3 ORDER BY 1, 2, 3, 4
|
||||
----
|
||||
16000 values hashing to 8b9eab043624ff470b00a981c1d588d9
|
||||
41
external/duckdb/test/sql/join/full_outer/test_full_outer_join_parallel.test_slow
vendored
Normal file
41
external/duckdb/test/sql/join/full_outer/test_full_outer_join_parallel.test_slow
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
# name: test/sql/join/full_outer/test_full_outer_join_parallel.test_slow
|
||||
# description: Test full outer join with parallelism
|
||||
# group: [full_outer]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
PRAGMA threads=4
|
||||
|
||||
statement ok
|
||||
PRAGMA verify_parallelism
|
||||
|
||||
statement ok
|
||||
pragma verify_external
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers AS SELECT * FROM range(75000) tbl(i);
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers2 AS SELECT * FROM range(100000) tbl(i) WHERE i%2 != 0;
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers JOIN integers2 ON integers.i=integers2.i
|
||||
----
|
||||
37500
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers LEFT OUTER JOIN integers2 ON integers.i=integers2.i
|
||||
----
|
||||
75000
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers RIGHT OUTER JOIN integers2 ON integers.i=integers2.i
|
||||
----
|
||||
50000
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers FULL OUTER JOIN integers2 ON integers.i=integers2.i
|
||||
----
|
||||
87500
|
||||
38
external/duckdb/test/sql/join/full_outer/test_full_outer_join_range.test
vendored
Normal file
38
external/duckdb/test/sql/join/full_outer/test_full_outer_join_range.test
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
# name: test/sql/join/full_outer/test_full_outer_join_range.test
|
||||
# description: Test range FULL OUTER JOIN
|
||||
# group: [full_outer]
|
||||
|
||||
statement ok
|
||||
SET default_null_order='nulls_first';
|
||||
|
||||
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, 1)
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers2(k INTEGER, l INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers2 VALUES (1, 10)
|
||||
|
||||
# range join
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN integers2 ON integers.i<integers2.k ORDER BY 1, 2, 3, 4
|
||||
----
|
||||
NULL NULL 1 10
|
||||
1 1 NULL NULL
|
||||
|
||||
# empty RHS
|
||||
query IIII
|
||||
SELECT i, j, k, l FROM integers FULL OUTER JOIN (SELECT * FROM integers2 WHERE 1=0) integers2 ON integers.i<integers2.k ORDER BY 1, 2, 3, 4
|
||||
----
|
||||
1 1 NULL NULL
|
||||
|
||||
Reference in New Issue
Block a user