Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
3b44c59
adding testcase
kevinyu98 Apr 20, 2016
18b4a31
Merge remote-tracking branch 'upstream/master'
kevinyu98 Apr 22, 2016
4f4d1c8
Merge remote-tracking branch 'upstream/master'
kevinyu98 Apr 23, 2016
f5f0cbe
Merge remote-tracking branch 'upstream/master'
kevinyu98 Apr 23, 2016
d8b2edb
Merge remote-tracking branch 'upstream/master'
kevinyu98 Apr 25, 2016
196b6c6
Merge remote-tracking branch 'upstream/master'
kevinyu98 Apr 25, 2016
f37a01e
Merge remote-tracking branch 'upstream/master'
kevinyu98 Apr 27, 2016
bb5b01f
Merge remote-tracking branch 'upstream/master'
kevinyu98 Apr 30, 2016
bde5820
Merge remote-tracking branch 'upstream/master'
kevinyu98 May 4, 2016
5f7cd96
Merge remote-tracking branch 'upstream/master'
kevinyu98 May 10, 2016
893a49a
Merge remote-tracking branch 'upstream/master'
kevinyu98 May 13, 2016
4bbe1fd
Merge remote-tracking branch 'upstream/master'
kevinyu98 May 17, 2016
b2dd795
Merge remote-tracking branch 'upstream/master'
kevinyu98 May 18, 2016
8c3e5da
Merge remote-tracking branch 'upstream/master'
kevinyu98 May 18, 2016
a0eaa40
Merge remote-tracking branch 'upstream/master'
kevinyu98 May 19, 2016
d03c940
Merge remote-tracking branch 'upstream/master'
kevinyu98 May 19, 2016
d728d5e
Merge remote-tracking branch 'upstream/master'
kevinyu98 May 24, 2016
ea104dd
Merge remote-tracking branch 'upstream/master'
kevinyu98 May 25, 2016
6ab1215
Merge remote-tracking branch 'upstream/master'
kevinyu98 May 27, 2016
0c56653
Merge remote-tracking branch 'upstream/master'
kevinyu98 Jun 1, 2016
d7a1874
Merge remote-tracking branch 'upstream/master'
kevinyu98 Jun 1, 2016
85d3500
Merge remote-tracking branch 'upstream/master'
kevinyu98 Jun 2, 2016
c056f91
Merge remote-tracking branch 'upstream/master'
kevinyu98 Jun 3, 2016
0b8189d
Merge remote-tracking branch 'upstream/master'
kevinyu98 Jun 3, 2016
c2ea31d
Merge remote-tracking branch 'upstream/master'
kevinyu98 Jun 6, 2016
a2d3056
Merge remote-tracking branch 'upstream/master'
kevinyu98 Jun 8, 2016
39e5648
Merge remote-tracking branch 'upstream/master'
kevinyu98 Jun 8, 2016
b9370a3
Merge remote-tracking branch 'upstream/master'
kevinyu98 Jul 25, 2016
01224a4
Merge remote-tracking branch 'upstream/master'
kevinyu98 Aug 3, 2016
d05d39a
Merge remote-tracking branch 'upstream/master'
kevinyu98 Aug 19, 2016
ee6ed88
Merge remote-tracking branch 'upstream/master'
kevinyu98 Aug 26, 2016
db19296
Merge remote-tracking branch 'upstream/master'
kevinyu98 Aug 31, 2016
2e399d9
Merge remote-tracking branch 'upstream/master'
kevinyu98 Sep 1, 2016
0ef59bc
Merge remote-tracking branch 'upstream/master'
kevinyu98 Sep 30, 2016
6fad85f
Merge remote-tracking branch 'upstream/master'
kevinyu98 Oct 20, 2016
5525dff
Merge remote-tracking branch 'upstream/master'
kevinyu98 Nov 4, 2016
63715e4
Merge remote-tracking branch 'upstream/master'
kevinyu98 Nov 22, 2016
a084410
Merge remote-tracking branch 'upstream/master'
kevinyu98 Dec 9, 2016
cdfb1ad
first draft testcases
kevinyu98 Dec 9, 2016
753d7fe
in subquery testcase
kevinyu98 Dec 18, 2016
b6e5b97
Merge remote-tracking branch 'upstream/master'
kevinyu98 Dec 18, 2016
7ca65ec
Merge branch 'subquery' into spark-18871
kevinyu98 Dec 19, 2016
7165105
rerun the test
kevinyu98 Dec 19, 2016
32dbd46
rename the file name
kevinyu98 Dec 19, 2016
ee1e14e
fix comment
kevinyu98 Dec 19, 2016
c2ca009
rename the file
kevinyu98 Dec 19, 2016
9c584fb
logical grouping the IN subquery
kevinyu98 Dec 21, 2016
1c1900a
comment out 4 test cases
kevinyu98 Dec 22, 2016
7c129d9
address comments
kevinyu98 Jan 1, 2017
895bb35
remove two not in cases
kevinyu98 Jan 2, 2017
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,239 @@
-- A test suite for GROUP BY in parent side, subquery, and both predicate subquery
-- It includes correlated cases.

