Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 87 additions & 1 deletion datafusion/sqllogictest/test_files/join.slt
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ drop table IF EXISTS test1;
statement ok
drop table IF EXISTS test2;

# two tables for join
# tables for join
statement ok
CREATE TABLE IF NOT EXISTS t1(t1_id INT, t1_name TEXT, t1_int INT) AS VALUES
(11, 'a', 1),
Expand All @@ -82,6 +82,13 @@ CREATE TABLE IF NOT EXISTS t2(t2_id INT, t2_name TEXT, t2_int INT) AS VALUES
(44, 'x', 3),
(55, 'w', 3);

statement ok
CREATE TABLE IF NOT EXISTS t3(t3_id INT, t3_name TEXT, t3_int INT) AS VALUES
(11, 'z', 3),
(22, ' ', 6),
(33, 'x', 7),
(55, 'w', 4);

# batch size
statement ok
set datafusion.execution.batch_size = 4096;
Expand Down Expand Up @@ -551,6 +558,82 @@ FROM t1
----
11 a 55

# inner join multiple tables to one
query III rowsort
SELECT t1.t1_id, t2.t2_id, t3.t3_id
FROM t1
INNER JOIN t2 ON t1.t1_id = t2.t2_id
INNER JOIN t3 ON t1.t1_id = t3.t3_id
----
11 11 11
22 22 22

# inner join multiple tables to one with WHERE filter
query III rowsort
SELECT t1.t1_id, t2.t2_id, t3.t3_id
FROM t1
INNER JOIN t2 ON t1.t1_id = t2.t2_id
INNER JOIN t3 ON t1.t1_id = t3.t3_id
WHERE t3.t3_int = 6
----
22 22 22

# inner join multiple tables to one with JOIN filter
query III rowsort
SELECT t1.t1_id, t2.t2_id, t3.t3_id
FROM t1
INNER JOIN t2 ON t1.t1_id = t2.t2_id
INNER JOIN t3 ON t1.t1_id = t3.t3_id AND t3.t3_int < 6
----
11 11 11

# subsequent inner join
query III rowsort
SELECT t1.t1_id, t2.t2_id, t3.t3_id
FROM t1
INNER JOIN t2 ON t1.t1_id = t2.t2_id
INNER JOIN t3 ON t2.t2_int = t3.t3_int
----
11 11 11
44 44 11

# subsequent inner join with filter
query III rowsort
SELECT t1.t1_id, t2.t2_id, t3.t3_id
FROM t1
INNER JOIN t2 ON t1.t1_id = t2.t2_id
INNER JOIN t3 ON t2.t2_id = t3.t3_id
WHERE t3.t3_int = 6
----
22 22 22

# subsequent inner join with join filter
query III rowsort
SELECT t1.t1_id, t2.t2_id, t3.t3_id
FROM t1
INNER JOIN t2 ON t1.t1_id = t2.t2_id
INNER JOIN t3 ON t2.t2_id = t3.t3_id AND t3.t3_int < 6
----
11 11 11

# multiple inner joins with mixed ON clause
query III rowsort
SELECT t1.t1_id, t2.t2_id, t3.t3_id
FROM t1
INNER JOIN t2 ON t1.t1_id = t2.t2_id
INNER JOIN t3 ON t1.t1_id = t3.t3_id AND t2.t2_int = t3.t3_int
----
11 11 11

# multiple inner joins with mixed ON clause and filter
query III rowsort
SELECT t1.t1_id, t2.t2_id, t3.t3_id
FROM t1
INNER JOIN t2 ON t1.t1_id = t2.t2_id
INNER JOIN t3 ON t1.t1_id = t3.t3_id AND t2.t2_int = t3.t3_int
WHERE t3.t3_name = 'no such name'
----

# test create table from query with LEFT join
statement ok
create table left_join_test as
Expand Down Expand Up @@ -603,6 +686,9 @@ drop table IF EXISTS t1;
statement ok
drop table IF EXISTS t2;

statement ok
drop table IF EXISTS t3;

statement ok
drop table IF EXISTS left_join_test;

Expand Down