Skip to content
Closed
Show file tree
Hide file tree
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
14 changes: 7 additions & 7 deletions sql/core/src/test/resources/sql-tests/inputs/arithmetic.sql
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@ select -100;
select +230;
select -5.2;
select +6.8e0;
select -key, +key from testdata where key = 2;
select -(key + 1), - key + 1, +(key + 5) from testdata where key = 1;
select -max(key), +max(key) from testdata;
select -key, +key from uniqueRowData where key = 2;
select -(key + 1), - key + 1, +(key + 5) from uniqueRowData where key = 1;
select -max(key), +max(key) from uniqueRowData;
select - (-10);
select + (-key) from testdata where key = 32;
select - (+max(key)) from testdata;
select + (-key) from uniqueRowData where key = 32;
select - (+max(key)) from uniqueRowData;
select - - 3;
select - + 20;
select + + 100;
select - - max(key) from testdata;
select + - key from testdata where key = 33;
select - - max(key) from uniqueRowData;
select + - key from uniqueRowData where key = 33;

-- div
select 5 / 2;
Expand Down
14 changes: 7 additions & 7 deletions sql/core/src/test/resources/sql-tests/inputs/limit.sql
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@

-- limit on various data types
select * from testdata limit 2;
select * from uniqueRowData limit 2;
select * from arraydata limit 2;
select * from mapdata limit 2;

-- foldable non-literal in limit
select * from testdata limit 2 + 1;
select * from uniqueRowData limit 2 + 1;

select * from testdata limit CAST(1 AS int);
select * from uniqueRowData limit CAST(1 AS int);

-- limit must be non-negative
select * from testdata limit -1;
select * from uniqueRowData limit -1;

-- limit must be foldable
select * from testdata limit key > 3;
select * from uniqueRowData limit key > 3;

-- limit must be integer
select * from testdata limit true;
select * from testdata limit 'a';
select * from uniqueRowData limit true;
select * from uniqueRowData limit 'a';

-- limit within a subquery
select * from (select * from range(10) limit 5) where id > 3;
334 changes: 334 additions & 0 deletions sql/core/src/test/resources/sql-tests/inputs/outer-join.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,334 @@
-- A data set containing uppercase column names and column values
CREATE OR REPLACE TEMPORARY VIEW lowerCaseData AS SELECT * FROM VALUES
(1, "a"),
(2, "b"),
(3, "c"),
(4, "d")
as lowerCaseData(n, l);

-- A data set containing uppercase column names and column values
CREATE OR REPLACE TEMPORARY VIEW upperCaseData AS SELECT * FROM VALUES
(1, "A"),
(2, "B"),
(3, "C"),
(4, "D"),
(5, "E"),
(6, "F")
as upperCaseData(N, L);

-- A data set containing null
CREATE OR REPLACE TEMPORARY VIEW nullData AS SELECT * FROM VALUES
(201, null),
(86, "val_86"),
(null, "val_null"),
(165, "val_165"),
(null, null),
(330, "val_330"),
(165, null)
as nullData(key, value);

-- A data set containing duplicate rows
CREATE OR REPLACE TEMPORARY VIEW duplicateRowData AS SELECT * FROM VALUES
(251, "val_251"),
(86, "val_86"),
(165, "val_165"),
(330, "val_330"),
(165, "val_165")
as duplicateRowData(key, value);

-- basic full outer join
SELECT * FROM
(SELECT * FROM upperCaseData WHERE N <= 4) leftTable FULL OUTER JOIN
(SELECT * FROM upperCaseData WHERE N >= 3) rightTable
ON leftTable.N = rightTable.N;

-- basic right outer join
SELECT * FROM lowercasedata l RIGHT OUTER JOIN uppercasedata u ON l.n = u.N;

-- basic left outer join
SELECT * FROM uppercasedata u LEFT OUTER JOIN lowercasedata l ON l.n = u.N;

-- left-outer join over two nested table expressions
SELECT c.c1, c.c2, c.c3, c.c4
FROM (
SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4
FROM
(
SELECT src1.key AS c1, src1.value AS c2
FROM duplicateRowData src1 WHERE src1.key > 100 and src1.key < 300
) a
LEFT OUTER JOIN
(
SELECT src2.key AS c3, src2.value AS c4
FROM duplicateRowData src2 WHERE src2.key > 200 and src2.key < 400
) b
ON (a.c1 = b.c3)
) c;

