Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 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
b6e5b97
Merge remote-tracking branch 'upstream/master'
kevinyu98 Dec 18, 2016
bdd5423
Merge remote-tracking branch 'upstream/master'
kevinyu98 Jan 11, 2017
4366200
add not in group by
kevinyu98 Jan 11, 2017
8e7eecf
adding test cases
kevinyu98 Jan 12, 2017
ac0f97c
adding 3 test case files
kevinyu98 Jan 13, 2017
6638336
Merge remote-tracking branch 'upstream/master'
kevinyu98 Jan 24, 2017
d2019a6
fix test case
kevinyu98 Jan 30, 2017
f89863e
Merge remote-tracking branch 'upstream/master'
kevinyu98 Jan 30, 2017
6ec1f89
Merge branch 'spark2-18871' into spark-18871-2
kevinyu98 Jan 30, 2017
2d13997
add 2nd batch testcase
kevinyu98 Jan 31, 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,100 @@
-- A test suite for IN LIMIT in parent side, subquery, and both predicate subquery
-- It includes correlated cases.

create temporary view t1 as select * from values
("val1a", 6S, 8, 10L, float(15.0), 20D, 20E2, timestamp '2014-04-04 01:00:00.000', date '2014-04-04'),
("val1b", 8S, 16, 19L, float(17.0), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
("val1a", 16S, 12, 21L, float(15.0), 20D, 20E2, timestamp '2014-06-04 01:02:00.001', date '2014-06-04'),
("val1a", 16S, 12, 10L, float(15.0), 20D, 20E2, timestamp '2014-07-04 01:01:00.000', date '2014-07-04'),
("val1c", 8S, 16, 19L, float(17.0), 25D, 26E2, timestamp '2014-05-04 01:02:00.001', date '2014-05-05'),
("val1d", null, 16, 22L, float(17.0), 25D, 26E2, timestamp '2014-06-04 01:01:00.000', null),
("val1d", null, 16, 19L, float(17.0), 25D, 26E2, timestamp '2014-07-04 01:02:00.001', null),
("val1e", 10S, null, 25L, float(17.0), 25D, 26E2, timestamp '2014-08-04 01:01:00.000', date '2014-08-04'),
("val1e", 10S, null, 19L, float(17.0), 25D, 26E2, timestamp '2014-09-04 01:02:00.001', date '2014-09-04'),
("val1d", 10S, null, 12L, float(17.0), 25D, 26E2, timestamp '2015-05-04 01:01:00.000', date '2015-05-04'),
("val1a", 6S, 8, 10L, float(15.0), 20D, 20E2, timestamp '2014-04-04 01:02:00.001', date '2014-04-04'),
("val1e", 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
("val2a", 6S, 12, 14L, float(15), 20D, 20E2, timestamp '2014-04-04 01:01:00.000', date '2014-04-04'),
("val1b", 10S, 12, 19L, float(17), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
("val1b", 8S, 16, 119L, float(17), 25D, 26E2, timestamp '2015-05-04 01:01:00.000', date '2015-05-04'),
("val1c", 12S, 16, 219L, float(17), 25D, 26E2, timestamp '2016-05-04 01:01:00.000', date '2016-05-04'),
("val1b", null, 16, 319L, float(17), 25D, 26E2, timestamp '2017-05-04 01:01:00.000', null),
("val2e", 8S, null, 419L, float(17), 25D, 26E2, timestamp '2014-06-04 01:01:00.000', date '2014-06-04'),
("val1f", 19S, null, 519L, float(17), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
("val1b", 10S, 12, 19L, float(17), 25D, 26E2, timestamp '2014-06-04 01:01:00.000', date '2014-06-04'),
("val1b", 8S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-07-04 01:01:00.000', date '2014-07-04'),
("val1c", 12S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-08-04 01:01:00.000', date '2014-08-05'),
("val1e", 8S, null, 19L, float(17), 25D, 26E2, timestamp '2014-09-04 01:01:00.000', date '2014-09-04'),
("val1f", 19S, null, 19L, float(17), 25D, 26E2, timestamp '2014-10-04 01:01:00.000', date '2014-10-04'),
("val1b", 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
("val3a", 6S, 12, 110L, float(15), 20D, 20E2, timestamp '2014-04-04 01:02:00.000', date '2014-04-04'),
("val3a", 6S, 12, 10L, float(15), 20D, 20E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("val1b", 10S, 12, 219L, float(17), 25D, 26E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("val1b", 10S, 12, 19L, float(17), 25D, 26E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("val1b", 8S, 16, 319L, float(17), 25D, 26E2, timestamp '2014-06-04 01:02:00.000', date '2014-06-04'),
("val1b", 8S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-07-04 01:02:00.000', date '2014-07-04'),
("val3c", 17S, 16, 519L, float(17), 25D, 26E2, timestamp '2014-08-04 01:02:00.000', date '2014-08-04'),
("val3c", 17S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-09-04 01:02:00.000', date '2014-09-05'),
("val1b", null, 16, 419L, float(17), 25D, 26E2, timestamp '2014-10-04 01:02:00.000', null),
("val1b", null, 16, 19L, float(17), 25D, 26E2, timestamp '2014-11-04 01:02:00.000', null),
("val3b", 8S, null, 719L, float(17), 25D, 26E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("val3b", 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
-- LIMIT in parent side
-- TC 01.01
SELECT *
FROM t1
WHERE t1a IN (SELECT t2a
FROM t2
WHERE t1d = t2d)
LIMIT 2;

-- TC 01.02
SELECT *
FROM t1
WHERE t1c IN (SELECT t2c
FROM t2
WHERE t2b >= 8
LIMIT 2)
LIMIT 4;

-- TC 01.03
SELECT Count(DISTINCT( t1a )),
t1b
FROM t1
WHERE t1d IN (SELECT t2d
FROM t2
ORDER BY t2c
LIMIT 2)
GROUP BY t1b
ORDER BY t1b DESC NULLS FIRST
LIMIT 1;

-- LIMIT with NOT IN
-- TC 01.04
SELECT *
FROM t1
WHERE t1b NOT IN (SELECT t2b
FROM t2
WHERE t2b > 6
LIMIT 2);

-- TC 01.05
SELECT Count(DISTINCT( t1a )),
t1b
FROM t1
WHERE t1d NOT IN (SELECT t2d
FROM t2
ORDER BY t2b DESC nulls first
LIMIT 1)
GROUP BY t1b
ORDER BY t1b NULLS last
LIMIT 1;
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
-- A test suite for ORDER BY in parent side, subquery, and both predicate subquery
-- It includes correlated cases.

create temporary view t1 as select * from values
("val1a", 6S, 8, 10L, float(15.0), 20D, 20E2, timestamp '2014-04-04 01:00:00.000', date '2014-04-04'),
("val1b", 8S, 16, 19L, float(17.0), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
("val1a", 16S, 12, 21L, float(15.0), 20D, 20E2, timestamp '2014-06-04 01:02:00.001', date '2014-06-04'),
("val1a", 16S, 12, 10L, float(15.0), 20D, 20E2, timestamp '2014-07-04 01:01:00.000', date '2014-07-04'),
("val1c", 8S, 16, 19L, float(17.0), 25D, 26E2, timestamp '2014-05-04 01:02:00.001', date '2014-05-05'),
("val1d", null, 16, 22L, float(17.0), 25D, 26E2, timestamp '2014-06-04 01:01:00.000', null),
("val1d", null, 16, 19L, float(17.0), 25D, 26E2, timestamp '2014-07-04 01:02:00.001', null),
("val1e", 10S, null, 25L, float(17.0), 25D, 26E2, timestamp '2014-08-04 01:01:00.000', date '2014-08-04'),
("val1e", 10S, null, 19L, float(17.0), 25D, 26E2, timestamp '2014-09-04 01:02:00.001', date '2014-09-04'),
("val1d", 10S, null, 12L, float(17.0), 25D, 26E2, timestamp '2015-05-04 01:01:00.000', date '2015-05-04'),
("val1a", 6S, 8, 10L, float(15.0), 20D, 20E2, timestamp '2014-04-04 01:02:00.001', date '2014-04-04'),
("val1e", 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
("val2a", 6S, 12, 14L, float(15), 20D, 20E2, timestamp '2014-04-04 01:01:00.000', date '2014-04-04'),
("val1b", 10S, 12, 19L, float(17), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
("val1b", 8S, 16, 119L, float(17), 25D, 26E2, timestamp '2015-05-04 01:01:00.000', date '2015-05-04'),
("val1c", 12S, 16, 219L, float(17), 25D, 26E2, timestamp '2016-05-04 01:01:00.000', date '2016-05-04'),
("val1b", null, 16, 319L, float(17), 25D, 26E2, timestamp '2017-05-04 01:01:00.000', null),
("val2e", 8S, null, 419L, float(17), 25D, 26E2, timestamp '2014-06-04 01:01:00.000', date '2014-06-04'),
("val1f", 19S, null, 519L, float(17), 25D, 26E2, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
("val1b", 10S, 12, 19L, float(17), 25D, 26E2, timestamp '2014-06-04 01:01:00.000', date '2014-06-04'),
("val1b", 8S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-07-04 01:01:00.000', date '2014-07-04'),
("val1c", 12S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-08-04 01:01:00.000', date '2014-08-05'),
("val1e", 8S, null, 19L, float(17), 25D, 26E2, timestamp '2014-09-04 01:01:00.000', date '2014-09-04'),
("val1f", 19S, null, 19L, float(17), 25D, 26E2, timestamp '2014-10-04 01:01:00.000', date '2014-10-04'),
("val1b", 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
("val3a", 6S, 12, 110L, float(15), 20D, 20E2, timestamp '2014-04-04 01:02:00.000', date '2014-04-04'),
("val3a", 6S, 12, 10L, float(15), 20D, 20E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("val1b", 10S, 12, 219L, float(17), 25D, 26E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("val1b", 10S, 12, 19L, float(17), 25D, 26E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("val1b", 8S, 16, 319L, float(17), 25D, 26E2, timestamp '2014-06-04 01:02:00.000', date '2014-06-04'),
("val1b", 8S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-07-04 01:02:00.000', date '2014-07-04'),
("val3c", 17S, 16, 519L, float(17), 25D, 26E2, timestamp '2014-08-04 01:02:00.000', date '2014-08-04'),
("val3c", 17S, 16, 19L, float(17), 25D, 26E2, timestamp '2014-09-04 01:02:00.000', date '2014-09-05'),
("val1b", null, 16, 419L, float(17), 25D, 26E2, timestamp '2014-10-04 01:02:00.000', null),
("val1b", null, 16, 19L, float(17), 25D, 26E2, timestamp '2014-11-04 01:02:00.000', null),
("val3b", 8S, null, 719L, float(17), 25D, 26E2, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
("val3b", 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
-- ORDER BY in parent side
-- TC 01.01
SELECT *
FROM t1
WHERE t1a IN (SELECT t2a
FROM t2)
ORDER BY t1a;

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

-- TC 01.03
SELECT t1a,
t1b
FROM t1
WHERE t1c IN (SELECT t2c
FROM t2
WHERE t1a = t2a)
ORDER BY 2 DESC nulls last;

-- TC 01.04
SELECT Count(DISTINCT( t1a ))
FROM t1
WHERE t1b IN (SELECT t2b
FROM t2
WHERE t1a = t2a)
ORDER BY Count(DISTINCT( t1a ));

-- ORDER BY in subquery
-- TC 01.05
SELECT *
FROM t1
WHERE t1b IN (SELECT t2c
FROM t2
ORDER BY t2d);

-- ORDER BY in BOTH
-- TC 01.06
SELECT *
FROM t1
WHERE t1b IN (SELECT Min(t2b)
FROM t2
WHERE t1b = t2b
ORDER BY Min(t2b))
ORDER BY t1c DESC nulls first;

-- TC 01.07
SELECT t1a,
t1b,
t1h
FROM t1
WHERE t1c IN (SELECT t2c
FROM t2
WHERE t1a = t2a
ORDER BY t2b DESC nulls first)
OR t1h IN (SELECT t2h
FROM t2
WHERE t1h > t2h)
ORDER BY t1h DESC nulls last;

-- ORDER BY with NOT IN
-- TC 01.08
SELECT *
FROM t1
WHERE t1a NOT IN (SELECT t2a
FROM t2)
ORDER BY t1a;

-- TC 01.09
SELECT t1a,
t1b
FROM t1
WHERE t1a NOT IN (SELECT t2a
FROM t2
WHERE t1a = t2a)
ORDER BY t1b DESC nulls last;

-- TC 01.10
SELECT *
FROM t1
WHERE t1a NOT IN (SELECT t2a
FROM t2
ORDER BY t2a DESC nulls first)
and t1c IN (SELECT t2c
FROM t2
ORDER BY t2b DESC nulls last)
ORDER BY t1c DESC nulls last;

-- GROUP BY and ORDER BY
-- TC 01.11
SELECT *
FROM t1
WHERE t1b IN (SELECT Min(t2b)
FROM t2
GROUP BY t2a
ORDER BY t2a DESC);

-- TC 01.12
SELECT t1a,
Count(DISTINCT( t1b ))
FROM t1
WHERE t1b IN (SELECT Min(t2b)
FROM t2
WHERE t1a = t2a
GROUP BY t2a
ORDER BY t2a)
GROUP BY t1a,
t1h
ORDER BY t1a;

-- GROUP BY and ORDER BY with NOT IN
-- TC 01.13
SELECT *
FROM t1
WHERE t1b NOT IN (SELECT Min(t2b)
FROM t2
GROUP BY t2a
ORDER BY t2a);

-- TC 01.14
SELECT t1a,
Sum(DISTINCT( t1b ))
FROM t1
WHERE t1b NOT IN (SELECT Min(t2b)
FROM t2
WHERE t1a = t2a
GROUP BY t2c
ORDER BY t2c DESC nulls last)
GROUP BY t1a;

-- TC 01.15
SELECT Count(DISTINCT( t1a )),
t1b
FROM t1
WHERE t1h NOT IN (SELECT t2h
FROM t2
where t1a = t2a
order by t2d DESC nulls first
)
GROUP BY t1a,
t1b
ORDER BY t1b DESC nulls last;
Loading