create temporary view t1 as select * from values
("t1a", 6S, 8, 10L, float(15.0), 20D, 20E2, timestamp '2014-04-04 01:00:00.000', date '2014-04-04'),
("t1b", 8S, 16, 19L, float(17.0), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
("t1a", 16S, 12, 21L, float(15.0), 20D, 20E2, timestamp '2014-06-04 01:02:00.001', date '2014-06-04'),
("t1a", 16S, 12, 10L, float(15.0), 20D, 20E2, timestamp '2014-07-04 01:01:00.000', date '2014-07-04'),
("t1c", 8S, 16, 19L, float(17.0), 25D, 26E2, timestamp '2014-05-04 01:02:00.001', date '2014-05-05'),
("t1d", null, 16, 22L, float(17.0), 25D, 26E2, timestamp '2014-06-04 01:01:00.000', null),
("t1d", null, 16, 19L, float(17.0), 25D, 26E2, timestamp '2014-07-04 01:02:00.001', null),
("t1e", 10S, null, 25L, float(17.0), 25D, 26E2, timestamp '2014-08-04 01:01:00.000', date '2014-08-04'),
("t1e", 10S, null, 19L, float(17.0), 25D, 26E2, timestamp '2014-09-04 01:02:00.001', date '2014-09-04'),
("t1d", 10S, null, 12L, float(17.0), 25D, 26E2, timestamp '2015-05-04 01:01:00.000', date '2015-05-04'),
("t1a", 6S, 8, 10L, float(15.0), 20D, 20E2, timestamp '2014-04-04 01:02:00.001', date '2014-04-04'),
("t1e", 10S, null, 19L, float(17.0), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', date '2014-05-04')
as t1(t1a, t1b, t1c, t1d, t1e, t1f, t1g, t1h, t1i);

create temporary view t2 as select * from values
("t2a", 6S, 12, 14L, float(15), 20D, 20E2, timestamp '2014-04-04 01:01:00.000', date '2014-04-04'),
("t1b", 10S, 12, 19L, float(17), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
("t1b", 8S, 16, 119L, float(17), 25D, 26E2, timestamp '2015-05-04 01:01:00.000', date '2015-05-04'),
("t1c", 12S, 16, 219L, float(17), 25D, 26E2, timestamp '2016-05-04 01:01:00.000', date '2016-05-04'),
("t1b", null, 16, 319L, float(17), 25D, 26E2, timestamp '2017-05-04 01:01:00.000', null),
("t2e", 8S, null, 419L, float(17), 25D, 26E2, timestamp '2014-06-04 01:01:00.000', date '2014-06-04'),
("t1f", 19S, null, 519L, float(17), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
("t1b", 10S, 12, 19L, float(17), 25D, 26E2, timestamp '2014-06-04 01:01:00.000', date '2014-06-04'),
("t1b", 8S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-07-04 01:01:00.000', date '2014-07-04'),
("t1c", 12S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-08-04 01:01:00.000', date '2014-08-05'),
("t1e", 8S, null, 19L, float(17), 25D, 26E2, timestamp '2014-09-04 01:01:00.000', date '2014-09-04'),
("t1f", 19S, null, 19L, float(17), 25D, 26E2, timestamp '2014-10-04 01:01:00.000', date '2014-10-04'),
("t1b", null, 16, 19L, float(17), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', null)
as t2(t2a, t2b, t2c, t2d, t2e, t2f, t2g, t2h, t2i);

create temporary view t3 as select * from values
("t3a", 6S, 12, 110L, float(15), 20D, 20E2, timestamp '2014-04-04 01:02:00.000', date '2014-04-04'),
("t3a", 6S, 12, 10L, float(15), 20D, 20E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("t1b", 10S, 12, 219L, float(17), 25D, 26E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("t1b", 10S, 12, 19L, float(17), 25D, 26E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("t1b", 8S, 16, 319L, float(17), 25D, 26E2, timestamp '2014-06-04 01:02:00.000', date '2014-06-04'),
("t1b", 8S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-07-04 01:02:00.000', date '2014-07-04'),
("t3c", 17S, 16, 519L, float(17), 25D, 26E2, timestamp '2014-08-04 01:02:00.000', date '2014-08-04'),
("t3c", 17S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-09-04 01:02:00.000', date '2014-09-05'),
("t1b", null, 16, 419L, float(17), 25D, 26E2, timestamp '2014-10-04 01:02:00.000', null),
("t1b", null, 16, 19L, float(17), 25D, 26E2, timestamp '2014-11-04 01:02:00.000', null),
("t3b", 8S, null, 719L, float(17), 25D, 26E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("t3b", 8S, null, 19L, float(17), 25D, 26E2, timestamp '2015-05-04 01:02:00.000', date '2015-05-04')
as t3(t3a, t3b, t3c, t3d, t3e, t3f, t3g, t3h, t3i);

-- correlated IN subquery
-- GROUP BY in parent side
-- TC 01.01
SELECT t1a,
Avg(t1b)
FROM t1
WHERE t1a IN (SELECT t2a
FROM t2)
GROUP BY t1a;

-- TC 01.02
SELECT t1a,
Max(t1b)
FROM t1
WHERE t1b IN (SELECT t2b
FROM t2
WHERE t1a = t2a)
GROUP BY t1a,
t1d;

-- TC 01.03
SELECT t1a,
t1b
FROM t1
WHERE t1c IN (SELECT t2c
FROM t2
WHERE t1a = t2a)
GROUP BY t1a,
t1b;

-- TC 01.04
SELECT t1a,
Sum(DISTINCT( t1b ))
FROM t1
WHERE t1c IN (SELECT t2c
FROM t2
WHERE t1a = t2a)
OR t1c IN (SELECT t3c
FROM t3
WHERE t1a = t3a)
GROUP BY t1a,
t1c;

-- TC 01.05
SELECT t1a,
Sum(DISTINCT( t1b ))
FROM t1
WHERE t1c IN (SELECT t2c
FROM t2
WHERE t1a = t2a)
AND t1c IN (SELECT t3c
FROM t3
WHERE t1a = t3a)
GROUP BY t1a,
t1c;

-- TC 01.06
SELECT t1a,
Count(DISTINCT( t1b ))
FROM t1
WHERE t1c IN (SELECT t2c
FROM t2
WHERE t1a = t2a)
GROUP BY t1a,
t1c
HAVING t1a = "t1b";

-- GROUP BY in subquery
-- TC 01.07
SELECT *
FROM t1
WHERE t1b IN (SELECT Max(t2b)
FROM t2
GROUP BY t2a);

-- TC 01.08
SELECT *
FROM (SELECT t2a,
t2b
FROM t2
WHERE t2a IN (SELECT t1a
FROM t1
WHERE t1b = t2b)
GROUP BY t2a,
t2b) t2;

-- TC 01.09
SELECT Count(DISTINCT( * ))
FROM t1
WHERE t1b IN (SELECT Min(t2b)
FROM t2
WHERE t1a = t2a
AND t1c = t2c
GROUP BY t2a);

-- TC 01.10
SELECT t1a,
t1b
FROM t1
WHERE t1c IN (SELECT Max(t2c)
FROM t2
WHERE t1a = t2a
GROUP BY t2a,
t2c
HAVING t2c > 8);

-- TC 01.11
SELECT t1a,
t1b
FROM t1
WHERE t1c IN (SELECT t2c
FROM t2
WHERE t2a IN (SELECT Min(t3a)
FROM t3
WHERE t3a = t2a
GROUP BY t3b)
GROUP BY t2c);

-- GROUP BY in both
-- TC 01.12
SELECT t1a,
Min(t1b)
FROM t1
WHERE t1c IN (SELECT Min(t2c)
FROM t2
WHERE t2b = t1b
GROUP BY t2a)
GROUP BY t1a;

-- TC 01.13
SELECT t1a,
Min(t1b)
FROM t1
WHERE t1c IN (SELECT Min(t2c)
FROM t2
WHERE t2b IN (SELECT Min(t3b)
FROM t3
WHERE t2a = t3a
GROUP BY t3a)
GROUP BY t2c)
GROUP BY t1a,
t1d;

-- TC 01.14
SELECT t1a,
Min(t1b)
FROM t1
WHERE t1c IN (SELECT Min(t2c)
FROM t2
WHERE t2b = t1b
GROUP BY t2a)
AND t1d IN (SELECT t3d
FROM t3
WHERE t1c = t3c
GROUP BY t3d)
GROUP BY t1a;

-- TC 01.15
SELECT t1a,
Min(t1b)
FROM t1
WHERE t1c IN (SELECT Min(t2c)
FROM t2
WHERE t2b = t1b
GROUP BY t2a)
OR t1d IN (SELECT t3d
FROM t3
WHERE t1c = t3c
GROUP BY t3d)
GROUP BY t1a;

-- TC 01.16
SELECT t1a,
Min(t1b)
FROM t1
WHERE t1c IN (SELECT Min(t2c)
FROM t2
WHERE t2b = t1b
GROUP BY t2a
HAVING t2a > t1a)
OR t1d IN (SELECT t3d
FROM t3
WHERE t1c = t3c
GROUP BY t3d
HAVING t3d = t1d)
GROUP BY t1a
HAVING Min(t1b) IS NOT NULL;



Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
-- A test suite for simple IN predicate subquery
-- It includes correlated cases.

create temporary view t1 as select * from values
("t1a", 6S, 8, 10L, float(15.0), 20D, 20E2, timestamp '2014-04-04 01:00:00.000', date '2014-04-04'),
("t1b", 8S, 16, 19L, float(17.0), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
("t1a", 16S, 12, 21L, float(15.0), 20D, 20E2, timestamp '2014-06-04 01:02:00.001', date '2014-06-04'),
("t1a", 16S, 12, 10L, float(15.0), 20D, 20E2, timestamp '2014-07-04 01:01:00.000', date '2014-07-04'),
("t1c", 8S, 16, 19L, float(17.0), 25D, 26E2, timestamp '2014-05-04 01:02:00.001', date '2014-05-05'),
("t1d", null, 16, 22L, float(17.0), 25D, 26E2, timestamp '2014-06-04 01:01:00.000', null),
("t1d", null, 16, 19L, float(17.0), 25D, 26E2, timestamp '2014-07-04 01:02:00.001', null),
("t1e", 10S, null, 25L, float(17.0), 25D, 26E2, timestamp '2014-08-04 01:01:00.000', date '2014-08-04'),
("t1e", 10S, null, 19L, float(17.0), 25D, 26E2, timestamp '2014-09-04 01:02:00.001', date '2014-09-04'),
("t1d", 10S, null, 12L, float(17.0), 25D, 26E2, timestamp '2015-05-04 01:01:00.000', date '2015-05-04'),
("t1a", 6S, 8, 10L, float(15.0), 20D, 20E2, timestamp '2014-04-04 01:02:00.001', date '2014-04-04'),
("t1e", 10S, null, 19L, float(17.0), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', date '2014-05-04')
as t1(t1a, t1b, t1c, t1d, t1e, t1f, t1g, t1h, t1i);

create temporary view t2 as select * from values
("t2a", 6S, 12, 14L, float(15), 20D, 20E2, timestamp '2014-04-04 01:01:00.000', date '2014-04-04'),
("t1b", 10S, 12, 19L, float(17), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
("t1b", 8S, 16, 119L, float(17), 25D, 26E2, timestamp '2015-05-04 01:01:00.000', date '2015-05-04'),
("t1c", 12S, 16, 219L, float(17), 25D, 26E2, timestamp '2016-05-04 01:01:00.000', date '2016-05-04'),
("t1b", null, 16, 319L, float(17), 25D, 26E2, timestamp '2017-05-04 01:01:00.000', null),
("t2e", 8S, null, 419L, float(17), 25D, 26E2, timestamp '2014-06-04 01:01:00.000', date '2014-06-04'),
("t1f", 19S, null, 519L, float(17), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
("t1b", 10S, 12, 19L, float(17), 25D, 26E2, timestamp '2014-06-04 01:01:00.000', date '2014-06-04'),
("t1b", 8S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-07-04 01:01:00.000', date '2014-07-04'),
("t1c", 12S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-08-04 01:01:00.000', date '2014-08-05'),
("t1e", 8S, null, 19L, float(17), 25D, 26E2, timestamp '2014-09-04 01:01:00.000', date '2014-09-04'),
("t1f", 19S, null, 19L, float(17), 25D, 26E2, timestamp '2014-10-04 01:01:00.000', date '2014-10-04'),
("t1b", null, 16, 19L, float(17), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', null)
as t2(t2a, t2b, t2c, t2d, t2e, t2f, t2g, t2h, t2i);

create temporary view t3 as select * from values
("t3a", 6S, 12, 110L, float(15), 20D, 20E2, timestamp '2014-04-04 01:02:00.000', date '2014-04-04'),
("t3a", 6S, 12, 10L, float(15), 20D, 20E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("t1b", 10S, 12, 219L, float(17), 25D, 26E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("t1b", 10S, 12, 19L, float(17), 25D, 26E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("t1b", 8S, 16, 319L, float(17), 25D, 26E2, timestamp '2014-06-04 01:02:00.000', date '2014-06-04'),
("t1b", 8S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-07-04 01:02:00.000', date '2014-07-04'),
("t3c", 17S, 16, 519L, float(17), 25D, 26E2, timestamp '2014-08-04 01:02:00.000', date '2014-08-04'),
("t3c", 17S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-09-04 01:02:00.000', date '2014-09-05'),
("t1b", null, 16, 419L, float(17), 25D, 26E2, timestamp '2014-10-04 01:02:00.000', null),
("t1b", null, 16, 19L, float(17), 25D, 26E2, timestamp '2014-11-04 01:02:00.000', null),
("t3b", 8S, null, 719L, float(17), 25D, 26E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("t3b", 8S, null, 19L, float(17), 25D, 26E2, timestamp '2015-05-04 01:02:00.000', date '2015-05-04')
as t3(t3a, t3b, t3c, t3d, t3e, t3f, t3g, t3h, t3i);

-- correlated IN subquery
-- simple select
-- TC 01.01
SELECT *
FROM t1
WHERE t1a IN (SELECT t2a
FROM t2);

-- TC 01.02
SELECT *
FROM t1
WHERE t1b IN (SELECT t2b
FROM t2
WHERE t1a = t2a);

-- TC 01.03
SELECT t1a,
t1b
FROM t1
WHERE t1c IN (SELECT t2b
FROM t2
WHERE t1a != t2a);

-- TC 01.04
SELECT t1a,
t1b
FROM t1
WHERE t1c IN (SELECT t2b
FROM t2
WHERE t1a = t2a
OR t1b > t2b);

-- TC 01.05
SELECT t1a,
t1b
FROM t1
WHERE t1c IN (SELECT t2b
FROM t2
WHERE t2i IN (SELECT t3i
FROM t3
WHERE t2c = t3c));

-- TC 01.06
SELECT t1a,
t1b
FROM t1
WHERE t1c IN (SELECT t2b
FROM t2
WHERE t2a IN (SELECT t3a
FROM t3
WHERE t2c = t3c
AND t2b IS NOT NULL));

-- simple select for NOT IN
-- TC 01.07
SELECT DISTINCT( t1a ),
t1b,
t1h
FROM t1
WHERE t1a NOT IN (SELECT t2a
FROM t2);


Loading