Skip to content

Commit 4bd38d2

Browse files
committed
move outer joins to outer-join.sql and move left-semi join to left-semi-join.sql
1 parent 7c6f85a commit 4bd38d2

File tree

7 files changed

+935
-934
lines changed

7 files changed

+935
-934
lines changed

sql/core/src/test/resources/sql-tests/inputs/join.sql

Lines changed: 0 additions & 274 deletions
Original file line numberDiff line numberDiff line change
@@ -23,87 +23,6 @@ SELECT src1.key, src3.value
2323
FROM src src1 JOIN src src2 ON (src1.key = src2.key)
2424
JOIN src src3 ON (src1.key = src3.key);
2525

26-
-- left-outer join over two nested table expressions (auto_join4.q)
27-
SELECT c.c1, c.c2, c.c3, c.c4
28-
FROM (
29-
SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4
30-
FROM
31-
(
32-
SELECT src1.key AS c1, src1.value AS c2 FROM src src1 WHERE src1.key > 100 and src1.key < 300
33-
) a
34-
LEFT OUTER JOIN
35-
(
36-
SELECT src2.key AS c3, src2.value AS c4 FROM src src2 WHERE src2.key > 200 and src2.key < 400
37-
) b
38-
ON (a.c1 = b.c3)
39-
) c;
40-
41-
-- right-outer join over two nested table expressions (auto_join5.q)
42-
SELECT c.c1, c.c2, c.c3, c.c4
43-
FROM (
44-
SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4
45-
FROM
46-
(
47-
SELECT src1.key AS c1, src1.value AS c2 FROM src src1 WHERE src1.key > 100 and src1.key < 300
48-
) a
49-
RIGHT OUTER JOIN
50-
(
51-
SELECT src2.key AS c3, src2.value AS c4 FROM src src2 WHERE src2.key > 200 and src2.key < 400
52-
) b
53-
ON (a.c1 = b.c3)
54-
) c;
55-
56-
-- full-outer join over two nested table expressions (auto_join6.q)
57-
SELECT c.c1, c.c2, c.c3, c.c4
58-
FROM (
59-
SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4
60-
FROM
61-
(
62-
SELECT src1.key AS c1, src1.value AS c2 FROM src src1 WHERE src1.key > 100 and src1.key < 300
63-
) a
64-
FULL OUTER JOIN
65-
(
66-
SELECT src2.key AS c3, src2.value AS c4 FROM src src2 WHERE src2.key > 200 and src2.key < 400
67-
) b
68-
ON (a.c1 = b.c3)
69-
) c;
70-
71-
-- full-outer join + left-outer join over nested table expressions (auto_join7.q)
72-
SELECT c.c1, c.c2, c.c3, c.c4, c.c5, c.c6
73-
FROM (
74-
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
75-
FROM
76-
(
77-
SELECT src1.key AS c1, src1.value AS c2 FROM src src1 WHERE src1.key > 10 and src1.key < 150
78-
) a
79-
FULL OUTER JOIN
80-
(
81-
SELECT src2.key AS c3, src2.value AS c4 FROM src src2 WHERE src2.key > 150 and src2.key < 300
82-
) b
83-
ON (a.c1 = b.c3)
84-
LEFT OUTER JOIN
85-
(
86-
SELECT src3.key AS c5, src3.value AS c6 FROM src src3 WHERE src3.key > 200 and src3.key < 400
87-
) c
88-
ON (a.c1 = c.c5)
89-
) c;
90-
91-
-- left-outer join + join condition + filter (auto_join8.q)
92-
SELECT c.c1, c.c2, c.c3, c.c4
93-
FROM (
94-
SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4
95-
FROM
96-
(
97-
SELECT src1.key AS c1, src1.value AS c2 FROM src src1 WHERE src1.key > 100 and src1.key < 300
98-
) a
99-
LEFT OUTER JOIN
100-
(
101-
SELECT src2.key AS c3, src2.value AS c4 FROM src src2 WHERE src2.key > 200 and src2.key < 400
102-
) b
103-
ON (a.c1 = b.c3)
104-
) c
105-
where c.c3 IS NULL AND c.c1 IS NOT NULL;
106-
10726
-- inner join + join condition + filter (auto_join9.q)
10827
SELECT src1.key, src2.value
10928
FROM srcpart src1 JOIN src src2 ON (src1.key = src2.key)
@@ -171,64 +90,11 @@ where tab.key < 200;
17190
SELECT src1.*, src2.*
17291
FROM src src1 JOIN src src2 ON (src1.key = src2.key);
17392

