Skip to content

Commit

Permalink
test: sqllogictests for multiple tables join
Browse files Browse the repository at this point in the history
  • Loading branch information
korowa committed Mar 6, 2024
1 parent 37ea944 commit a45ef9b
Showing 1 changed file with 78 additions and 1 deletion.
79 changes: 78 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,73 @@ 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

# test create table from query with LEFT join
statement ok
create table left_join_test as
Expand Down Expand Up @@ -603,6 +677,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

0 comments on commit a45ef9b

Please sign in to comment.