Skip to content
Closed
Changes from 1 commit
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
Prev Previous commit
Next Next commit
first draft testcases
  • Loading branch information
kevinyu98 committed Dec 9, 2016
commit cdfb1ad30dc8fd1975ffecf5d6f1ea8b0177384f
116 changes: 116 additions & 0 deletions sql/core/src/test/resources/sql-tests/inputs/in-subquery.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
-- A test suite for IN predicate subquery
-- It includes correlated and non-correlated cases.

-- create table with different data type

CREATE DATABASE indb;
CREATE TABLE t1(t1a String, t1b Int. t1c smallint, t1d double, t1e DECIMAL, t1f date, t1g float, t1h Short,
t1i Short, t1j TIMESTAMP, t1k TIMEZONE_ ) ;
CREATE TABLE t2(t2a String, t2b Int. t2c smallint, t2d double, t2e DECIMAL, t2f date, t2g float, t2h Short,
t2i Short, t2j TIMESTAMP, t2k TIMEZONE_ ) ;

CREATE TABLE t3(t3a String, t3b Int) PARTITIONED BY (t3c String, t3d String);
CREATE TEMPORARY VIEW t4(t4a int, t4b String, t4c double, t4d DECIMAL, t4e date, t4f float, t4h short) USING parquet;
CREATE TEMPORARY VIEW t5(t4a int, t4b String, t4c double, t4d DECIMAL, t4e date, t4f float, t4h short) USING orc;

CREATE GLOBAL TEMP VIEW t6 AS SELECT 1 as col1;

-- create CTE with in predicate subquery investigate
create temporary view t as select * from values 0, 1, 2 as t(id);
create temporary view t2 as select * from values 0, 1 as t(id);

-- WITH clause should not fall into infinite loop by referencing self
WITH cte_t1 AS (SELECT 1 FROM s) SELECT * FROM s;

-- WITH clause should reference the base table
WITH cte_t2 AS (SELECT 1 FROM t) SELECT * FROM t;

-- WITH clause should not allow cross reference
WITH cte_t3 AS (SELECT 1 FROM s2), s2 AS (SELECT 1 FROM s1) SELECT * FROM s1, s2;

-- WITH clause should reference the previous CTE
WITH cte_t4 AS (SELECT * FROM t2), t2 AS (SELECT 2 FROM t1) SELECT * FROM t1 in (t1 t2);

-- correlated in subquery
-- simple select
select * from t1 where t1a in (select t2a from in_t2)
select * from t1 where t1b in (select t2b from in_t2 where in_t1.t1a = in_t2.t2a)
select t1.t1a, t1.t1b from t1 where t1c in (select t2b from t2 where t1.t1a = t2.t2a)
-- add group by
select * from t1 where t1a in (select t2a from in_t2) group by t1a
select * from t1 where t1b in (select t2b from in_t2 where in_t1.t1a = in_t2.t2a) group by t1b
select t1.t1a, t1.t1b from t1 where t1c in (select t2b from t2 where t1.t1a = t2.t2a) group by t1a

-- add order by

select * from t1 where t1a in (select t2a from in_t2) order by t1a
select * from t1 where t1b in (select t2b from in_t2 where in_t1.t1a = in_t2.t2a) order by t1b
select t1.t1a, t1.t1b from t1 where t1c in (select t2b from t2 where t1.t1a = t2.t2a) order by t1a

-- add limit into the subquery (inner query block)

select * from t1 where t1a in (select t2a from in_t2 limit 2)
select * from t1 where t1b in (select t2b from in_t2 where in_t1.t1a = in_t2.t2a limit 2)
select t1.t1a, t1.t1b from t1 where t1c in (select t2b from t2 where t1.t1a = t2.t2a limit 2)

-- add having clause in the subquery (inner query block)
select * from t1 where t1a in (select t2a from in_t2 having t2a > 2)
select * from t1 where t1b in (select t2b from in_t2 where in_t1.t1a = in_t2.t2a having t2a > 2)
select t1.t1a, t1.t1b from t1 where t1c in (select t2b from t2 where t1.t1a = t2.t2a having t2a > 2)


-- add radom in the out query predicate
select random(t1.t1a) from t1 where t1c in (select t2b from t2 where t1.t1a = t2.t2a)

select random(t1.t1a), t1.t1b from t1 where t1c in (select t2b from t2 where t1.t1a = t2.t2a having t2a > 2)


-- with three table and different join at inner query
select * from t1 where t1a in (select t2a from in_t2) natural join t3 where t1a = 2;
select * from t1 where t1a in (select t2a from in_t2) left join t3 order by t1a;
select * from t1 where t1a in (select t2a from in_t2) right join t3 order by t1a, t1b;
select count(*) from t1 where t1a in (select t2a from t2) natural full outer join t3 ;
select * from t1 where t1b in (select t2b from t2 natural join t3 where t3a = t1b)
select * from t1 where t1b in (select t2b from t2 left join t3 order by t2b)
select * from t1 where t1b in (select t2b from t2 right join t3)

select t1.t1a, t1.t1b from t1 where t1c in (select t2b from t2 left join t3 order by t2b)

-- with union in the subquery
SELECT *
FROM t1 where t1.t1a in (select t3a from
(SELECT * FROM t2
UNION ALL
SELECT * FROM t2) as t3);

SELECT *
FROM t1 where t1.t1a in (select t3a from
(SELECT * FROM t2
UNION ALL
SELECT * FROM t2) as t3 where t1.t1a = t3.t3a);

-- test on different table type to do ?

-- test on partition table to do ?

-- test on parquet table to do?

-- test on orc table to do ?

-- should we test table from jdbc data source?

-- table with cte
select * from t1 where t1a in (select ctet1.id from ctet1 where ctet1.id = t1.t1a)
select t1.t1b, t1.t1c from t1 where t1a in (select ctet1.id from ctet1 where ctet1.id = t1.t1a)

-- table with null to do?

-- duplicate row and null value

-- with inline table to do ?