@@ -51,6 +51,18 @@ create temporary view t3 as select * from values
51
51
(" val3b" , 8S, null , 19L, float (17 ), 25D, 26E2, timestamp ' 2015-05-04 01:02:00.000' , date ' 2015-05-04' )
52
52
as t3(t3a, t3b, t3c, t3d, t3e, t3f, t3g, t3h, t3i);
53
53
54
+ create temporary view s1 as select * from values
55
+ (1 ), (3 ), (5 ), (7 ), (9 )
56
+ as s1(id);
57
+
58
+ create temporary view s2 as select * from values
59
+ (1 ), (3 ), (4 ), (6 ), (9 )
60
+ as s2(id);
61
+
62
+ create temporary view s3 as select * from values
63
+ (3 ), (4 ), (6 ), (9 )
64
+ as s3(id);
65
+
54
66
-- correlated IN subquery
55
67
-- different JOIN in parent side
56
68
-- TC 01.01
@@ -272,3 +284,101 @@ Group By t1a, t1b, t1c, t2a, t2b, t2c
272
284
HAVING t2c IS NOT NULL
273
285
ORDER By t2b DESC nulls last;
274
286
287
+
288
+ SELECT s1 .id FROM s1
289
+ JOIN s2 ON s1 .id = s2 .id
290
+ AND s1 .id IN (SELECT 9 );
291
+
292
+
293
+ SELECT s1 .id FROM s1
294
+ JOIN s2 ON s1 .id = s2 .id
295
+ AND s1 .id NOT IN (SELECT 9 );
296
+
297
+
298
+ -- IN with Subquery ON INNER JOIN
299
+ SELECT s1 .id FROM s1
300
+ JOIN s2 ON s1 .id = s2 .id
301
+ AND s1 .id IN (SELECT id FROM s3);
302
+
303
+
304
+ -- IN with Subquery ON LEFT SEMI JOIN
305
+ SELECT s1 .id AS id2 FROM s1
306
+ LEFT SEMI JOIN s2
307
+ ON s1 .id = s2 .id
308
+ AND s1 .id IN (SELECT id FROM s3);
309
+
310
+
311
+ -- IN with Subquery ON LEFT ANTI JOIN
312
+ SELECT s1 .id as id2 FROM s1
313
+ LEFT ANTI JOIN s2
314
+ ON s1 .id = s2 .id
315
+ AND s1 .id IN (SELECT id FROM s3);
316
+
317
+
318
+ -- IN with Subquery ON LEFT OUTER JOIN
319
+ SELECT s1 .id , s2 .id as id2 FROM s1
320
+ LEFT OUTER JOIN s2
321
+ ON s1 .id = s2 .id
322
+ AND s1 .id IN (SELECT id FROM s3);
323
+
324
+
325
+ -- IN with Subquery ON RIGHT OUTER JOIN
326
+ SELECT s1 .id , s2 .id as id2 FROM s1
327
+ RIGHT OUTER JOIN s2
328
+ ON s1 .id = s2 .id
329
+ AND s1 .id IN (SELECT id FROM s3);
330
+
331
+
332
+ -- IN with Subquery ON FULL OUTER JOIN
333
+ SELECT s1 .id , s2 .id AS id2 FROM s1
334
+ FULL OUTER JOIN s2
335
+ ON s1 .id = s2 .id
336
+ AND s1 .id IN (SELECT id FROM s3);
337
+
338
+
339
+ -- NOT IN with Subquery ON INNER JOIN
340
+ SELECT s1 .id FROM s1
341
+ JOIN s2 ON s1 .id = s2 .id
342
+ AND s1 .id NOT IN (SELECT id FROM s3);
343
+
344
+
345
+ -- NOT IN with Subquery ON LEFT SEMI JOIN
346
+ SELECT s1 .id AS id2 FROM s1
347
+ LEFT SEMI JOIN s2
348
+ ON s1 .id = s2 .id
349
+ AND s1 .id NOT IN (SELECT id FROM s3);
350
+
351
+
352
+ -- NOT IN with Subquery ON LEFT ANTI JOIN
353
+ SELECT s1 .id AS id2 FROM s1
354
+ LEFT ANTI JOIN s2
355
+ ON s1 .id = s2 .id
356
+ AND s1 .id NOT IN (SELECT id FROM s3);
357
+
358
+
359
+ -- NOT IN with Subquery ON LEFT OUTER JOIN
360
+ SELECT s1 .id , s2 .id AS id2 FROM s1
361
+ LEFT OUTER JOIN s2
362
+ ON s1 .id = s2 .id
363
+ AND s1 .id NOT IN (SELECT id FROM s3);
364
+
365
+
366
+ -- NOT IN with Subquery ON RIGHT OUTER JOIN
367
+ SELECT s1 .id , s2 .id AS id2 FROM s1
368
+ RIGHT OUTER JOIN s2
369
+ ON s1 .id = s2 .id
370
+ AND s1 .id NOT IN (SELECT id FROM s3);
371
+
372
+
373
+ -- NOT IN with Subquery ON FULL OUTER JOIN
374
+ SELECT s1 .id , s2 .id AS id2 FROM s1
375
+ FULL OUTER JOIN s2
376
+ ON s1 .id = s2 .id
377
+ AND s1 .id NOT IN (SELECT id FROM s3);
378
+
379
+
380
+ DROP VIEW s1;
381
+
382
+ DROP VIEW s2;
383
+
384
+ DROP VIEW s3;
0 commit comments