Skip to content

Commit 3fe55f1

Browse files
committed
batch 2
1 parent 5f22316 commit 3fe55f1

File tree

4 files changed

+1034
-42
lines changed

4 files changed

+1034
-42
lines changed

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

Lines changed: 316 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,31 +25,31 @@ FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key
2525
-- left-outer join (auto_join4.q)
2626
SELECT c.c1, c.c2, c.c3, c.c4
2727
FROM (
28-
SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4
29-
FROM
30-
(
31-
SELECT src1.key AS c1, src1.value AS c2 FROM src src1 WHERE src1.key > 100 and src1.key < 300
32-
) a
33-
LEFT OUTER JOIN
34-
(
35-
SELECT src2.key AS c3, src2.value AS c4 FROM src src2 WHERE src2.key > 200 and src2.key < 400
36-
) b
37-
ON (a.c1 = b.c3)
28+
SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4
29+
FROM
30+
(
31+
SELECT src1.key AS c1, src1.value AS c2 FROM src src1 WHERE src1.key > 100 and src1.key < 300
32+
) a
33+
LEFT OUTER JOIN
34+
(
35+
SELECT src2.key AS c3, src2.value AS c4 FROM src src2 WHERE src2.key > 200 and src2.key < 400
36+
) b
37+
ON (a.c1 = b.c3)
3838
) c;
3939

4040
-- right-outer join (auto_join5.q)
4141
SELECT c.c1, c.c2, c.c3, c.c4
4242
FROM (
43-
SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4
44-
FROM
45-
(
46-
SELECT src1.key AS c1, src1.value AS c2 FROM src src1 WHERE src1.key > 100 and src1.key < 300
47-
) a
48-
RIGHT OUTER JOIN
49-
(
50-
SELECT src2.key AS c3, src2.value AS c4 FROM src src2 WHERE src2.key > 200 and src2.key < 400
51-
) b
52-
ON (a.c1 = b.c3)
43+
SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4
44+
FROM
45+
(
46+
SELECT src1.key AS c1, src1.value AS c2 FROM src src1 WHERE src1.key > 100 and src1.key < 300
47+
) a
48+
RIGHT OUTER JOIN
49+
(
50+
SELECT src2.key AS c3, src2.value AS c4 FROM src src2 WHERE src2.key > 200 and src2.key < 400
51+
) b
52+
ON (a.c1 = b.c3)
5353
) c;
5454