174-
-- full outer join over Aggregate (auto_join18.q)
175-
SELECT a.key, a.value, b.key, b.value
176-
FROM
177-
(
178-
SELECT src1.key as key, count(src1.value) AS value FROM src src1 group by src1.key
179-
) a
180-
FULL OUTER JOIN
181-
(
182-
SELECT src2.key as key, count(distinct(src2.value)) AS value
183-
FROM src1 src2 group by src2.key
184-
) b
185-
ON (a.key = b.key);
186-
187-
-- full outer join + multi distinct (auto_join18_multi_distinct.q)
188-
SELECT a.key, a.value, b.key, b.value1, b.value2
189-
FROM
190-
(
191-
SELECT src1.key as key, count(src1.value) AS value FROM src src1 group by src1.key
192-
) a
193-
FULL OUTER JOIN
194-
(
195-
SELECT src2.key as key, count(distinct(src2.value)) AS value1,
196-
count(distinct(src2.key)) AS value2
197-
FROM src1 src2 group by src2.key
198-
) b
199-
ON (a.key = b.key);
200-
20193
-- join + disjunctive conditions (auto_join19.q)
20294
SELECT src1.key, src2.value
20395
FROM srcpart src1 JOIN src src2 ON (src1.key = src2.key)
20496
where (src1.ds = '2008-04-08' or src1.ds = '2008-04-09' )and (src1.hr = '12' or src1.hr = '11');
20597

206-
-- inner join + right-outer join #1 (auto_join20.q)
207-
SELECT a.k1,a.v1,a.k2,a.v2,a.k3,a.v3
208-
FROM (
209-
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
210-
FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 200)
211-
RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 300)
212-
SORT BY k1,v1,k2,v2,k3,v3
213-
)a;
214-
215-
-- inner join + right-outer join #2 (auto_join20.q)
216-
SELECT a.k1,a.v1,a.k2,a.v2,a.k3,a.v3
217-
FROM (
218-
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
219-
FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key < 100)
220-
RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 300)
221-
SORT BY k1,v1,k2,v2,k3,v3
222-
)a;
223-
224-
-- left outer join + right outer join (auto_join21.q)
225-
SELECT *
226-
FROM
227-
src src1
228-
LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
229-
RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
230-
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
231-
23298
-- nested join (auto_join22.q)
23399
SELECT src5.src1_value
234100
FROM
@@ -265,54 +131,6 @@ JOIN
265131
) src3
266132
ON src_12.key = src3.k AND src3.k < 300;
267133

268-
-- left outer + right outer (auto_join28.q)
269-
SELECT * FROM src src1
270-
LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
271-
RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
272-
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
273-
274-
-- right outer + right outer (auto_join28.q)
275-
SELECT * FROM src src1
276-
RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
277-
RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
278-
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
279-
280-
-- left outer + left outer (auto_join28.q)
281-
SELECT * FROM src src1
282-
LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
283-
LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
284-
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
285-
286-
-- right outer + left outer (auto_join28.q)
287-
SELECT * FROM src src1
288-
RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
289-
LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
290-
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
291-
292-
-- inner + left outer (auto_join29.q)
293-
SELECT * FROM src src1
294-
JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
295-
LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
296-
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
297-
298-
-- inner + right outer (auto_join29.q)
299-
SELECT * FROM src src1
300-
JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
301-
RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
302-
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
303-
304-
-- left + inner outer (auto_join29.q)
305-
SELECT * FROM src src1
306-
LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
307-
JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
308-
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
309-
310-
-- right + inner join (auto_join29.q)
311-
SELECT * FROM src src1
312-
RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
313-
JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
314-
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
315-
316134
-- inner join with sorted by nested table expression (auto_join30.q)
317135
FROM
318136
(SELECT src.* FROM src sort by key) x
@@ -321,22 +139,6 @@ JOIN
321139
ON (x.key = Y.key)
322140
select Y.key,Y.value;
323141

324-
-- left outer join with sorted by nested table expression (auto_join30.q)
325-
FROM
326-
(SELECT src.* FROM src sort by key) x
327-
LEFT OUTER JOIN
328-
(SELECT src.* FROM src sort by value) Y
329-
ON (x.key = Y.key)
330-
select Y.key,Y.value;
331-
332-
-- right outer join with sorted by nested table expression (auto_join30.q)
333-
FROM
334-
(SELECT src.* FROM src sort by key) x
335-
RIGHT OUTER JOIN
336-
(SELECT src.* FROM src sort by value) Y
337-
ON (x.key = Y.key)
338-
select Y.key,Y.value;
339-
340142
-- inner + inner with sorted by nested table expression (auto_join30.q)
341143
FROM
342144
(SELECT src.* FROM src sort by key) x
@@ -348,61 +150,6 @@ JOIN
348150
ON (x.key = Z.key)
349151
select Y.key,Y.value;
350152