-- right-outer join over two nested table expressions
SELECT c.c1, c.c2, c.c3, c.c4
FROM (
SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4
FROM
(
SELECT src1.key AS c1, src1.value AS c2
FROM duplicateRowData src1 WHERE src1.key > 100 and src1.key < 300
) a
RIGHT OUTER JOIN
(
SELECT src2.key AS c3, src2.value AS c4
FROM duplicateRowData src2 WHERE src2.key > 200 and src2.key < 400
) b
ON (a.c1 = b.c3)
) c;

-- full-outer join over two nested table expressions
SELECT c.c1, c.c2, c.c3, c.c4
FROM (
SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4
FROM
(
SELECT src1.key AS c1, src1.value AS c2
FROM duplicateRowData src1 WHERE src1.key > 100 and src1.key < 300
) a
FULL OUTER JOIN
(
SELECT src2.key AS c3, src2.value AS c4
FROM duplicateRowData src2 WHERE src2.key > 200 and src2.key < 400
) b
ON (a.c1 = b.c3)
) c;

-- full-outer join + left-outer join over nested table expressions
SELECT c.c1, c.c2, c.c3, c.c4, c.c5, c.c6
FROM (
SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4, c.c5 AS c5, c.c6 AS c6
FROM
(
SELECT src1.key AS c1, src1.value AS c2
FROM duplicateRowData src1 WHERE src1.key > 10 and src1.key < 150
) a
FULL OUTER JOIN
(
SELECT src2.key AS c3, src2.value AS c4
FROM duplicateRowData src2 WHERE src2.key > 150 and src2.key < 300
) b
ON (a.c1 = b.c3)
LEFT OUTER JOIN
(
SELECT src3.key AS c5, src3.value AS c6
FROM duplicateRowData src3 WHERE src3.key > 200 and src3.key < 400
) c
ON (a.c1 = c.c5)
) c;

-- left-outer join + join condition + filter
SELECT c.c1, c.c2, c.c3, c.c4
FROM (
SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4
FROM
(
SELECT src1.key AS c1, src1.value AS c2
FROM duplicateRowData src1 WHERE src1.key > 100 and src1.key < 300
) a
LEFT OUTER JOIN
(
SELECT src2.key AS c3, src2.value AS c4
FROM duplicateRowData src2 WHERE src2.key > 200 and src2.key < 400
) b
ON (a.c1 = b.c3)
) c
where c.c3 IS NULL AND c.c1 IS NOT NULL;

-- full outer join over Aggregate
SELECT a.key, a.value, b.key, b.value
FROM
(
SELECT src1.key as key, count(src1.value) AS value
FROM duplicateRowData src1 group by src1.key
) a
FULL OUTER JOIN
(
SELECT src2.key as key, count(distinct(src2.value)) AS value
FROM nullData src2 group by src2.key
) b
ON (a.key = b.key);

-- full outer join + multi distinct
SELECT a.key, a.value, b.key, b.value1, b.value2
FROM
(
SELECT src1.key as key, count(src1.value) AS value
FROM duplicateRowData src1 group by src1.key
) a
FULL OUTER JOIN
(
SELECT src2.key as key, count(distinct(src2.value)) AS value1,
count(distinct(src2.key)) AS value2
FROM nullData src2 group by src2.key
) b
ON (a.key = b.key);

-- inner join + right-outer join #1
SELECT a.k1,a.v1,a.k2,a.v2,a.k3,a.v3
FROM (
SELECT src1.key as k1, src1.value as v1, src2.key as k2, src2.value as v2 , src3.key as k3,
src3.value as v3
FROM duplicateRowData src1 JOIN duplicateRowData src2 ON (src1.key = src2.key AND src1.key < 200)
RIGHT OUTER JOIN duplicateRowData src3 ON (src1.key = src3.key AND src3.key < 300)
SORT BY k1,v1,k2,v2,k3,v3
)a;

-- inner join + right-outer join #2
SELECT a.k1,a.v1,a.k2,a.v2,a.k3,a.v3
FROM (
SELECT src1.key as k1, src1.value as v1, src2.key as k2, src2.value as v2 , src3.key as k3,
src3.value as v3
FROM duplicateRowData src1
JOIN duplicateRowData src2
ON (src1.key = src2.key AND src1.key < 200 AND src2.key < 100)
RIGHT OUTER JOIN duplicateRowData src3
ON (src1.key = src3.key AND src3.key < 300)
SORT BY k1,v1,k2,v2,k3,v3
)a;

-- left outer join + right outer join
SELECT *
FROM
duplicateRowData src1
LEFT OUTER JOIN duplicateRowData src2
ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
RIGHT OUTER JOIN duplicateRowData src3
ON (src2.key = src3.key AND src3.key < 200)
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;