5555
-- full-outer join (auto_join6.q)
@@ -106,4 +106,299 @@ where c.c3 IS NULL AND c.c1 IS NOT NULL;
106106
-- join (auto_join9.q)
107107
SELECT src1.key, src2.value
108108
FROM srcpart src1 JOIN src src2 ON (src1.key = src2.key)
109-
WHERE src1.ds = '2008-04-08' and src1.hr = '12'
109+
WHERE src1.ds = '2008-04-08' and src1.hr = '12';
110+
111+
-- self-join (auto_join10.q)
112+
FROM
113+
(SELECT src.* FROM src) x
114+
JOIN
115+
(SELECT src.* FROM src) Y
116+
ON (x.key = Y.key)
117+
select Y.key, Y.value;
118+
119+
-- self-join (auto_join11.q)
120+
SELECT src1.c1, src2.c4
121+
FROM
122+
(SELECT src.key as c1, src.value as c2 from src) src1
123+
JOIN
124+
(SELECT src.key as c3, src.value as c4 from src) src2
125+
ON src1.c1 = src2.c3 AND src1.c1 < 200;
126+
127+
-- join (auto_join12.q)
128+
SELECT src1.c1, src2.c4
129+
FROM
130+
(SELECT src.key as c1, src.value as c2 from src) src1
131+
JOIN
132+
(SELECT src.key as c3, src.value as c4 from src) src2
133+
ON src1.c1 = src2.c3 AND src1.c1 < 200
134+
JOIN
135+
(SELECT src.key as c5, src.value as c6 from src) src3
136+
ON src1.c1 = src3.c5 AND src3.c5 < 100;
137+
138+
-- join (auto_join13.q)
139+
SELECT src1.c1, src2.c4
140+
FROM
141+
(SELECT src.key as c1, src.value as c2 from src) src1
142+
JOIN
143+
(SELECT src.key as c3, src.value as c4 from src) src2
144+
ON src1.c1 = src2.c3 AND src1.c1 < 250
145+
JOIN
146+
(SELECT src.key as c5, src.value as c6 from src) src3
147+
ON src1.c1 + src2.c3 = src3.c5 AND src3.c5 < 400;
148+
149+
-- join (auto_join14.q)
150+
FROM src JOIN srcpart ON src.key = srcpart.key AND srcpart.ds = '2008-04-08' and src.key > 200
151+
SELECT src.key, srcpart.value;
152+
153+
-- join (auto_join15.q)
154+
SELECT a.k1, a.v1, a.k2, a.v2
155+
FROM (
156+
SELECT src1.key as k1, src1.value as v1, src2.key as k2, src2.value as v2
157+
FROM src src1 JOIN src src2 ON (src1.key = src2.key)
158+
SORT BY k1, v1, k2, v2
159+
) a;
160+
161+
-- join (auto_join16.q)
162+
SELECT subq.key, tab.value
163+
FROM
164+
(select a.key, a.value from src a where a.key > 100 ) subq
165+
JOIN src tab
166+
ON (subq.key = tab.key and subq.key > 150 and subq.value = tab.value)
167+
where tab.key < 200;
168+
169+
-- join (auto_join17.q)
170+
SELECT src1.*, src2.*
171+
FROM src src1 JOIN src src2 ON (src1.key = src2.key);
172+
173+
-- join (auto_join18.q)
174+
SELECT a.key, a.value, b.key, b.value
175+
FROM
176+
(
177+
SELECT src1.key as key, count(src1.value) AS value FROM src src1 group by src1.key
178+
) a
179+
FULL OUTER JOIN
180+
(
181+
SELECT src2.key as key, count(distinct(src2.value)) AS value
182+
FROM src1 src2 group by src2.key
183+
) b
184+
ON (a.key = b.key);
185+
186+
-- join (auto_join18_multi_distinct.q)
187+
SELECT a.key, a.value, b.key, b.value1, b.value2
188+
FROM
189+
(
190+
SELECT src1.key as key, count(src1.value) AS value FROM src src1 group by src1.key
191+
) a
192+
FULL OUTER JOIN
193+
(
194+
SELECT src2.key as key, count(distinct(src2.value)) AS value1,
195+
count(distinct(src2.key)) AS value2
196+
FROM src1 src2 group by src2.key
197+
) b
198+
ON (a.key = b.key);
199+
200+
-- join (auto_join19.q)
201+
SELECT src1.key, src2.value
202+
FROM srcpart src1 JOIN src src2 ON (src1.key = src2.key)
203+
where (src1.ds = '2008-04-08' or src1.ds = '2008-04-09' )and (src1.hr = '12' or src1.hr = '11');
204+
205+
-- join (auto_join20.q)
206+
SELECT a.k1,a.v1,a.k2,a.v2,a.k3,a.v3
207+
FROM (
208+
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
209+
FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 200)
210+
RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 300)
211+
SORT BY k1,v1,k2,v2,k3,v3
212+
)a;
213+
214+
-- join (auto_join20.q)
215+
SELECT a.k1,a.v1,a.k2,a.v2,a.k3,a.v3
216+
FROM (
217+
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
218+
FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key < 100)
219+
RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 300)
220+
SORT BY k1,v1,k2,v2,k3,v3
221+
)a;
222+
223+
-- join (auto_join21.q)
224+
SELECT *
225+
FROM
226+
src src1
227+
LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
228+
RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
229+
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
230+
231+
-- join (auto_join22.q)
232+
SELECT src5.src1_value
233+
FROM
234+
(SELECT src3.*, src4.value as src4_value, src4.key as src4_key
235+
FROM src src4
236+
JOIN (SELECT src2.*, src1.key as src1_key, src1.value as src1_value
237+
FROM src src1
238+
JOIN src src2 ON src1.key = src2.key) src3
239+
ON src3.src1_key = src4.key) src5;
240+
241+
-- join (auto_join23.q)
242+
SELECT * FROM src src1 JOIN src src2
243+
WHERE src1.key < 200 and src2.key < 200
244+
SORT BY src1.key, src1.value, src2.key, src2.value;
245+
246+
-- join (auto_join24.q)
247+
WITH tst1 AS (SELECT a.key, count(1) as cnt FROM src a group by a.key)
248+
SELECT sum(a.cnt) FROM tst1 a JOIN tst1 b ON a.key = b.key;
249+
250+
-- join (auto_join26.q)
251+
SELECT x.key, count(1) FROM src1 x JOIN src y ON (x.key = y.key) group by x.key order by x.key;
252+
253+
-- join (auto_join27.q)
254+
SELECT count(1)
255+
FROM
256+
(
257+
SELECT src.key, src.value from src
258+
UNION ALL
259+
SELECT DISTINCT src.key, src.value from src
260+
) src_12
261+
JOIN
262+
(
263+
SELECT src.key as k, src.value as v from src
264+
) src3
265+
ON src_12.key = src3.k AND src3.k < 300;
266+
267+
-- join (auto_join28.q)
268+
SELECT * FROM src src1
269+
LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
270+
RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
271+
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
272+
273+
-- join (auto_join28.q)
274+
SELECT * FROM src src1
275+
RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
276+
RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
277+
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
278+
279+
-- join (auto_join28.q)
280+
SELECT * FROM src src1
281+
LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
282+
LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
283+
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
284+
285+
-- join (auto_join28.q)
286+
SELECT * FROM src src1
287+
RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
288+
LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
289+
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
290+
291+
-- join (auto_join29.q)
292+
SELECT * FROM src src1
293+
JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
294+
LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
295+
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
296+
297+
-- join (auto_join29.q)
298+
SELECT * FROM src src1
299+
JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
300+
RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
301+
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
302+
303+
-- join (auto_join29.q)
304+
SELECT * FROM src src1
305+
LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
306+
JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
307+
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
308+
309+
-- join (auto_join29.q)
310+
SELECT * FROM src src1
311+
RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 200 AND src2.key > 200)
312+
JOIN src src3 ON (src2.key = src3.key AND src3.key < 200)
313+
SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value;
314+
315+
-- join (auto_join30.q)
316+
FROM
317+
(SELECT src.* FROM src sort by key) x
318+
JOIN
319+
(SELECT src.* FROM src sort by value) Y
320+
ON (x.key = Y.key)
321+
select Y.key,Y.value;
322+
323+
-- join (auto_join30.q)
324+
FROM
325+
(SELECT src.* FROM src sort by key) x
326+
LEFT OUTER JOIN
327+
(SELECT src.* FROM src sort by value) Y
328+
ON (x.key = Y.key)
329+
select Y.key,Y.value;
330+
331+
-- join (auto_join30.q)
332+
FROM
333+
(SELECT src.* FROM src sort by key) x
334+
RIGHT OUTER JOIN
335+
(SELECT src.* FROM src sort by value) Y
336+
ON (x.key = Y.key)
337+
select Y.key,Y.value;
338+
339+
-- join (auto_join30.q)
340+
FROM
341+
(SELECT src.* FROM src sort by key) x
342+
JOIN
343+
(SELECT src.* FROM src sort by value) Y
344+
ON (x.key = Y.key)
345+
JOIN
346+
(SELECT src.* FROM src sort by value) Z
347+
ON (x.key = Z.key)
348+
select Y.key,Y.value;
349+
350+
-- join (auto_join30.q)
351+
FROM
352+
(SELECT src.* FROM src sort by key) x
353+
JOIN
354+
(SELECT src.* FROM src sort by value) Y
355+
ON (x.key = Y.key)
356+
LEFT OUTER JOIN
357+
(SELECT src.* FROM src sort by value) Z
358+
ON (x.key = Z.key)
359+
select Y.key,Y.value;
360+
361+
-- join (auto_join30.q)
362+
FROM
363+
(SELECT src.* FROM src sort by key) x
364+
LEFT OUTER JOIN
365+
(SELECT src.* FROM src sort by value) Y
366+
ON (x.key = Y.key)
367+
LEFT OUTER JOIN
368+
(SELECT src.* FROM src sort by value) Z
369+
ON (x.key = Z.key)
370+
select Y.key,Y.value;
371+
372+
-- join (auto_join30.q)
373+
FROM
374+
(SELECT src.* FROM src sort by key) x
375+
LEFT OUTER JOIN
376+
(SELECT src.* FROM src sort by value) Y
377+
ON (x.key = Y.key)
378+
RIGHT OUTER JOIN
379+
(SELECT src.* FROM src sort by value) Z
380+
ON (x.key = Z.key)
381+
select Y.key,Y.value;
382+
383+
-- join (auto_join30.q)
384+
FROM
385+
(SELECT src.* FROM src sort by key) x
386+
RIGHT OUTER JOIN
387+
(SELECT src.* FROM src sort by value) Y
388+
ON (x.key = Y.key)
389+
RIGHT OUTER JOIN
390+
(SELECT src.* FROM src sort by value) Z
391+
ON (x.key = Z.key)
392+
select Y.key,Y.value;
393+
394+
-- join (auto_join31.q)
395+
FROM
396+
(SELECT src.* FROM src sort by key) x
397+
RIGHT OUTER JOIN
398+
(SELECT src.* FROM src sort by value) Y
399+
ON (x.key = Y.key)
400+
JOIN
401+
(SELECT src.* FROM src sort by value) Z
402+
ON (x.key = Z.key)
403+
select Y.key,Y.value;
404+

0 commit comments

Comments
 (0)