351-
-- inner + left outer with sorted by nested table expression (auto_join30.q)
352-
FROM
353-
(SELECT src.* FROM src sort by key) x
354-
JOIN
355-
(SELECT src.* FROM src sort by value) Y
356-
ON (x.key = Y.key)
357-
LEFT OUTER JOIN
358-
(SELECT src.* FROM src sort by value) Z
359-
ON (x.key = Z.key)
360-
select Y.key,Y.value;
361-
362-
-- left + left outer with sorted by nested table expression (auto_join30.q)
363-
FROM
364-
(SELECT src.* FROM src sort by key) x
365-
LEFT OUTER JOIN
366-
(SELECT src.* FROM src sort by value) Y
367-
ON (x.key = Y.key)
368-
LEFT OUTER JOIN
369-
(SELECT src.* FROM src sort by value) Z
370-
ON (x.key = Z.key)
371-
select Y.key,Y.value;
372-
373-
-- left + right outer with sorted by nested table expression (auto_join30.q)
374-
FROM
375-
(SELECT src.* FROM src sort by key) x
376-
LEFT OUTER JOIN
377-
(SELECT src.* FROM src sort by value) Y
378-
ON (x.key = Y.key)
379-
RIGHT OUTER JOIN
380-
(SELECT src.* FROM src sort by value) Z
381-
ON (x.key = Z.key)
382-
select Y.key,Y.value;
383-
384-
-- right + right outer with sorted by nested table expression (auto_join30.q)
385-
FROM
386-
(SELECT src.* FROM src sort by key) x
387-
RIGHT OUTER JOIN
388-
(SELECT src.* FROM src sort by value) Y
389-
ON (x.key = Y.key)
390-
RIGHT OUTER JOIN
391-
(SELECT src.* FROM src sort by value) Z
392-
ON (x.key = Z.key)
393-
select Y.key,Y.value;
394-
395-
-- right outer + inner with sorted by nested table expression (auto_join31.q)
396-
FROM
397-
(SELECT src.* FROM src sort by key) x
398-
RIGHT OUTER JOIN
399-
(SELECT src.* FROM src sort by value) Y
400-
ON (x.key = Y.key)
401-
JOIN
402-
(SELECT src.* FROM src sort by value) Z
403-
ON (x.key = Z.key)
404-
select Y.key,Y.value;
405-
406153
-- join over set operation (join34.q)
407154
SELECT x.key, x.value, subq1.value
408155
FROM
@@ -426,15 +173,6 @@ SELECT x.key, COUNT(*)
426173
FROM src x JOIN src y ON x.key = y.key
427174
GROUP BY x.key;
428175

429-
-- left semi greater than predicate
430-
SELECT * FROM testData2 x LEFT SEMI JOIN testData2 y ON x.a >= y.a + 2;
431-
432-
-- left semi greater than predicate and equal operator #1
433-
SELECT * FROM testData2 x LEFT SEMI JOIN testData2 y ON x.b = y.b and x.a >= y.a + 2;
434-
435-
-- left semi greater than predicate and equal operator #2
436-
SELECT * FROM testData2 x LEFT SEMI JOIN testData2 y ON x.b = y.a and x.a >= y.b + 1;
437-
438176
-- inner join with one-match-per-row filtering predicates (where)
439177
SELECT * FROM uppercasedata u JOIN lowercasedata l WHERE u.n = l.N;
440178

@@ -453,18 +191,6 @@ SELECT * FROM
453191
(SELECT * FROM testData2 WHERE a = 2) y
454192
WHERE x.a = y.a;
455193

456-
-- basic full outer join
457-
SELECT * FROM
458-
(SELECT * FROM upperCaseData WHERE N <= 4) leftTable FULL OUTER JOIN
459-
(SELECT * FROM upperCaseData WHERE N >= 3) rightTable
460-
ON leftTable.N = rightTable.N;
461-
462-
-- basic right outer join
463-
SELECT * FROM lowercasedata l RIGHT OUTER JOIN uppercasedata u ON l.n = u.N;
464-
465-
-- basic left outer join
466-
SELECT * FROM uppercasedata u LEFT OUTER JOIN lowercasedata l ON l.n = u.N;
467-
468194
-- inner join ON with table name as qualifier
469195
SELECT * FROM upperCaseData JOIN lowerCaseData ON lowerCaseData.n = upperCaseData.N;
470196

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
-- left semi greater than predicate
2+
SELECT * FROM testData2 x LEFT SEMI JOIN testData2 y ON x.a >= y.a + 2;
3+
4+
-- left semi greater than predicate and equal operator #1
5+
SELECT * FROM testData2 x LEFT SEMI JOIN testData2 y ON x.b = y.b and x.a >= y.a + 2;
6+
7+
-- left semi greater than predicate and equal operator #2
8+
SELECT * FROM testData2 x LEFT SEMI JOIN testData2 y ON x.b = y.a and x.a >= y.b + 1;

0 commit comments

Comments
 (0)