-- left outer + right outer
SELECT * FROM duplicateRowData src1
LEFT OUTER JOIN duplicateRowData src2
ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
RIGHT OUTER JOIN duplicateRowData src3
ON (src2.key = src3.key AND src3.key < 200)
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;

-- right outer + right outer
SELECT * FROM duplicateRowData src1
RIGHT OUTER JOIN duplicateRowData src2
ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
RIGHT OUTER JOIN duplicateRowData src3
ON (src2.key = src3.key AND src3.key < 200)
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;

-- left outer + left outer
SELECT * FROM duplicateRowData src1
LEFT OUTER JOIN duplicateRowData src2
ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
LEFT OUTER JOIN duplicateRowData src3
ON (src2.key = src3.key AND src3.key < 200)
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;

-- right outer + left outer
SELECT * FROM duplicateRowData src1
RIGHT OUTER JOIN duplicateRowData src2
ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
LEFT OUTER JOIN duplicateRowData src3
ON (src2.key = src3.key AND src3.key < 200)
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;

-- inner + left outer
SELECT * FROM duplicateRowData src1
JOIN duplicateRowData src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
LEFT OUTER JOIN duplicateRowData src3 ON (src2.key = src3.key AND src3.key < 200)
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;

-- inner + right outer
SELECT * FROM duplicateRowData src1
JOIN duplicateRowData src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
RIGHT OUTER JOIN duplicateRowData src3 ON (src2.key = src3.key AND src3.key < 200)
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;

-- left + inner outer
SELECT * FROM duplicateRowData src1
LEFT OUTER JOIN duplicateRowData src2
ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
JOIN duplicateRowData src3
ON (src2.key = src3.key AND src3.key < 200)
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;

-- right + inner join
SELECT * FROM duplicateRowData src1
RIGHT OUTER JOIN duplicateRowData src2
ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
JOIN duplicateRowData src3
ON (src2.key = src3.key AND src3.key < 200)
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;

-- left outer join with sorted by nested table expression
FROM
(SELECT duplicateRowData.* FROM duplicateRowData sort by key) x
LEFT OUTER JOIN
(SELECT nullData.* FROM nullData sort by value) Y
ON (x.key = Y.key)
select Y.key,Y.value;

-- right outer join with sorted by nested table expression
FROM
(SELECT duplicateRowData.* FROM duplicateRowData sort by key) x
RIGHT OUTER JOIN
(SELECT nullData.* FROM nullData sort by value) Y
ON (x.key = Y.key)
select Y.key,Y.value;

-- inner + left outer with sorted by nested table expression
FROM
(SELECT duplicateRowData.* FROM duplicateRowData sort by key) x
JOIN
(SELECT duplicateRowData.* FROM duplicateRowData sort by value) Y
ON (x.key = Y.key)
LEFT OUTER JOIN
(SELECT duplicateRowData.* FROM duplicateRowData sort by value) Z
ON (x.key = Z.key)
select Y.key,Y.value;

-- left + left outer with sorted by nested table expression
FROM
(SELECT nullData.* FROM nullData sort by key) x
LEFT OUTER JOIN
(SELECT duplicateRowData.* FROM duplicateRowData sort by value) Y
ON (x.key = Y.key)
LEFT OUTER JOIN
(SELECT nullData.* FROM nullData sort by value) Z
ON (x.key = Z.key)
select Y.key,Y.value;

-- left + right outer with sorted by nested table expression
FROM
(SELECT nullData.* FROM nullData sort by key) x
LEFT OUTER JOIN
(SELECT nullData.* FROM nullData sort by value) Y
ON (x.key = Y.key)
RIGHT OUTER JOIN
(SELECT duplicateRowData.* FROM duplicateRowData sort by value) Z
ON (x.key = Z.key)
select Y.key,Y.value;

-- right + right outer with sorted by nested table expression
FROM
(SELECT duplicateRowData.* FROM duplicateRowData sort by key) x
RIGHT OUTER JOIN
(SELECT nullData.* FROM nullData sort by value) Y
ON (x.key = Y.key)
RIGHT OUTER JOIN
(SELECT duplicateRowData.* FROM duplicateRowData sort by value) Z
ON (x.key = Z.key)
select Y.key,Y.value;

-- right outer + inner with sorted by nested table expression
FROM
(SELECT duplicateRowData.* FROM duplicateRowData sort by key) x
RIGHT OUTER JOIN
(SELECT nullData.* FROM nullData sort by value) Y
ON (x.key = Y.key)
JOIN
(SELECT duplicateRowData.* FROM duplicateRowData sort by value) Z
ON (x.key = Z.key)
select Y.key,Y.value;
Loading