From 3b44c5978bd44db986621d3e8511e9165b66926b Mon Sep 17 00:00:00 2001 From: Kevin Yu Date: Wed, 20 Apr 2016 11:06:30 -0700 Subject: [PATCH 01/11] adding testcase --- .../org/apache/spark/sql/DataFrameSuite.scala | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/sql/core/src/test/scala/org/apache/spark/sql/DataFrameSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/DataFrameSuite.scala index e953a6e8ef0c..009c101e746d 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/DataFrameSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/DataFrameSuite.scala @@ -1429,4 +1429,23 @@ class DataFrameSuite extends QueryTest with SharedSQLContext { getMessage() assert(e1.startsWith("Path does not exist")) } + + test("SPARK-12987: drop column ") { + val df = Seq((1, 2)).toDF("a_b", "a.c") + val df1 = df.drop("a_b") + checkAnswer(df1, Row(2)) + assert(df1.schema.map(_.name) === Seq("a.c")) + } + + test("SPARK-14759: drop column ") { + val df1 = sqlContext.createDataFrame(Seq((1, 2), (3, 4))).toDF("any", "hour") + val df2 = sqlContext.createDataFrame(Seq((1, 3))).toDF("any").withColumn("hour", lit(10)) + val j = df1.join(df2, $"df1.hour" === $"df2.hour", "left") + assert(j.schema.map(_.name) === Seq("any","hour","any","hour")) + print("Columns after join:{0}".format(j.columns)) + val jj = j.drop($"df2.hour") + assert(jj.schema.map(_.name) === Seq("any")) + print("Columns after drop 'hour':{0}".format(jj.columns)) + } + } From cdfb1ad30dc8fd1975ffecf5d6f1ea8b0177384f Mon Sep 17 00:00:00 2001 From: Kevin Yu Date: Fri, 9 Dec 2016 14:44:22 -0800 Subject: [PATCH 02/11] first draft testcases --- .../sql-tests/inputs/in-subquery.sql | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 sql/core/src/test/resources/sql-tests/inputs/in-subquery.sql diff --git a/sql/core/src/test/resources/sql-tests/inputs/in-subquery.sql b/sql/core/src/test/resources/sql-tests/inputs/in-subquery.sql new file mode 100644 index 000000000000..e16f15f12273 --- /dev/null +++ b/sql/core/src/test/resources/sql-tests/inputs/in-subquery.sql @@ -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 ? + + + + + + From 753d7fe3f4e5453c6fdfec589611689da97cd4c4 Mon Sep 17 00:00:00 2001 From: Kevin Yu Date: Sun, 18 Dec 2016 00:57:37 -0800 Subject: [PATCH 03/11] in subquery testcase --- .../sql-tests/inputs/in-subquery.sql | 556 ++++-- .../sql-tests/results/in-subquery.sql.out | 1682 +++++++++++++++++ 2 files changed, 2128 insertions(+), 110 deletions(-) create mode 100644 sql/core/src/test/resources/sql-tests/results/in-subquery.sql.out diff --git a/sql/core/src/test/resources/sql-tests/inputs/in-subquery.sql b/sql/core/src/test/resources/sql-tests/inputs/in-subquery.sql index e16f15f12273..ab9ba281f799 100644 --- a/sql/core/src/test/resources/sql-tests/inputs/in-subquery.sql +++ b/sql/core/src/test/resources/sql-tests/inputs/in-subquery.sql @@ -1,116 +1,452 @@ -- A test suite for IN predicate subquery -- It includes correlated and non-correlated cases. --- create table with different data type +-- tables and data types 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 +CREATE TABLE t1(t1a String, t1b Short, t1c Int, t1d Long, t1e float, t1f double, t1g DECIMAL, t1h TIMESTAMP, t1i Date) +using parquet; +CREATE TABLE t2(t2a String, t2b Short, t2c Int, t2d Long, t2e float, t2f double, t2g DECIMAL, t2h TIMESTAMP, t2i Date) +using parquet; +CREATE TABLE t3(t3a String, t3b Short, t3c Int, t3d Long, t3e float, t3f double, t3g DECIMAL, t3h TIMESTAMP, t3i Date) +using parquet; + +-- insert to tables +INSERT INTO t1 VALUES + ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1a', 16, 12, 21, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1a', 16, 12, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1c', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1d', null, 16, 22, 17, 25, 26.00, timestamp(date("2014-05-04")), null), + ('t1d', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null), + ('t1e', 10, null, 25, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1d', 10, null, 12, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-04-05")), + ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")); + +INSERT INTO t2 VALUES + ('t2a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', 8, 16, 119, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2014-04-05")), + ('t1c', 12, 16, 219, 17, 25, 26.00, timestamp(date("2016-05-04")), date("2014-04-05")), + ('t1b', null, 16, 319, 17, 25, 26.00, timestamp(date("2017-05-04")), null), + ('t2e', 8, null, 419, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-04-05")), + ('t1f', 19, null, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1c', 12, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1e', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1f', 19, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null); + +INSERT INTO t3 VALUES + ('t3a', 6, 12, 110, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t3a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1b', 10, 12, 219, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', 8, 16, 319, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t3c', 17, 16, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t3c', 17, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', null, 16, 419, 17, 25, 26.00, timestamp(date("2014-05-04")), null), + ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null), + ('t3b', 8, null, 719, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t3b', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")); + +-- 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 ? - - - - - - +-- 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 t2a in + (select t3a 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 * from t1 where t1a not in (select t2a from t2); +-- TC 01.08 +select * from t1 where t1d not in (select t2d from t2 where t2h > t1h or t2i > t1i); +-- TC 01.09 +select * from t1 where t1b not in (select t2b from t2 where t1a < t2a and t2b > 6); + +-- GROUP BY in parent side +-- TC 02.01 +select t1a, avg(t1b) from t1 where t1a in (select t2a from t2) group by t1a; +-- TC 02.02 +select t1a, max(t1b) from t1 where t1b in (select t2b from t2 where t1a = t2a) group by t1a, t1d; +-- TC 02.03 +select t1a, sum(t1b) from t1 where t1c in (select t2c from t2 where t1a = t2a) group by t1a, t1c; +-- TC 02.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 02.05 +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 02.06 +select * from t1 where t1b in (select max(t2b) from t2 group by t2a); +-- TC 02.07 +select * from (select * from t2 where t2a in (select t1a from t1 where t1b = t2b)) t2; +-- TC 02.08 +select count(distinct(*)) from t1 where t1b in (select min(t2b) from t2 where t1a = t2a and t1c = t2c group by t2a); +-- TC 02.09 +select t1a, t1b from t1 where t1c in (select max(t2c) from t2 where t1a = t2a group by t2a, t2c having t2c > 8); +-- TC 02.10 +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)); +-- TC 02.11 +select * from t1 where t1a in +(select min(t2a) from t2 where t2a = t2a and t2c >= 1 group by t2c having t2c in +(select t3c from t3 having t2b > 6 and t3b > t2b)); +-- TC 02.12 +select * from (select * from t2 where t2a in (select t1a from t1 where t1b = t2b)) t2 where t2a in +(select t2a from t2 where t2a = t2a and t2c > 1 group by t2a having t2c > 8); + +-- GROUP BY with NOT IN +-- TC 02.13 +select t1a, avg(t1b) from t1 where t1a not in (select t2a from t2) group by t1a; +-- TC 02.14 +select t1a, sum(distinct(t1b)) from t1 where t1d not in (select t2d from t2 where t1h < t2h) group by t1a; +-- TC 02.15 +select * from t1 where t1b not in (select max(t2b) from t2 where t2i not in + (select t1i from t1 where t1d > t2d) group by t2a); +-- TC 02.16 +select count(*) from (select * from t2 where t2a not in (select t3a from t3 where t3h != t2h)) t2 +where t2b not in (select min(t2b) from t2 where t2b = t2b group by t2c); +-- TC 02.17 +select t1a, t1b from t1 where t1c not in (select max(t2b) from t2 where t1a = t2a group by t2a); +-- TC 02.18 +select t1a, t1b from t1 where t1c in (select t2b from t2 where t2a not in +( select min(t3a) from t3 where t3a = t2a group by t3b)); + +-- ORDER BY in the parent side +-- TC 03.01 +select * from t1 where t1a in (select t2a from t2) order by t1a; +-- TC 03.02 +select t1a from t1 where t1b in (select t2b from t2 where t1a = t2a) order by t1b desc; +-- TC 03.03 +select t1a, t1b from t1 where t1c in (select t2c from t2 where t1a = t2a) order by 1; +-- TC 03.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 03.05 +select * from t1 where t1a in (select t2a from t2 order by t2a); +-- TC 03.06 +select * from t1 where t1b in (select min(t2b) from t2 where t1a = t2a order by min(t2b)); +-- TC 03.07 +select t1a, t1b, t1h from t1 where t1c in (select t2c from t2 where t1a = t2a order by t2b desc) or + t1h in (select t2h from t2 where t1h > t2h) order by t1h asc; + +-- ORDER BY with NOT IN +-- TC 03.08 +select * from t1 where t1a not in (select t2a from t2) order by t1a; +-- TC 03.09 +select t1a, t1b from t1 where t1a not in (select t2a from t2 where t1a = t2a) order by t1a; +-- TC 03.10 +select * from t1 where t1a not in (select t2a from t2 order by t2a desc) and + t1c in (select t2c from t2 order by t2b asc) order by t1c desc; + +-- GROUP BY and ORDER BY in subquery +-- TC 04.01 +select * from t1 where t1b in (select min(t2b) from t2 group by t2a order by t2a desc); +-- TC 04.02 +select count(distinct(*)) from t1 where t1a in (select min(t2a) from t2 group by t2c order by t2c desc); +-- TC 04.03 +select t1a, count(distinct(t1b)) from t1 where t1b in (select min(t2b) +from t2 where t1a = t2a group by t2a order by t2a desc) group by t1a, t1h; +-- TC 04.04 +select t1a, t1b from t1 where t1b in (select min(t2b) from t2 +where t1a = t2a group by t2d order by t2d desc); + +-- GROUP BY and ORDER BY with NOT IN +-- TC 04.05 +select * from t1 where t1b not in (select min(t2b) from t2 group by t2a order by t2a); +-- TC 04.06 +select count(*) from t1 where t1b not in (select min(t2b) from t2 group by t2c order by t2c desc) group by t1a; +-- TC 04.07 +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) group by t1a; +-- TC 04.08 +select count(distinct(t1a)), t1b from t1 where t1b not in (select min(t2b) from t2 +where t1a = t2a group by t2d order by t2d desc) group by t1a, t1b order by t1b desc; + +-- LIMIT in subquery +-- TC 05.01 +select * from t1 where t1a in (select t2a from t2 limit 2); +-- TC 05.02 +select * from t1 where t1c in (select t2c from t2 where t2b >=8 limit 2) limit 4; +-- TC 05.03 +select count(distinct(t1a)), t1b from t1 where t1d in (select t2d from t2 order by t2c) +group by t1b order by t1b limit 1; + +-- LIMIT with NOT IN +-- TC 05.04 +select * from t1 where t1a not in (select t2a from t2 limit 2); +-- TC 05.05 +select * from t1 where t1b not in (select t2b from t2 where t2b > 6 limit 2); +-- TC 05.06 +select count(distinct(t1a)), t1b from t1 where t1d not in +(select t2d from t2 order by t2b) group by t1b limit 1; + +-- HAVING clause in subquery +-- TC 06.01 +select * from t1 where t1a in (select t2a from t2 having t2c > 10); +-- TC 06.02 +select * from t1 where t1b in (select min(t2b) from t2 where t1a = t2a group by t2b having t2b > 1); +-- TC 06.03 +select count(distinct(t1a)), t1b from t1 where t1c in (select t2c from t2 where t1a = t2a having t2c > 10) +group by t1b having t1b >= 8; +-- TC 06.04 +select t1a, max(t1b) from t1 where t1b > 0 group by t1a having t1a in +(select t2a from t2 where t2b in (select t3b from t3 where t2c = t3c)); + +-- HAVING clause with NOT IN +-- TC 06.05 +select * from t1 where t1a not in (select t2a from t2 having t2c > 10); +-- TC 06.06 +select t1a, t1b from t1 where t1d not in (select t2d from t2 where t1a = t2a having t2c > 8); +-- TC 06.07 +select t1a, t1b from t1 where t1c not in (select t2c from t2 where t1a = t2a having t2c not in +(select t3c from t3)) group by t1a, t1b limit 2; +-- TC 06.10 +select t1a, max(t1b) from t1 where t1b > 0 group by t1a having t1a not in (select t2a from t2 where t2b > 3); + +-- different JOIN in parent side +-- TC 07.01 +select * from t1 natural join t3 where t1a in (select t2a from t2 ) and t1b = t3b order by t1a, t1b; +-- TC 07.02 +select count(distinct(t1a)), t1b, t3a, t3b, t3c from t1 natural left join t3 where t1a +in (select t2a from t2 ) and t1b > t3b group by t1a, t1b, t3a, t3b, t3c order by t1a desc limit 2; +-- TC 07.03 +select count(distinct(*)) from t1 natural right join t3 +where t1a in (select t2a from t2 where t1b = t2b) and t1b in (select t2b from t2 where t1c > t2c) and t1a = t3a +group by t1a order by t1a; +-- TC 07.04 +select t1a, t1b, t1c, t3a, t3b, t3c from t1 full outer join t3 +where t1a in (select t2a from t2 ) and t1b != t3b order by t1a; +-- TC 07.05 +select count(distinct(t1a)), t1b from t1 full outer join t3 where t1a in (select t2a from t2 where t2h > t3h) +and t3a in (select t2a from t2 where t2c > t3c) and t1h >= t3h group by t1a, t1b order by t1a; +-- TC 07.06 +select count(*) from t1 left semi join t3 where t1a in (select t2a from t2 ) group by t1a order by t1a; +-- TC 07.07 +select count(distinct(t1a)), t1b from t1 left anti join t2 on t1a > t2a where t1b in (select t2b from t2) +or t1a in (select t2a from t2) group by t1b having t1b > 1; + +-- different JOIN in the subquery +-- TC 07.08 +select * from t1 where t1a in (select t2a from t2 left join t3 where t2b = t3b); +-- TC 07.09 +select t1a, t1b from t1 where t1a in (select t2a from t2 full outer join t1 where t2b > t1b) limit 2; +-- TC 07.09 +select count(distinct(t1a)), t1b from t1 where t1a in (select t2a from t2 cross join t1 where t2b <> t1b) and +t1h in (select t2h from t2 right join t3 where t2b = t3b) group by t1b; +-- TC 07.10 +select count(distinct(t1a)), t1b from t1 where t1a in (select t2a from t2 right join t1 where t2b <> t1b) or + t1b in (select t2b from t2 left join t1 where t2c = t1c) group by t1b; + +-- JOIN in the parent and subquery +-- TC 07.11 +select * from t1 full outer join t2 where t1a in +(select t2a from t2 left join t3 where t2b = t3b) and t1c = t2c limit 10; +-- TC 07.12 +select count(distinct(t1a)), t1b from t1 inner join t2 +where t1a in (select t2a from t2 join t3 where t2b > t3b) and +t1c in (select min(t3c) from t3 left outer join t2 group by t3a having t3a = t2a) and t1a = t2a +group by t1b order by t1b desc; +-- TC 07.13 +select t1a, t1b, t1c, t2a, t2b, t2c from t1 right join t2 +where t1a in (select t2a from t2 full outer join t3 where t2b > t3b) and +t1b in ( select t3b from t3 left semi join t1 where t3c = t1c) and t1h > t2h; +-- TC 07.15 +select t1a, t1b, t1c, t2a, t2b, t2c from t1 full join t2 +where t1a in (select t2a from t2 left anti join t3 on t2b < t3b where t2c in (select t1c from t1 where t1a = t2a)) +and t1a = t2a; +-- TC 07.16 +select * from (select * from t3 left outer join t2 where t3a = t2a and t2a in +(select t1a from t1 where t2b = t1b)) t1 natural full outer join t2 +where t1.t2a in (select t2a from t2 left anti join t3 on t2b < t3b) and t1.t2c = t2c order by t2a, t3a desc limit 5; + +-- JOIN with NOT IN +-- TC 07.17 +select t1a, t1b, t1c, t3a, t3b, t3c from t1 natural join t3 where t1a not in (select t2a from t2 ) and t1b = t3b; +-- TC 07.18 +select t1a, t1b, t1c, t3a, t3b, t3c from t1 full outer join t3 +where t1a not in (select t2a from t2 where t2c not in (select t1c from t1 where t1a = t2a)) and t1b != t3b order by t1a; +-- TC 07.19 +select count(*) from t1 left semi join t3 where t1a not in (select t2a from t2 left outer join t3 where t2a = t3a) +group by t1a order by t1a; +-- TC 07.20 +select * from t1 where t1a not in (select t2a from t2 left join t3 where t2b = t3b) and t1d not in (select t2d from t2); +-- TC 07.21 +select count(distinct(t1a)), t1b, t1c, t1d from t1 where t1a not in (select t2a from t2 cross join t1 where t2b <> t1b) +group by t1b, t1c, t1d having t1d not in (select t2d from t2 where t1d = t2d); +-- TC 07.22 +select sum(distinct(t1a)), t1b, t1c, t1d from t1 where t1a not in (select t2a from t2 left semi join t1) +group by t1b, t1c, t1d having t1b < sum(t1c); +-- TC 07.23 +select * from t1 full outer join t2 where t1a not in (select t2a from t2 left join t3 where t2b = t3b) and t1c = t2c; +-- TC 07.24 +select * from t1 full outer join t2 where t1a not in (select t2a from t2 inner join t3 where t2b = t3b) and t1c = t2c; + +-- UNION, UNION ALL, UNION DISTINCT, INTERSECT and EXCEPT in the parent +-- TC 08.01 +select t2a from (select t2a from t2 where t2a in (select t1a from t1) + union all select t2a from t2 where t2a in (select t1a from t1)) as t3; +-- TC 08.02 +select t2a from (select t2a from t2 where t2a in (select t1a from t1) + union select t2a from t2 where t2a in (select t3a from t3)) as t3; +-- TC 08.03 +select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) + union all select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3; +-- TC 08.04 +select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) + union select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3; +-- TC 08.05 +select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) + union distinct select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3; +-- TC 08.06 +select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) + intersect select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3; +-- TC 08.07 +select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b != t2b) + except select t2a from t2 where t2a in (select t3a from t3 where t2c = t3c)) as t3; + +-- UNION, UNION ALL, UNION DISTINCT, INTERSECT and EXCEPT in the subquery +-- TC 08.08 +select * from t1 where t1a in (select t3a from (select t2a t3a from t2 union all select t2a t3a from t2) as t3); +-- TC 08.09 +select * from t1 where t1b in ( +select t2b from (select t2b from t2 where t2b > 6 union select t2b from t2 where t2b > 6) as t3); +-- TC 08.10 +select t1a, t1b, t1c from t1 where t1b in ( +select t2b from (select t2b from t2 where t2b > 6 union distinct select t1b from t1 where t1b > 6) as t3); +-- TC 08.11 +select t1a, t1b, t1c from t1 where t1b in ( +select t2b from (select t2b from t2 where t2b > 6 intersect select t1b from t1 where t1b > 6) as t3 where t2b = t1b); +-- TC 08.12 +select t1a, t1b, t1c from t1 where t1h in ( +select t2h from (select t2h from t2 except select t3h from t3 ) as t3); + +-- UNION, UNION ALL, UNION DISTINCT, INTERSECT and EXCEPT in the parent and subquery +-- TC 08.13 +select t1a, t1b, t1c from t1 where t1a in (select t3a from (select t2a t3a from t2 union all select t2a t3a from t2) + as t3) +union all +select t1a, t1b, t1c from t1 where t1a in (select t3a from (select t2a t3a from t2 union select t2a t3a from t2) + as t3); +-- TC 08.14 +select t1a, t1b, t1c from t1 where t1b in ( +select t2b from (select t2b from t2 where t2b > 6 intersect select t1b from t1 where t1b > 6) as t3) +union distinct +select t1a, t1b, t1c from t1 where t1b in ( +select t2b from (select t2b from t2 where t2b > 6 except select t1b from t1 where t1b > 6) as t3 where t2b = t1b); +-- TC 08.15 +select count(distinct t2b) from +(select t2a, t2b from (select t2a, t2b from t2 where t2h in (select t1h from t1 where t1a = t2a) + union distinct select t1a, t1b from t1 where t1h in (select t3h from t3 union select t1h from t1)) t4 + where t4.t2b in (select min(t3b) from t3 where t4.t2a = t3a)); + +-- UNION, UNION ALL, UNION DISTINCT, INTERSECT and EXCEPT for NOT IN +-- TC 08.16 +select t2a from (select t2a from t2 where t2a not in (select t1a from t1 union select t3a from t3) + union all select t2a from t2 where t2a not in (select t1a from t1 intersect select t2a from t2)) as t3 + where t3.t2a not in (select t1a from t1 intersect select t2a from t2); +-- TC 08.17 +select t1a, t1b, t1c from t1 where t1b not in ( +select t2b from (select t2b from t2 where t2b not in (select t1b from t1) union + select t1b from t1 where t1b not in (select t3b from t3) union distinct + select t3b from t3 where t3b not in (select t2b from t2)) as t3 where t2b = t1b); +-- TC 08.18 +select distinct(t1a), t1b, t1c from t1 where t1b not in ( +select t2b from (select t2b from t2 where t2b > 6 union distinct select t1b from t1 where t1b > 6) as t3) +union +select distinct(t1a), t1b, t1c from t1 where t1b not in ( +select t2b from (select t2b from t2 where t2b > 6 intersect select t1b from t1 where t1b > 6) as t3 where t2b = t1b) +group by t1a, t1b, t1c; + +-- outside CTE +-- TC 09.01 +with cte1 as (select t1a, t1b from t1) select * from t1 where t1b in +(select cte1.t1b from cte1 where cte1.t1b > 0); +-- TC 09.02 +with cte1 as (select t1a, t1b from t1) select t1a, t1b from t1 where t1b in +(select cte1.t1b from cte1 where cte1.t1b > 0 union select cte1.t1b from cte1 where cte1.t1b > 5); +-- TC 09.03 +with cte1 as (select t1a, t1b from t1) select * from +(select cte1.t1b from cte1 where cte1.t1b > 0 union select cte1.t1b from cte1 where cte1.t1b > 5) s where t1b > 6; +-- TC 09.04 +with cte1 as (select t1a, t1b from t1) select distinct(*) from +(select cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1b > 5) s where t1b > 6; + +-- CTE inside and outside +-- TC 09.05 +with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) select distinct(*) from +(select cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1b > 5 and cte1.t1a = cte2.t1a) s where t1b in (8); +-- TC 09.06 +with cte1 as (select t1a, t1b, t1h from t1 where t1a in (select t2a from t2 where t1b < t2b)) +select count(distinct t1a), t1b from +(select cte1.t1a, cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1h >= cte2.t1h) s where t1b in (select t1b from t1) +group by t1b; +-- TC 09.07 +with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) select distinct(*) from +(select cte1.t1b from cte1 left semi join cte1 cte2 on cte1.t1b > 5 and cte1.t1a != cte2.t1a) s; +-- TC 09.08 +with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) +select count(distinct(s.t1a)), s.t1b from +(select cte1.t1a, cte1.t1b from cte1 right outer join cte1 cte2 on cte1.t1a = cte2.t1a ) s +where t1b in (8) group by s.t1b; +-- TC 09.09 +with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) select distinct(*) from +(select cte1.t1b from cte1 left outer join cte1 cte2 on cte1.t1b = cte2.t1b) s +where s.t1b in (select t1b from t1 left semi join cte1 on t1.t1a = cte1.t1a); + +-- CTE with NOT IN +-- TC 09.10 +with cte1 as (select t1a, t1b from t1) select * from t1 where t1b not in (select cte1.t1b from cte1 where cte1.t1b < 0); +-- TC 09.11 +with cte1 as (select t1a, t1b from t1 where t1a not in (select t2a from t2)) select distinct(*) from +(select cte1.t1b from cte1 cross join cte1 cte2) s; +-- TC 09.12 +with cte1 as (select t1a, t1b, t1c, t1h from t1 where t1d not in (select t2d from t2)) select * from +(select cte1.t1b, cte1.t1c, cte1.t1h from cte1 full outer join cte1 cte2 where cte1.t1h = cte2.t1h) s where s.t1h +not in (select t3h from t3); + +-- multiple columns in the IN subquery +-- TC 10.01 +select * from t1 where (t1a, t1h) not in +(select t2a, t2h from t2 where t2a = t1a order by t2a); +-- TC 10.02 +select * from t1 where (t1b, t1d) in (select t2b, t2d from t2 where t2h in (select t3h from t3 where t2b > t3b)); +-- TC 10.03 +select * from t1 where (t1b, t1d) not in (select t2b, t2d from t2 where t2h in (select t3h from t3 where t2b > t3b)); +-- TC 10.05 +select t2a from (select t2a from t2 where (t2a, t2b) in (select t1a, t1b from t1) union all + select t2a from t2 where (t2a, t2b) in (select t1a, t1b from t1) union distinct + select t2a from t2 where (t2a, t2b) in (select t3a, t3b from t3)) as t4; +-- TC 10.06 +select * from (select * from t3 left outer join t2 where t3a = t2a and (t2a, t2b) in +(select t1a, t1b from t1 where t2b = t1b)) t1 natural full outer join t2 +where (t1.t2a, t1.t2b) not in (select t2a, t2b from t2 left anti join t3 on t2a = t3a) order by t2a, t3a desc limit 5; +-- TC 10.07 +with cte1 as (select t1a, t1b from t1 where (t1b, t1d) in (select t2b, t2d from t2 where t1c = t2c)) +select distinct(*) from (select cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1b > 5) s where t1b in (8); + +-- Clean Up +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +USE default; +DROP DATABASE indb; \ No newline at end of file diff --git a/sql/core/src/test/resources/sql-tests/results/in-subquery.sql.out b/sql/core/src/test/resources/sql-tests/results/in-subquery.sql.out new file mode 100644 index 000000000000..233a456ad8df --- /dev/null +++ b/sql/core/src/test/resources/sql-tests/results/in-subquery.sql.out @@ -0,0 +1,1682 @@ +-- Automatically generated by SQLQueryTestSuite +-- Number of queries: 131 + + +-- !query 0 +CREATE DATABASE indb +-- !query 0 schema +struct<> +-- !query 0 output + + + +-- !query 1 +CREATE TABLE t1(t1a String, t1b Short, t1c Int, t1d Long, t1e float, t1f double, t1g DECIMAL, t1h TIMESTAMP, t1i Date) +using parquet +-- !query 1 schema +struct<> +-- !query 1 output + + + +-- !query 2 +CREATE TABLE t2(t2a String, t2b Short, t2c Int, t2d Long, t2e float, t2f double, t2g DECIMAL, t2h TIMESTAMP, t2i Date) +using parquet +-- !query 2 schema +struct<> +-- !query 2 output + + + +-- !query 3 +CREATE TABLE t3(t3a String, t3b Short, t3c Int, t3d Long, t3e float, t3f double, t3g DECIMAL, t3h TIMESTAMP, t3i Date) +using parquet +-- !query 3 schema +struct<> +-- !query 3 output + + + +-- !query 4 +INSERT INTO t1 VALUES + ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1a', 16, 12, 21, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1a', 16, 12, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1c', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1d', null, 16, 22, 17, 25, 26.00, timestamp(date("2014-05-04")), null), + ('t1d', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null), + ('t1e', 10, null, 25, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1d', 10, null, 12, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-04-05")), + ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")) +-- !query 4 schema +struct<> +-- !query 4 output + + + +-- !query 5 +INSERT INTO t2 VALUES + ('t2a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', 8, 16, 119, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2014-04-05")), + ('t1c', 12, 16, 219, 17, 25, 26.00, timestamp(date("2016-05-04")), date("2014-04-05")), + ('t1b', null, 16, 319, 17, 25, 26.00, timestamp(date("2017-05-04")), null), + ('t2e', 8, null, 419, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-04-05")), + ('t1f', 19, null, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1c', 12, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1e', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1f', 19, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null) +-- !query 5 schema +struct<> +-- !query 5 output + + + +-- !query 6 +INSERT INTO t3 VALUES + ('t3a', 6, 12, 110, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t3a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1b', 10, 12, 219, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', 8, 16, 319, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t3c', 17, 16, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t3c', 17, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t1b', null, 16, 419, 17, 25, 26.00, timestamp(date("2014-05-04")), null), + ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null), + ('t3b', 8, null, 719, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), + ('t3b', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")) +-- !query 6 schema +struct<> +-- !query 6 output + + + +-- !query 7 +select * from t1 where t1a in (select t2a from t2) +-- !query 7 schema +struct +-- !query 7 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 8 +select * from t1 where t1b in (select t2b from t2 where t1a = t2a) +-- !query 8 schema +struct +-- !query 8 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 9 +select t1a, t1b from t1 where t1c in (select t2b from t2 where t1a != t2a) +-- !query 9 schema +struct +-- !query 9 output +t1a 16 +t1a 16 +t1a 6 +t1a 6 + + +-- !query 10 +select t1a, t1b from t1 where t1c in (select t2b from t2 where t1a = t2a or t1b > t2b) +-- !query 10 schema +struct +-- !query 10 output +t1a 16 +t1a 16 + + +-- !query 11 +select t1a, t1b from t1 where t1c in (select t2b from t2 where t2a in + (select t3a from t3 where t2c = t3c)) +-- !query 11 schema +struct +-- !query 11 output +t1a 6 +t1a 6 + + +-- !query 12 +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)) +-- !query 12 schema +struct +-- !query 12 output +t1a 6 +t1a 6 + + +-- !query 13 +select * from t1 where t1a not in (select t2a from t2) +-- !query 13 schema +struct +-- !query 13 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL + + +-- !query 14 +select * from t1 where t1d not in (select t2d from t2 where t2h > t1h or t2i > t1i) +-- !query 14 schema +struct +-- !query 14 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 + + +-- !query 15 +select * from t1 where t1b not in (select t2b from t2 where t1a < t2a and t2b > 6) +-- !query 15 schema +struct +-- !query 15 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 16 +select t1a, avg(t1b) from t1 where t1a in (select t2a from t2) group by t1a +-- !query 16 schema +struct +-- !query 16 output +t1b 8.0 +t1c 8.0 +t1e 10.0 + + +-- !query 17 +select t1a, max(t1b) from t1 where t1b in (select t2b from t2 where t1a = t2a) group by t1a, t1d +-- !query 17 schema +struct +-- !query 17 output +t1b 8 + + +-- !query 18 +select t1a, sum(t1b) from t1 where t1c in (select t2c from t2 where t1a = t2a) group by t1a, t1c +-- !query 18 schema +struct +-- !query 18 output +t1b 8 +t1c 8 + + +-- !query 19 +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 +-- !query 19 schema +struct +-- !query 19 output +t1b 8 +t1c 8 + + +-- !query 20 +select t1a, count(distinct(t1b)) from t1 where t1c in (select t2c from t2 where t1a = t2a) +group by t1a, t1c having t1a = "t1b" +-- !query 20 schema +struct +-- !query 20 output +t1b 1 + + +-- !query 21 +select * from t1 where t1b in (select max(t2b) from t2 group by t2a) +-- !query 21 schema +struct +-- !query 21 output +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 22 +select * from (select * from t2 where t2a in (select t1a from t1 where t1b = t2b)) t2 +-- !query 22 schema +struct +-- !query 22 output +t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 23 +select count(distinct(*)) from t1 where t1b in (select min(t2b) from t2 where t1a = t2a and t1c = t2c group by t2a) +-- !query 23 schema +struct +-- !query 23 output +1 + + +-- !query 24 +select t1a, t1b from t1 where t1c in (select max(t2c) from t2 where t1a = t2a group by t2a, t2c having t2c > 8) +-- !query 24 schema +struct +-- !query 24 output +t1b 8 +t1c 8 + + +-- !query 25 +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)) +-- !query 25 schema +struct +-- !query 25 output +t1a 16 +t1a 16 +t1b 8 +t1c 8 +t1d NULL +t1d NULL + + +-- !query 26 +select * from t1 where t1a in +(select min(t2a) from t2 where t2a = t2a and t2c >= 1 group by t2c having t2c in +(select t3c from t3 having t2b > 6 and t3b > t2b)) +-- !query 26 schema +struct +-- !query 26 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 27 +select * from (select * from t2 where t2a in (select t1a from t1 where t1b = t2b)) t2 where t2a in +(select t2a from t2 where t2a = t2a and t2c > 1 group by t2a having t2c > 8) +-- !query 27 schema +struct +-- !query 27 output +t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 28 +select t1a, avg(t1b) from t1 where t1a not in (select t2a from t2) group by t1a +-- !query 28 schema +struct +-- !query 28 output +t1a 11.0 +t1d 10.0 + + +-- !query 29 +select t1a, sum(distinct(t1b)) from t1 where t1d not in (select t2d from t2 where t1h < t2h) group by t1a +-- !query 29 schema +struct +-- !query 29 output +t1a 22 +t1b 8 +t1c 8 +t1d 10 +t1e 10 + + +-- !query 30 +select * from t1 where t1b not in (select max(t2b) from t2 where t2i not in + (select t1i from t1 where t1d > t2d) group by t2a) +-- !query 30 schema +struct +-- !query 30 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 31 +select count(*) from (select * from t2 where t2a not in (select t3a from t3 where t3h != t2h)) t2 +where t2b not in (select min(t2b) from t2 where t2b = t2b group by t2c) +-- !query 31 schema +struct +-- !query 31 output +6 + + +-- !query 32 +select t1a, t1b from t1 where t1c not in (select max(t2b) from t2 where t1a = t2a group by t2a) +-- !query 32 schema +struct +-- !query 32 output +t1a 16 +t1a 16 +t1a 6 +t1a 6 +t1b 8 +t1c 8 +t1d NULL +t1d NULL + + +-- !query 33 +select t1a, t1b from t1 where t1c in (select t2b from t2 where t2a not in +( select min(t3a) from t3 where t3a = t2a group by t3b)) +-- !query 33 schema +struct +-- !query 33 output +t1a 16 +t1a 16 +t1a 6 +t1a 6 + + +-- !query 34 +select * from t1 where t1a in (select t2a from t2) order by t1a +-- !query 34 schema +struct +-- !query 34 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 35 +select t1a from t1 where t1b in (select t2b from t2 where t1a = t2a) order by t1b desc +-- !query 35 schema +struct +-- !query 35 output +t1b + + +-- !query 36 +select t1a, t1b from t1 where t1c in (select t2c from t2 where t1a = t2a) order by 1 +-- !query 36 schema +struct +-- !query 36 output +t1b 8 +t1c 8 + + +-- !query 37 +select count(distinct(t1a)) from t1 where t1b in (select t2b from t2 where t1a = t2a) order by count(distinct(t1a)) +-- !query 37 schema +struct +-- !query 37 output +1 + + +-- !query 38 +select * from t1 where t1a in (select t2a from t2 order by t2a) +-- !query 38 schema +struct +-- !query 38 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 39 +select * from t1 where t1b in (select min(t2b) from t2 where t1a = t2a order by min(t2b)) +-- !query 39 schema +struct +-- !query 39 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 40 +select t1a, t1b, t1h from t1 where t1c in (select t2c from t2 where t1a = t2a order by t2b desc) or + t1h in (select t2h from t2 where t1h > t2h) order by t1h asc +-- !query 40 schema +struct +-- !query 40 output +t1b 8 2014-05-04 00:00:00 +t1c 8 2014-05-04 00:00:00 + + +-- !query 41 +select * from t1 where t1a not in (select t2a from t2) order by t1a +-- !query 41 schema +struct +-- !query 41 output +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 + + +-- !query 42 +select t1a, t1b from t1 where t1a not in (select t2a from t2 where t1a = t2a) order by t1a +-- !query 42 schema +struct +-- !query 42 output +t1a 6 +t1a 16 +t1a 16 +t1a 6 +t1d NULL +t1d NULL +t1d 10 + + +-- !query 43 +select * from t1 where t1a not in (select t2a from t2 order by t2a desc) and + t1c in (select t2c from t2 order by t2b asc) order by t1c desc +-- !query 43 schema +struct +-- !query 43 output +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 + + +-- !query 44 +select * from t1 where t1b in (select min(t2b) from t2 group by t2a order by t2a desc) +-- !query 44 schema +struct +-- !query 44 output +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 45 +select count(distinct(*)) from t1 where t1a in (select min(t2a) from t2 group by t2c order by t2c desc) +-- !query 45 schema +struct +-- !query 45 output +1 + + +-- !query 46 +select t1a, count(distinct(t1b)) from t1 where t1b in (select min(t2b) +from t2 where t1a = t2a group by t2a order by t2a desc) group by t1a, t1h +-- !query 46 schema +struct +-- !query 46 output +t1b 1 + + +-- !query 47 +select t1a, t1b from t1 where t1b in (select min(t2b) from t2 +where t1a = t2a group by t2d order by t2d desc) +-- !query 47 schema +struct +-- !query 47 output +t1b 8 + + +-- !query 48 +select * from t1 where t1b not in (select min(t2b) from t2 group by t2a order by t2a) +-- !query 48 schema +struct +-- !query 48 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 49 +select count(*) from t1 where t1b not in (select min(t2b) from t2 group by t2c order by t2c desc) group by t1a +-- !query 49 schema +struct +-- !query 49 output +1 +2 +3 + + +-- !query 50 +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) group by t1a +-- !query 50 schema +struct +-- !query 50 output +t1a 22 +t1c 8 +t1d 10 +t1e 10 + + +-- !query 51 +select count(distinct(t1a)), t1b from t1 where t1b not in (select min(t2b) from t2 +where t1a = t2a group by t2d order by t2d desc) group by t1a, t1b order by t1b desc +-- !query 51 schema +struct +-- !query 51 output + + + +-- !query 52 +select * from t1 where t1a in (select t2a from t2 limit 2) +-- !query 52 schema +struct +-- !query 52 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 53 +select * from t1 where t1c in (select t2c from t2 where t2b >=8 limit 2) limit 4 +-- !query 53 schema +struct +-- !query 53 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 54 +select count(distinct(t1a)), t1b from t1 where t1d in (select t2d from t2 order by t2c) +group by t1b order by t1b limit 1 +-- !query 54 schema +struct +-- !query 54 output +1 NULL + + +-- !query 55 +select * from t1 where t1a not in (select t2a from t2 limit 2) +-- !query 55 schema +struct +-- !query 55 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 56 +select * from t1 where t1b not in (select t2b from t2 where t2b > 6 limit 2) +-- !query 56 schema +struct +-- !query 56 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 + + +-- !query 57 +select count(distinct(t1a)), t1b from t1 where t1d not in +(select t2d from t2 order by t2b) group by t1b limit 1 +-- !query 57 schema +struct +-- !query 57 output +1 NULL + + +-- !query 58 +select * from t1 where t1a in (select t2a from t2 having t2c > 10) +-- !query 58 schema +struct +-- !query 58 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 59 +select * from t1 where t1b in (select min(t2b) from t2 where t1a = t2a group by t2b having t2b > 1) +-- !query 59 schema +struct +-- !query 59 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 60 +select count(distinct(t1a)), t1b from t1 where t1c in (select t2c from t2 where t1a = t2a having t2c > 10) +group by t1b having t1b >= 8 +-- !query 60 schema +struct +-- !query 60 output +2 8 + + +-- !query 61 +select t1a, max(t1b) from t1 where t1b > 0 group by t1a having t1a in +(select t2a from t2 where t2b in (select t3b from t3 where t2c = t3c)) +-- !query 61 schema +struct +-- !query 61 output +t1b 8 + + +-- !query 62 +select * from t1 where t1a not in (select t2a from t2 having t2c > 10) +-- !query 62 schema +struct +-- !query 62 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 63 +select t1a, t1b from t1 where t1d not in (select t2d from t2 where t1a = t2a having t2c > 8) +-- !query 63 schema +struct +-- !query 63 output +t1a 16 +t1a 16 +t1a 6 +t1a 6 +t1d 10 +t1d NULL +t1d NULL +t1e 10 +t1e 10 +t1e 10 + + +-- !query 64 +select t1a, t1b from t1 where t1c not in (select t2c from t2 where t1a = t2a having t2c not in +(select t3c from t3)) group by t1a, t1b limit 2 +-- !query 64 schema +struct +-- !query 64 output +t1d 10 +t1e 10 + + +-- !query 65 +select t1a, max(t1b) from t1 where t1b > 0 group by t1a having t1a not in (select t2a from t2 where t2b > 3) +-- !query 65 schema +struct +-- !query 65 output +t1a 16 +t1d 10 + + +-- !query 66 +select * from t1 natural join t3 where t1a in (select t2a from t2 ) and t1b = t3b order by t1a, t1b +-- !query 66 schema +struct +-- !query 66 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t3b 8 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t3b 8 NULL 719 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 319 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t3b 8 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t3b 8 NULL 719 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 319 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 219 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 219 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 219 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 67 +select count(distinct(t1a)), t1b, t3a, t3b, t3c from t1 natural left join t3 where t1a +in (select t2a from t2 ) and t1b > t3b group by t1a, t1b, t3a, t3b, t3c order by t1a desc limit 2 +-- !query 67 schema +struct +-- !query 67 output +1 10 t3a 6 12 +1 10 t1b 8 16 + + +-- !query 68 +select count(distinct(*)) from t1 natural right join t3 +where t1a in (select t2a from t2 where t1b = t2b) and t1b in (select t2b from t2 where t1c > t2c) and t1a = t3a +group by t1a order by t1a +-- !query 68 schema +struct +-- !query 68 output + + + +-- !query 69 +select t1a, t1b, t1c, t3a, t3b, t3c from t1 full outer join t3 +where t1a in (select t2a from t2 ) and t1b != t3b order by t1a +-- !query 69 schema +struct +-- !query 69 output +t1b 8 16 t3a 6 12 +t1b 8 16 t3a 6 12 +t1b 8 16 t1b 10 12 +t1b 8 16 t1b 10 12 +t1b 8 16 t3c 17 16 +t1b 8 16 t3c 17 16 +t1c 8 16 t3a 6 12 +t1c 8 16 t3a 6 12 +t1c 8 16 t1b 10 12 +t1c 8 16 t1b 10 12 +t1c 8 16 t3c 17 16 +t1c 8 16 t3c 17 16 +t1e 10 NULL t3a 6 12 +t1e 10 NULL t3a 6 12 +t1e 10 NULL t1b 8 16 +t1e 10 NULL t1b 8 16 +t1e 10 NULL t3c 17 16 +t1e 10 NULL t3c 17 16 +t1e 10 NULL t3b 8 NULL +t1e 10 NULL t3b 8 NULL +t1e 10 NULL t3a 6 12 +t1e 10 NULL t3a 6 12 +t1e 10 NULL t1b 8 16 +t1e 10 NULL t1b 8 16 +t1e 10 NULL t3c 17 16 +t1e 10 NULL t3c 17 16 +t1e 10 NULL t3b 8 NULL +t1e 10 NULL t3b 8 NULL +t1e 10 NULL t3a 6 12 +t1e 10 NULL t3a 6 12 +t1e 10 NULL t1b 8 16 +t1e 10 NULL t1b 8 16 +t1e 10 NULL t3c 17 16 +t1e 10 NULL t3c 17 16 +t1e 10 NULL t3b 8 NULL +t1e 10 NULL t3b 8 NULL + + +-- !query 70 +select count(distinct(t1a)), t1b from t1 full outer join t3 where t1a in (select t2a from t2 where t2h > t3h) +and t3a in (select t2a from t2 where t2c > t3c) and t1h >= t3h group by t1a, t1b order by t1a +-- !query 70 schema +struct +-- !query 70 output +1 8 +1 8 + + +-- !query 71 +select count(*) from t1 left semi join t3 where t1a in (select t2a from t2 ) group by t1a order by t1a +-- !query 71 schema +struct +-- !query 71 output +1 +1 +3 + + +-- !query 72 +select count(distinct(t1a)), t1b from t1 left anti join t2 on t1a > t2a where t1b in (select t2b from t2) +or t1a in (select t2a from t2) group by t1b having t1b > 1 +-- !query 72 schema +struct +-- !query 72 output +1 6 +1 8 + + +-- !query 73 +select * from t1 where t1a in (select t2a from t2 left join t3 where t2b = t3b) +-- !query 73 schema +struct +-- !query 73 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 74 +select t1a, t1b from t1 where t1a in (select t2a from t2 full outer join t1 where t2b > t1b) limit 2 +-- !query 74 schema +struct +-- !query 74 output +t1b 8 +t1c 8 + + +-- !query 75 +select count(distinct(t1a)), t1b from t1 where t1a in (select t2a from t2 cross join t1 where t2b <> t1b) and +t1h in (select t2h from t2 right join t3 where t2b = t3b) group by t1b +-- !query 75 schema +struct +-- !query 75 output +1 10 +2 8 + + +-- !query 76 +select count(distinct(t1a)), t1b from t1 where t1a in (select t2a from t2 right join t1 where t2b <> t1b) or + t1b in (select t2b from t2 left join t1 where t2c = t1c) group by t1b +-- !query 76 schema +struct +-- !query 76 output +1 6 +2 10 +2 8 + + +-- !query 77 +select * from t1 full outer join t2 where t1a in +(select t2a from t2 left join t3 where t2b = t3b) and t1c = t2c limit 10 +-- !query 77 schema +struct +-- !query 77 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 319 17.0 25.0 26 2017-05-04 00:00:00 NULL +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1c 12 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1c 12 16 219 17.0 25.0 26 2016-05-04 00:00:00 2014-04-05 + + +-- !query 78 +select count(distinct(t1a)), t1b from t1 inner join t2 +where t1a in (select t2a from t2 join t3 where t2b > t3b) and +t1c in (select min(t3c) from t3 left outer join t2 group by t3a having t3a = t2a) and t1a = t2a +group by t1b order by t1b desc +-- !query 78 schema +struct +-- !query 78 output + + + +-- !query 79 +select t1a, t1b, t1c, t2a, t2b, t2c from t1 right join t2 +where t1a in (select t2a from t2 full outer join t3 where t2b > t3b) and +t1b in ( select t3b from t3 left semi join t1 where t3c = t1c) and t1h > t2h +-- !query 79 schema +struct +-- !query 79 output +t1b 8 16 t2a 6 12 +t1c 8 16 t2a 6 12 + + +-- !query 80 +select t1a, t1b, t1c, t2a, t2b, t2c from t1 full join t2 +where t1a in (select t2a from t2 left anti join t3 on t2b < t3b where t2c in (select t1c from t1 where t1a = t2a)) +and t1a = t2a +-- !query 80 schema +struct +-- !query 80 output +t1b 8 16 t1b 10 12 +t1b 8 16 t1b 10 12 +t1b 8 16 t1b 8 16 +t1b 8 16 t1b 8 16 +t1b 8 16 t1b NULL 16 +t1b 8 16 t1b NULL 16 + + +-- !query 81 +select * from (select * from t3 left outer join t2 where t3a = t2a and t2a in +(select t1a from t1 where t2b = t1b)) t1 natural full outer join t2 +where t1.t2a in (select t2a from t2 left anti join t3 on t2b < t3b) and t1.t2c = t2c order by t2a, t3a desc limit 5 +-- !query 81 schema +struct +-- !query 81 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 219 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 t1b 10 12 219 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 319 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 82 +select t1a, t1b, t1c, t3a, t3b, t3c from t1 natural join t3 where t1a not in (select t2a from t2 ) and t1b = t3b +-- !query 82 schema +struct +-- !query 82 output +t1a 6 8 t3a 6 12 +t1a 6 8 t3a 6 12 +t1a 6 8 t3a 6 12 +t1a 6 8 t3a 6 12 +t1d 10 NULL t1b 10 12 +t1d 10 NULL t1b 10 12 + + +-- !query 83 +select t1a, t1b, t1c, t3a, t3b, t3c from t1 full outer join t3 +where t1a not in (select t2a from t2 where t2c not in (select t1c from t1 where t1a = t2a)) and t1b != t3b order by t1a +-- !query 83 schema +struct +-- !query 83 output +t1a 6 8 t1b 10 12 +t1a 6 8 t1b 10 12 +t1a 6 8 t1b 8 16 +t1a 6 8 t1b 8 16 +t1a 6 8 t3c 17 16 +t1a 6 8 t3c 17 16 +t1a 6 8 t3b 8 NULL +t1a 6 8 t3b 8 NULL +t1a 16 12 t3a 6 12 +t1a 16 12 t3a 6 12 +t1a 16 12 t1b 10 12 +t1a 16 12 t1b 10 12 +t1a 16 12 t1b 8 16 +t1a 16 12 t1b 8 16 +t1a 16 12 t3c 17 16 +t1a 16 12 t3c 17 16 +t1a 16 12 t3b 8 NULL +t1a 16 12 t3b 8 NULL +t1a 16 12 t3a 6 12 +t1a 16 12 t3a 6 12 +t1a 16 12 t1b 10 12 +t1a 16 12 t1b 10 12 +t1a 16 12 t1b 8 16 +t1a 16 12 t1b 8 16 +t1a 16 12 t3c 17 16 +t1a 16 12 t3c 17 16 +t1a 16 12 t3b 8 NULL +t1a 16 12 t3b 8 NULL +t1a 6 8 t1b 10 12 +t1a 6 8 t1b 10 12 +t1a 6 8 t1b 8 16 +t1a 6 8 t1b 8 16 +t1a 6 8 t3c 17 16 +t1a 6 8 t3c 17 16 +t1a 6 8 t3b 8 NULL +t1a 6 8 t3b 8 NULL +t1b 8 16 t3a 6 12 +t1b 8 16 t3a 6 12 +t1b 8 16 t1b 10 12 +t1b 8 16 t1b 10 12 +t1b 8 16 t3c 17 16 +t1b 8 16 t3c 17 16 +t1c 8 16 t3a 6 12 +t1c 8 16 t3a 6 12 +t1c 8 16 t1b 10 12 +t1c 8 16 t1b 10 12 +t1c 8 16 t3c 17 16 +t1c 8 16 t3c 17 16 +t1d 10 NULL t3a 6 12 +t1d 10 NULL t3a 6 12 +t1d 10 NULL t1b 8 16 +t1d 10 NULL t1b 8 16 +t1d 10 NULL t3c 17 16 +t1d 10 NULL t3c 17 16 +t1d 10 NULL t3b 8 NULL +t1d 10 NULL t3b 8 NULL +t1e 10 NULL t3a 6 12 +t1e 10 NULL t3a 6 12 +t1e 10 NULL t1b 8 16 +t1e 10 NULL t1b 8 16 +t1e 10 NULL t3c 17 16 +t1e 10 NULL t3c 17 16 +t1e 10 NULL t3b 8 NULL +t1e 10 NULL t3b 8 NULL +t1e 10 NULL t3a 6 12 +t1e 10 NULL t3a 6 12 +t1e 10 NULL t1b 8 16 +t1e 10 NULL t1b 8 16 +t1e 10 NULL t3c 17 16 +t1e 10 NULL t3c 17 16 +t1e 10 NULL t3b 8 NULL +t1e 10 NULL t3b 8 NULL +t1e 10 NULL t3a 6 12 +t1e 10 NULL t3a 6 12 +t1e 10 NULL t1b 8 16 +t1e 10 NULL t1b 8 16 +t1e 10 NULL t3c 17 16 +t1e 10 NULL t3c 17 16 +t1e 10 NULL t3b 8 NULL +t1e 10 NULL t3b 8 NULL + + +-- !query 84 +select count(*) from t1 left semi join t3 where t1a not in (select t2a from t2 left outer join t3 where t2a = t3a) +group by t1a order by t1a +-- !query 84 schema +struct +-- !query 84 output +4 +1 +3 +3 + + +-- !query 85 +select * from t1 where t1a not in (select t2a from t2 left join t3 where t2b = t3b) and t1d not in (select t2d from t2) +-- !query 85 schema +struct +-- !query 85 output +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL + + +-- !query 86 +select count(distinct(t1a)), t1b, t1c, t1d from t1 where t1a not in (select t2a from t2 cross join t1 where t2b <> t1b) +group by t1b, t1c, t1d having t1d not in (select t2d from t2 where t1d = t2d) +-- !query 86 schema +struct +-- !query 86 output +1 10 NULL 12 +1 16 12 21 +1 NULL 16 22 + + +-- !query 87 +select sum(distinct(t1a)), t1b, t1c, t1d from t1 where t1a not in (select t2a from t2 left semi join t1) +group by t1b, t1c, t1d having t1b < sum(t1c) +-- !query 87 schema +struct +-- !query 87 output +NULL 6 8 10 + + +-- !query 88 +select * from t1 full outer join t2 where t1a not in (select t2a from t2 left join t3 where t2b = t3b) and t1c = t2c +-- !query 88 schema +struct +-- !query 88 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t2a 6 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t2a 6 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 319 17.0 25.0 26 2017-05-04 00:00:00 NULL +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1c 12 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1c 12 16 219 17.0 25.0 26 2016-05-04 00:00:00 2014-04-05 +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 319 17.0 25.0 26 2017-05-04 00:00:00 NULL +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 219 17.0 25.0 26 2016-05-04 00:00:00 2014-04-05 +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 319 17.0 25.0 26 2017-05-04 00:00:00 NULL +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 219 17.0 25.0 26 2016-05-04 00:00:00 2014-04-05 + + +-- !query 89 +select * from t1 full outer join t2 where t1a not in (select t2a from t2 inner join t3 where t2b = t3b) and t1c = t2c +-- !query 89 schema +struct +-- !query 89 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t2a 6 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t2a 6 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 319 17.0 25.0 26 2017-05-04 00:00:00 NULL +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1c 12 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1c 12 16 219 17.0 25.0 26 2016-05-04 00:00:00 2014-04-05 +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 319 17.0 25.0 26 2017-05-04 00:00:00 NULL +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 219 17.0 25.0 26 2016-05-04 00:00:00 2014-04-05 +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 319 17.0 25.0 26 2017-05-04 00:00:00 NULL +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 219 17.0 25.0 26 2016-05-04 00:00:00 2014-04-05 + + +-- !query 90 +select t2a from (select t2a from t2 where t2a in (select t1a from t1) + union all select t2a from t2 where t2a in (select t1a from t1)) as t3 +-- !query 90 schema +struct +-- !query 90 output +t1b +t1b +t1b +t1b +t1b +t1b +t1b +t1b +t1b +t1b +t1b +t1b +t1c +t1c +t1c +t1c +t1e +t1e + + +-- !query 91 +select t2a from (select t2a from t2 where t2a in (select t1a from t1) + union select t2a from t2 where t2a in (select t3a from t3)) as t3 +-- !query 91 schema +struct +-- !query 91 output +t1b +t1c +t1e + + +-- !query 92 +select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) + union all select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3 +-- !query 92 schema +struct +-- !query 92 output +t1b +t1b +t1b +t1b +t1b +t1b +t1c +t1c + + +-- !query 93 +select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) + union select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3 +-- !query 93 schema +struct +-- !query 93 output +t1b +t1c + + +-- !query 94 +select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) + union distinct select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3 +-- !query 94 schema +struct +-- !query 94 output +t1b +t1c + + +-- !query 95 +select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) + intersect select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3 +-- !query 95 schema +struct +-- !query 95 output +t1b + + +-- !query 96 +select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b != t2b) + except select t2a from t2 where t2a in (select t3a from t3 where t2c = t3c)) as t3 +-- !query 96 schema +struct +-- !query 96 output +t1c +t1e + + +-- !query 97 +select * from t1 where t1a in (select t3a from (select t2a t3a from t2 union all select t2a t3a from t2) as t3) +-- !query 97 schema +struct +-- !query 97 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 98 +select * from t1 where t1b in ( +select t2b from (select t2b from t2 where t2b > 6 union select t2b from t2 where t2b > 6) as t3) +-- !query 98 schema +struct +-- !query 98 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 99 +select t1a, t1b, t1c from t1 where t1b in ( +select t2b from (select t2b from t2 where t2b > 6 union distinct select t1b from t1 where t1b > 6) as t3) +-- !query 99 schema +struct +-- !query 99 output +t1a 16 12 +t1a 16 12 +t1b 8 16 +t1c 8 16 +t1d 10 NULL +t1e 10 NULL +t1e 10 NULL +t1e 10 NULL + + +-- !query 100 +select t1a, t1b, t1c from t1 where t1b in ( +select t2b from (select t2b from t2 where t2b > 6 intersect select t1b from t1 where t1b > 6) as t3 where t2b = t1b) +-- !query 100 schema +struct +-- !query 100 output +t1b 8 16 +t1c 8 16 +t1d 10 NULL +t1e 10 NULL +t1e 10 NULL +t1e 10 NULL + + +-- !query 101 +select t1a, t1b, t1c from t1 where t1h in ( +select t2h from (select t2h from t2 except select t3h from t3 ) as t3) +-- !query 101 schema +struct +-- !query 101 output +t1d 10 NULL + + +-- !query 102 +select t1a, t1b, t1c from t1 where t1a in (select t3a from (select t2a t3a from t2 union all select t2a t3a from t2) + as t3) +union all +select t1a, t1b, t1c from t1 where t1a in (select t3a from (select t2a t3a from t2 union select t2a t3a from t2) + as t3) +-- !query 102 schema +struct +-- !query 102 output +t1b 8 16 +t1b 8 16 +t1c 8 16 +t1c 8 16 +t1e 10 NULL +t1e 10 NULL +t1e 10 NULL +t1e 10 NULL +t1e 10 NULL +t1e 10 NULL + + +-- !query 103 +select t1a, t1b, t1c from t1 where t1b in ( +select t2b from (select t2b from t2 where t2b > 6 intersect select t1b from t1 where t1b > 6) as t3) +union distinct +select t1a, t1b, t1c from t1 where t1b in ( +select t2b from (select t2b from t2 where t2b > 6 except select t1b from t1 where t1b > 6) as t3 where t2b = t1b) +-- !query 103 schema +struct +-- !query 103 output +t1b 8 16 +t1c 8 16 +t1d 10 NULL +t1e 10 NULL + + +-- !query 104 +select count(distinct t2b) from +(select t2a, t2b from (select t2a, t2b from t2 where t2h in (select t1h from t1 where t1a = t2a) + union distinct select t1a, t1b from t1 where t1h in (select t3h from t3 union select t1h from t1)) t4 + where t4.t2b in (select min(t3b) from t3 where t4.t2a = t3a)) +-- !query 104 schema +struct +-- !query 104 output +1 + + +-- !query 105 +select t2a from (select t2a from t2 where t2a not in (select t1a from t1 union select t3a from t3) + union all select t2a from t2 where t2a not in (select t1a from t1 intersect select t2a from t2)) as t3 + where t3.t2a not in (select t1a from t1 intersect select t2a from t2) +-- !query 105 schema +struct +-- !query 105 output +t1f +t1f +t1f +t1f +t2a +t2a +t2e +t2e + + +-- !query 106 +select t1a, t1b, t1c from t1 where t1b not in ( +select t2b from (select t2b from t2 where t2b not in (select t1b from t1) union + select t1b from t1 where t1b not in (select t3b from t3) union distinct + select t3b from t3 where t3b not in (select t2b from t2)) as t3 where t2b = t1b) +-- !query 106 schema +struct +-- !query 106 output +t1a 16 12 +t1a 16 12 +t1a 6 8 +t1a 6 8 +t1b 8 16 +t1c 8 16 +t1d 10 NULL +t1d NULL 16 +t1d NULL 16 +t1e 10 NULL +t1e 10 NULL +t1e 10 NULL + + +-- !query 107 +select distinct(t1a), t1b, t1c from t1 where t1b not in ( +select t2b from (select t2b from t2 where t2b > 6 union distinct select t1b from t1 where t1b > 6) as t3) +union +select distinct(t1a), t1b, t1c from t1 where t1b not in ( +select t2b from (select t2b from t2 where t2b > 6 intersect select t1b from t1 where t1b > 6) as t3 where t2b = t1b) +group by t1a, t1b, t1c +-- !query 107 schema +struct +-- !query 107 output +t1a 16 12 +t1a 6 8 + + +-- !query 108 +with cte1 as (select t1a, t1b from t1) select * from t1 where t1b in +(select cte1.t1b from cte1 where cte1.t1b > 0) +-- !query 108 schema +struct +-- !query 108 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 109 +with cte1 as (select t1a, t1b from t1) select t1a, t1b from t1 where t1b in +(select cte1.t1b from cte1 where cte1.t1b > 0 union select cte1.t1b from cte1 where cte1.t1b > 5) +-- !query 109 schema +struct +-- !query 109 output +t1a 16 +t1a 16 +t1a 6 +t1a 6 +t1b 8 +t1c 8 +t1d 10 +t1e 10 +t1e 10 +t1e 10 + + +-- !query 110 +with cte1 as (select t1a, t1b from t1) select * from +(select cte1.t1b from cte1 where cte1.t1b > 0 union select cte1.t1b from cte1 where cte1.t1b > 5) s where t1b > 6 +-- !query 110 schema +struct +-- !query 110 output +10 +16 +8 + + +-- !query 111 +with cte1 as (select t1a, t1b from t1) select distinct(*) from +(select cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1b > 5) s where t1b > 6 +-- !query 111 schema +struct +-- !query 111 output +10 +16 +8 + + +-- !query 112 +with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) select distinct(*) from +(select cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1b > 5 and cte1.t1a = cte2.t1a) s where t1b in (8) +-- !query 112 schema +struct +-- !query 112 output +8 + + +-- !query 113 +with cte1 as (select t1a, t1b, t1h from t1 where t1a in (select t2a from t2 where t1b < t2b)) +select count(distinct t1a), t1b from +(select cte1.t1a, cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1h >= cte2.t1h) s where t1b in (select t1b from t1) +group by t1b +-- !query 113 schema +struct +-- !query 113 output +2 8 + + +-- !query 114 +with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) select distinct(*) from +(select cte1.t1b from cte1 left semi join cte1 cte2 on cte1.t1b > 5 and cte1.t1a != cte2.t1a) s +-- !query 114 schema +struct +-- !query 114 output +8 + + +-- !query 115 +with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) +select count(distinct(s.t1a)), s.t1b from +(select cte1.t1a, cte1.t1b from cte1 right outer join cte1 cte2 on cte1.t1a = cte2.t1a ) s +where t1b in (8) group by s.t1b +-- !query 115 schema +struct +-- !query 115 output +2 8 + + +-- !query 116 +with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) select distinct(*) from +(select cte1.t1b from cte1 left outer join cte1 cte2 on cte1.t1b = cte2.t1b) s +where s.t1b in (select t1b from t1 left semi join cte1 on t1.t1a = cte1.t1a) +-- !query 116 schema +struct +-- !query 116 output +8 + + +-- !query 117 +with cte1 as (select t1a, t1b from t1) select * from t1 where t1b not in (select cte1.t1b from cte1 where cte1.t1b < 0) +-- !query 117 schema +struct +-- !query 117 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 118 +with cte1 as (select t1a, t1b from t1 where t1a not in (select t2a from t2)) select distinct(*) from +(select cte1.t1b from cte1 cross join cte1 cte2) s +-- !query 118 schema +struct +-- !query 118 output +10 +16 +6 +NULL + + +-- !query 119 +with cte1 as (select t1a, t1b, t1c, t1h from t1 where t1d not in (select t2d from t2)) select * from +(select cte1.t1b, cte1.t1c, cte1.t1h from cte1 full outer join cte1 cte2 where cte1.t1h = cte2.t1h) s where s.t1h +not in (select t3h from t3) +-- !query 119 schema +struct +-- !query 119 output +10 NULL 2015-05-04 00:00:00 + + +-- !query 120 +select * from t1 where (t1a, t1h) not in +(select t2a, t2h from t2 where t2a = t1a order by t2a) +-- !query 120 schema +struct +-- !query 120 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 +t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL + + +-- !query 121 +select * from t1 where (t1b, t1d) in (select t2b, t2d from t2 where t2h in (select t3h from t3 where t2b > t3b)) +-- !query 121 schema +struct +-- !query 121 output +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 122 +select * from t1 where (t1b, t1d) not in (select t2b, t2d from t2 where t2h in (select t3h from t3 where t2b > t3b)) +-- !query 122 schema +struct +-- !query 122 output +t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 +t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 + + +-- !query 123 +select t2a from (select t2a from t2 where (t2a, t2b) in (select t1a, t1b from t1) union all + select t2a from t2 where (t2a, t2b) in (select t1a, t1b from t1) union distinct + select t2a from t2 where (t2a, t2b) in (select t3a, t3b from t3)) as t4 +-- !query 123 schema +struct +-- !query 123 output +t1b + + +-- !query 124 +select * from (select * from t3 left outer join t2 where t3a = t2a and (t2a, t2b) in +(select t1a, t1b from t1 where t2b = t1b)) t1 natural full outer join t2 +where (t1.t2a, t1.t2b) not in (select t2a, t2b from t2 left anti join t3 on t2a = t3a) order by t2a, t3a desc limit 5 +-- !query 124 schema +struct +-- !query 124 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 219 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 319 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 419 17.0 25.0 26 2014-05-04 00:00:00 NULL + + +-- !query 125 +with cte1 as (select t1a, t1b from t1 where (t1b, t1d) in (select t2b, t2d from t2 where t1c = t2c)) +select distinct(*) from (select cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1b > 5) s where t1b in (8) +-- !query 125 schema +struct +-- !query 125 output +8 + + +-- !query 126 +DROP TABLE t1 +-- !query 126 schema +struct<> +-- !query 126 output + + + +-- !query 127 +DROP TABLE t2 +-- !query 127 schema +struct<> +-- !query 127 output + + + +-- !query 128 +DROP TABLE t3 +-- !query 128 schema +struct<> +-- !query 128 output + + + +-- !query 129 +USE default +-- !query 129 schema +struct<> +-- !query 129 output + + + +-- !query 130 +DROP DATABASE indb +-- !query 130 schema +struct<> +-- !query 130 output + From 71651050b0ae4e5c87f51c46acc154afd662c407 Mon Sep 17 00:00:00 2001 From: Kevin Yu Date: Sun, 18 Dec 2016 21:30:57 -0800 Subject: [PATCH 04/11] rerun the test --- .../test/resources/sql-tests/results/in-subquery.sql.out | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sql/core/src/test/resources/sql-tests/results/in-subquery.sql.out b/sql/core/src/test/resources/sql-tests/results/in-subquery.sql.out index 233a456ad8df..229c78d92638 100644 --- a/sql/core/src/test/resources/sql-tests/results/in-subquery.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/in-subquery.sql.out @@ -952,11 +952,11 @@ where t1.t2a in (select t2a from t2 left anti join t3 on t2b < t3b) and t1.t2c = -- !query 81 schema struct -- !query 81 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 419 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 t1b NULL 16 419 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 219 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 t1b 10 12 219 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 319 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -- !query 82 From 32dbd46991b758c55f409978b86db9bf07a081eb Mon Sep 17 00:00:00 2001 From: Kevin Yu Date: Sun, 18 Dec 2016 22:28:50 -0800 Subject: [PATCH 05/11] rename the file name --- .../sql-tests/inputs/{in-subquery.sql => tc01-insubquery.sql} | 0 .../results/{in-subquery.sql.out => tc01-insubquery.sql.out} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename sql/core/src/test/resources/sql-tests/inputs/{in-subquery.sql => tc01-insubquery.sql} (100%) rename sql/core/src/test/resources/sql-tests/results/{in-subquery.sql.out => tc01-insubquery.sql.out} (100%) diff --git a/sql/core/src/test/resources/sql-tests/inputs/in-subquery.sql b/sql/core/src/test/resources/sql-tests/inputs/tc01-insubquery.sql similarity index 100% rename from sql/core/src/test/resources/sql-tests/inputs/in-subquery.sql rename to sql/core/src/test/resources/sql-tests/inputs/tc01-insubquery.sql diff --git a/sql/core/src/test/resources/sql-tests/results/in-subquery.sql.out b/sql/core/src/test/resources/sql-tests/results/tc01-insubquery.sql.out similarity index 100% rename from sql/core/src/test/resources/sql-tests/results/in-subquery.sql.out rename to sql/core/src/test/resources/sql-tests/results/tc01-insubquery.sql.out From ee1e14e042e78276a1412ad5ed75d4a1506b8109 Mon Sep 17 00:00:00 2001 From: Kevin Yu Date: Sun, 18 Dec 2016 22:33:01 -0800 Subject: [PATCH 06/11] fix comment --- .../src/test/resources/sql-tests/inputs/tc01-insubquery.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/core/src/test/resources/sql-tests/inputs/tc01-insubquery.sql b/sql/core/src/test/resources/sql-tests/inputs/tc01-insubquery.sql index ab9ba281f799..ac83a434bc44 100644 --- a/sql/core/src/test/resources/sql-tests/inputs/tc01-insubquery.sql +++ b/sql/core/src/test/resources/sql-tests/inputs/tc01-insubquery.sql @@ -1,5 +1,5 @@ -- A test suite for IN predicate subquery --- It includes correlated and non-correlated cases. +-- It includes correlated cases. -- tables and data types From c2ca009cee5545c9ecab6225d5d628149764a588 Mon Sep 17 00:00:00 2001 From: Kevin Yu Date: Mon, 19 Dec 2016 07:50:52 -0800 Subject: [PATCH 07/11] rename the file --- .../inputs/{tc01-insubquery.sql => subq01-in-subquery.sql} | 0 .../{tc01-insubquery.sql.out => subq01-in-subquery.sql.out} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename sql/core/src/test/resources/sql-tests/inputs/{tc01-insubquery.sql => subq01-in-subquery.sql} (100%) rename sql/core/src/test/resources/sql-tests/results/{tc01-insubquery.sql.out => subq01-in-subquery.sql.out} (100%) diff --git a/sql/core/src/test/resources/sql-tests/inputs/tc01-insubquery.sql b/sql/core/src/test/resources/sql-tests/inputs/subq01-in-subquery.sql similarity index 100% rename from sql/core/src/test/resources/sql-tests/inputs/tc01-insubquery.sql rename to sql/core/src/test/resources/sql-tests/inputs/subq01-in-subquery.sql diff --git a/sql/core/src/test/resources/sql-tests/results/tc01-insubquery.sql.out b/sql/core/src/test/resources/sql-tests/results/subq01-in-subquery.sql.out similarity index 100% rename from sql/core/src/test/resources/sql-tests/results/tc01-insubquery.sql.out rename to sql/core/src/test/resources/sql-tests/results/subq01-in-subquery.sql.out From 9c584fb2c1bd99cdf4c0f5a222bc7aec4b003227 Mon Sep 17 00:00:00 2001 From: Kevin Yu Date: Tue, 20 Dec 2016 22:53:24 -0800 Subject: [PATCH 08/11] logical grouping the IN subquery --- .../sql-tests/inputs/subq01-in-subquery.sql | 452 ----- .../subquery/in-subquery/in-group-by.sql | 117 ++ .../inputs/subquery/in-subquery/simple-in.sql | 92 + .../results/subq01-in-subquery.sql.out | 1682 ----------------- .../subquery/in-subquery/in-group-by.sql.out | 321 ++++ .../subquery/in-subquery/simple-in.sql.out | 262 +++ 6 files changed, 792 insertions(+), 2134 deletions(-) delete mode 100644 sql/core/src/test/resources/sql-tests/inputs/subq01-in-subquery.sql create mode 100644 sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/in-group-by.sql create mode 100644 sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql delete mode 100644 sql/core/src/test/resources/sql-tests/results/subq01-in-subquery.sql.out create mode 100644 sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/in-group-by.sql.out create mode 100644 sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out diff --git a/sql/core/src/test/resources/sql-tests/inputs/subq01-in-subquery.sql b/sql/core/src/test/resources/sql-tests/inputs/subq01-in-subquery.sql deleted file mode 100644 index ac83a434bc44..000000000000 --- a/sql/core/src/test/resources/sql-tests/inputs/subq01-in-subquery.sql +++ /dev/null @@ -1,452 +0,0 @@ --- A test suite for IN predicate subquery --- It includes correlated cases. - --- tables and data types - -CREATE DATABASE indb; -CREATE TABLE t1(t1a String, t1b Short, t1c Int, t1d Long, t1e float, t1f double, t1g DECIMAL, t1h TIMESTAMP, t1i Date) -using parquet; -CREATE TABLE t2(t2a String, t2b Short, t2c Int, t2d Long, t2e float, t2f double, t2g DECIMAL, t2h TIMESTAMP, t2i Date) -using parquet; -CREATE TABLE t3(t3a String, t3b Short, t3c Int, t3d Long, t3e float, t3f double, t3g DECIMAL, t3h TIMESTAMP, t3i Date) -using parquet; - --- insert to tables -INSERT INTO t1 VALUES - ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1a', 16, 12, 21, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1a', 16, 12, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1c', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1d', null, 16, 22, 17, 25, 26.00, timestamp(date("2014-05-04")), null), - ('t1d', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null), - ('t1e', 10, null, 25, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1d', 10, null, 12, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-04-05")), - ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")); - -INSERT INTO t2 VALUES - ('t2a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', 8, 16, 119, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2014-04-05")), - ('t1c', 12, 16, 219, 17, 25, 26.00, timestamp(date("2016-05-04")), date("2014-04-05")), - ('t1b', null, 16, 319, 17, 25, 26.00, timestamp(date("2017-05-04")), null), - ('t2e', 8, null, 419, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-04-05")), - ('t1f', 19, null, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1c', 12, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1e', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1f', 19, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null); - -INSERT INTO t3 VALUES - ('t3a', 6, 12, 110, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t3a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1b', 10, 12, 219, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', 8, 16, 319, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t3c', 17, 16, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t3c', 17, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', null, 16, 419, 17, 25, 26.00, timestamp(date("2014-05-04")), null), - ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null), - ('t3b', 8, null, 719, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t3b', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")); - --- 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 t2a in - (select t3a 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 * from t1 where t1a not in (select t2a from t2); --- TC 01.08 -select * from t1 where t1d not in (select t2d from t2 where t2h > t1h or t2i > t1i); --- TC 01.09 -select * from t1 where t1b not in (select t2b from t2 where t1a < t2a and t2b > 6); - --- GROUP BY in parent side --- TC 02.01 -select t1a, avg(t1b) from t1 where t1a in (select t2a from t2) group by t1a; --- TC 02.02 -select t1a, max(t1b) from t1 where t1b in (select t2b from t2 where t1a = t2a) group by t1a, t1d; --- TC 02.03 -select t1a, sum(t1b) from t1 where t1c in (select t2c from t2 where t1a = t2a) group by t1a, t1c; --- TC 02.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 02.05 -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 02.06 -select * from t1 where t1b in (select max(t2b) from t2 group by t2a); --- TC 02.07 -select * from (select * from t2 where t2a in (select t1a from t1 where t1b = t2b)) t2; --- TC 02.08 -select count(distinct(*)) from t1 where t1b in (select min(t2b) from t2 where t1a = t2a and t1c = t2c group by t2a); --- TC 02.09 -select t1a, t1b from t1 where t1c in (select max(t2c) from t2 where t1a = t2a group by t2a, t2c having t2c > 8); --- TC 02.10 -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)); --- TC 02.11 -select * from t1 where t1a in -(select min(t2a) from t2 where t2a = t2a and t2c >= 1 group by t2c having t2c in -(select t3c from t3 having t2b > 6 and t3b > t2b)); --- TC 02.12 -select * from (select * from t2 where t2a in (select t1a from t1 where t1b = t2b)) t2 where t2a in -(select t2a from t2 where t2a = t2a and t2c > 1 group by t2a having t2c > 8); - --- GROUP BY with NOT IN --- TC 02.13 -select t1a, avg(t1b) from t1 where t1a not in (select t2a from t2) group by t1a; --- TC 02.14 -select t1a, sum(distinct(t1b)) from t1 where t1d not in (select t2d from t2 where t1h < t2h) group by t1a; --- TC 02.15 -select * from t1 where t1b not in (select max(t2b) from t2 where t2i not in - (select t1i from t1 where t1d > t2d) group by t2a); --- TC 02.16 -select count(*) from (select * from t2 where t2a not in (select t3a from t3 where t3h != t2h)) t2 -where t2b not in (select min(t2b) from t2 where t2b = t2b group by t2c); --- TC 02.17 -select t1a, t1b from t1 where t1c not in (select max(t2b) from t2 where t1a = t2a group by t2a); --- TC 02.18 -select t1a, t1b from t1 where t1c in (select t2b from t2 where t2a not in -( select min(t3a) from t3 where t3a = t2a group by t3b)); - --- ORDER BY in the parent side --- TC 03.01 -select * from t1 where t1a in (select t2a from t2) order by t1a; --- TC 03.02 -select t1a from t1 where t1b in (select t2b from t2 where t1a = t2a) order by t1b desc; --- TC 03.03 -select t1a, t1b from t1 where t1c in (select t2c from t2 where t1a = t2a) order by 1; --- TC 03.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 03.05 -select * from t1 where t1a in (select t2a from t2 order by t2a); --- TC 03.06 -select * from t1 where t1b in (select min(t2b) from t2 where t1a = t2a order by min(t2b)); --- TC 03.07 -select t1a, t1b, t1h from t1 where t1c in (select t2c from t2 where t1a = t2a order by t2b desc) or - t1h in (select t2h from t2 where t1h > t2h) order by t1h asc; - --- ORDER BY with NOT IN --- TC 03.08 -select * from t1 where t1a not in (select t2a from t2) order by t1a; --- TC 03.09 -select t1a, t1b from t1 where t1a not in (select t2a from t2 where t1a = t2a) order by t1a; --- TC 03.10 -select * from t1 where t1a not in (select t2a from t2 order by t2a desc) and - t1c in (select t2c from t2 order by t2b asc) order by t1c desc; - --- GROUP BY and ORDER BY in subquery --- TC 04.01 -select * from t1 where t1b in (select min(t2b) from t2 group by t2a order by t2a desc); --- TC 04.02 -select count(distinct(*)) from t1 where t1a in (select min(t2a) from t2 group by t2c order by t2c desc); --- TC 04.03 -select t1a, count(distinct(t1b)) from t1 where t1b in (select min(t2b) -from t2 where t1a = t2a group by t2a order by t2a desc) group by t1a, t1h; --- TC 04.04 -select t1a, t1b from t1 where t1b in (select min(t2b) from t2 -where t1a = t2a group by t2d order by t2d desc); - --- GROUP BY and ORDER BY with NOT IN --- TC 04.05 -select * from t1 where t1b not in (select min(t2b) from t2 group by t2a order by t2a); --- TC 04.06 -select count(*) from t1 where t1b not in (select min(t2b) from t2 group by t2c order by t2c desc) group by t1a; --- TC 04.07 -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) group by t1a; --- TC 04.08 -select count(distinct(t1a)), t1b from t1 where t1b not in (select min(t2b) from t2 -where t1a = t2a group by t2d order by t2d desc) group by t1a, t1b order by t1b desc; - --- LIMIT in subquery --- TC 05.01 -select * from t1 where t1a in (select t2a from t2 limit 2); --- TC 05.02 -select * from t1 where t1c in (select t2c from t2 where t2b >=8 limit 2) limit 4; --- TC 05.03 -select count(distinct(t1a)), t1b from t1 where t1d in (select t2d from t2 order by t2c) -group by t1b order by t1b limit 1; - --- LIMIT with NOT IN --- TC 05.04 -select * from t1 where t1a not in (select t2a from t2 limit 2); --- TC 05.05 -select * from t1 where t1b not in (select t2b from t2 where t2b > 6 limit 2); --- TC 05.06 -select count(distinct(t1a)), t1b from t1 where t1d not in -(select t2d from t2 order by t2b) group by t1b limit 1; - --- HAVING clause in subquery --- TC 06.01 -select * from t1 where t1a in (select t2a from t2 having t2c > 10); --- TC 06.02 -select * from t1 where t1b in (select min(t2b) from t2 where t1a = t2a group by t2b having t2b > 1); --- TC 06.03 -select count(distinct(t1a)), t1b from t1 where t1c in (select t2c from t2 where t1a = t2a having t2c > 10) -group by t1b having t1b >= 8; --- TC 06.04 -select t1a, max(t1b) from t1 where t1b > 0 group by t1a having t1a in -(select t2a from t2 where t2b in (select t3b from t3 where t2c = t3c)); - --- HAVING clause with NOT IN --- TC 06.05 -select * from t1 where t1a not in (select t2a from t2 having t2c > 10); --- TC 06.06 -select t1a, t1b from t1 where t1d not in (select t2d from t2 where t1a = t2a having t2c > 8); --- TC 06.07 -select t1a, t1b from t1 where t1c not in (select t2c from t2 where t1a = t2a having t2c not in -(select t3c from t3)) group by t1a, t1b limit 2; --- TC 06.10 -select t1a, max(t1b) from t1 where t1b > 0 group by t1a having t1a not in (select t2a from t2 where t2b > 3); - --- different JOIN in parent side --- TC 07.01 -select * from t1 natural join t3 where t1a in (select t2a from t2 ) and t1b = t3b order by t1a, t1b; --- TC 07.02 -select count(distinct(t1a)), t1b, t3a, t3b, t3c from t1 natural left join t3 where t1a -in (select t2a from t2 ) and t1b > t3b group by t1a, t1b, t3a, t3b, t3c order by t1a desc limit 2; --- TC 07.03 -select count(distinct(*)) from t1 natural right join t3 -where t1a in (select t2a from t2 where t1b = t2b) and t1b in (select t2b from t2 where t1c > t2c) and t1a = t3a -group by t1a order by t1a; --- TC 07.04 -select t1a, t1b, t1c, t3a, t3b, t3c from t1 full outer join t3 -where t1a in (select t2a from t2 ) and t1b != t3b order by t1a; --- TC 07.05 -select count(distinct(t1a)), t1b from t1 full outer join t3 where t1a in (select t2a from t2 where t2h > t3h) -and t3a in (select t2a from t2 where t2c > t3c) and t1h >= t3h group by t1a, t1b order by t1a; --- TC 07.06 -select count(*) from t1 left semi join t3 where t1a in (select t2a from t2 ) group by t1a order by t1a; --- TC 07.07 -select count(distinct(t1a)), t1b from t1 left anti join t2 on t1a > t2a where t1b in (select t2b from t2) -or t1a in (select t2a from t2) group by t1b having t1b > 1; - --- different JOIN in the subquery --- TC 07.08 -select * from t1 where t1a in (select t2a from t2 left join t3 where t2b = t3b); --- TC 07.09 -select t1a, t1b from t1 where t1a in (select t2a from t2 full outer join t1 where t2b > t1b) limit 2; --- TC 07.09 -select count(distinct(t1a)), t1b from t1 where t1a in (select t2a from t2 cross join t1 where t2b <> t1b) and -t1h in (select t2h from t2 right join t3 where t2b = t3b) group by t1b; --- TC 07.10 -select count(distinct(t1a)), t1b from t1 where t1a in (select t2a from t2 right join t1 where t2b <> t1b) or - t1b in (select t2b from t2 left join t1 where t2c = t1c) group by t1b; - --- JOIN in the parent and subquery --- TC 07.11 -select * from t1 full outer join t2 where t1a in -(select t2a from t2 left join t3 where t2b = t3b) and t1c = t2c limit 10; --- TC 07.12 -select count(distinct(t1a)), t1b from t1 inner join t2 -where t1a in (select t2a from t2 join t3 where t2b > t3b) and -t1c in (select min(t3c) from t3 left outer join t2 group by t3a having t3a = t2a) and t1a = t2a -group by t1b order by t1b desc; --- TC 07.13 -select t1a, t1b, t1c, t2a, t2b, t2c from t1 right join t2 -where t1a in (select t2a from t2 full outer join t3 where t2b > t3b) and -t1b in ( select t3b from t3 left semi join t1 where t3c = t1c) and t1h > t2h; --- TC 07.15 -select t1a, t1b, t1c, t2a, t2b, t2c from t1 full join t2 -where t1a in (select t2a from t2 left anti join t3 on t2b < t3b where t2c in (select t1c from t1 where t1a = t2a)) -and t1a = t2a; --- TC 07.16 -select * from (select * from t3 left outer join t2 where t3a = t2a and t2a in -(select t1a from t1 where t2b = t1b)) t1 natural full outer join t2 -where t1.t2a in (select t2a from t2 left anti join t3 on t2b < t3b) and t1.t2c = t2c order by t2a, t3a desc limit 5; - --- JOIN with NOT IN --- TC 07.17 -select t1a, t1b, t1c, t3a, t3b, t3c from t1 natural join t3 where t1a not in (select t2a from t2 ) and t1b = t3b; --- TC 07.18 -select t1a, t1b, t1c, t3a, t3b, t3c from t1 full outer join t3 -where t1a not in (select t2a from t2 where t2c not in (select t1c from t1 where t1a = t2a)) and t1b != t3b order by t1a; --- TC 07.19 -select count(*) from t1 left semi join t3 where t1a not in (select t2a from t2 left outer join t3 where t2a = t3a) -group by t1a order by t1a; --- TC 07.20 -select * from t1 where t1a not in (select t2a from t2 left join t3 where t2b = t3b) and t1d not in (select t2d from t2); --- TC 07.21 -select count(distinct(t1a)), t1b, t1c, t1d from t1 where t1a not in (select t2a from t2 cross join t1 where t2b <> t1b) -group by t1b, t1c, t1d having t1d not in (select t2d from t2 where t1d = t2d); --- TC 07.22 -select sum(distinct(t1a)), t1b, t1c, t1d from t1 where t1a not in (select t2a from t2 left semi join t1) -group by t1b, t1c, t1d having t1b < sum(t1c); --- TC 07.23 -select * from t1 full outer join t2 where t1a not in (select t2a from t2 left join t3 where t2b = t3b) and t1c = t2c; --- TC 07.24 -select * from t1 full outer join t2 where t1a not in (select t2a from t2 inner join t3 where t2b = t3b) and t1c = t2c; - --- UNION, UNION ALL, UNION DISTINCT, INTERSECT and EXCEPT in the parent --- TC 08.01 -select t2a from (select t2a from t2 where t2a in (select t1a from t1) - union all select t2a from t2 where t2a in (select t1a from t1)) as t3; --- TC 08.02 -select t2a from (select t2a from t2 where t2a in (select t1a from t1) - union select t2a from t2 where t2a in (select t3a from t3)) as t3; --- TC 08.03 -select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) - union all select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3; --- TC 08.04 -select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) - union select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3; --- TC 08.05 -select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) - union distinct select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3; --- TC 08.06 -select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) - intersect select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3; --- TC 08.07 -select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b != t2b) - except select t2a from t2 where t2a in (select t3a from t3 where t2c = t3c)) as t3; - --- UNION, UNION ALL, UNION DISTINCT, INTERSECT and EXCEPT in the subquery --- TC 08.08 -select * from t1 where t1a in (select t3a from (select t2a t3a from t2 union all select t2a t3a from t2) as t3); --- TC 08.09 -select * from t1 where t1b in ( -select t2b from (select t2b from t2 where t2b > 6 union select t2b from t2 where t2b > 6) as t3); --- TC 08.10 -select t1a, t1b, t1c from t1 where t1b in ( -select t2b from (select t2b from t2 where t2b > 6 union distinct select t1b from t1 where t1b > 6) as t3); --- TC 08.11 -select t1a, t1b, t1c from t1 where t1b in ( -select t2b from (select t2b from t2 where t2b > 6 intersect select t1b from t1 where t1b > 6) as t3 where t2b = t1b); --- TC 08.12 -select t1a, t1b, t1c from t1 where t1h in ( -select t2h from (select t2h from t2 except select t3h from t3 ) as t3); - --- UNION, UNION ALL, UNION DISTINCT, INTERSECT and EXCEPT in the parent and subquery --- TC 08.13 -select t1a, t1b, t1c from t1 where t1a in (select t3a from (select t2a t3a from t2 union all select t2a t3a from t2) - as t3) -union all -select t1a, t1b, t1c from t1 where t1a in (select t3a from (select t2a t3a from t2 union select t2a t3a from t2) - as t3); --- TC 08.14 -select t1a, t1b, t1c from t1 where t1b in ( -select t2b from (select t2b from t2 where t2b > 6 intersect select t1b from t1 where t1b > 6) as t3) -union distinct -select t1a, t1b, t1c from t1 where t1b in ( -select t2b from (select t2b from t2 where t2b > 6 except select t1b from t1 where t1b > 6) as t3 where t2b = t1b); --- TC 08.15 -select count(distinct t2b) from -(select t2a, t2b from (select t2a, t2b from t2 where t2h in (select t1h from t1 where t1a = t2a) - union distinct select t1a, t1b from t1 where t1h in (select t3h from t3 union select t1h from t1)) t4 - where t4.t2b in (select min(t3b) from t3 where t4.t2a = t3a)); - --- UNION, UNION ALL, UNION DISTINCT, INTERSECT and EXCEPT for NOT IN --- TC 08.16 -select t2a from (select t2a from t2 where t2a not in (select t1a from t1 union select t3a from t3) - union all select t2a from t2 where t2a not in (select t1a from t1 intersect select t2a from t2)) as t3 - where t3.t2a not in (select t1a from t1 intersect select t2a from t2); --- TC 08.17 -select t1a, t1b, t1c from t1 where t1b not in ( -select t2b from (select t2b from t2 where t2b not in (select t1b from t1) union - select t1b from t1 where t1b not in (select t3b from t3) union distinct - select t3b from t3 where t3b not in (select t2b from t2)) as t3 where t2b = t1b); --- TC 08.18 -select distinct(t1a), t1b, t1c from t1 where t1b not in ( -select t2b from (select t2b from t2 where t2b > 6 union distinct select t1b from t1 where t1b > 6) as t3) -union -select distinct(t1a), t1b, t1c from t1 where t1b not in ( -select t2b from (select t2b from t2 where t2b > 6 intersect select t1b from t1 where t1b > 6) as t3 where t2b = t1b) -group by t1a, t1b, t1c; - --- outside CTE --- TC 09.01 -with cte1 as (select t1a, t1b from t1) select * from t1 where t1b in -(select cte1.t1b from cte1 where cte1.t1b > 0); --- TC 09.02 -with cte1 as (select t1a, t1b from t1) select t1a, t1b from t1 where t1b in -(select cte1.t1b from cte1 where cte1.t1b > 0 union select cte1.t1b from cte1 where cte1.t1b > 5); --- TC 09.03 -with cte1 as (select t1a, t1b from t1) select * from -(select cte1.t1b from cte1 where cte1.t1b > 0 union select cte1.t1b from cte1 where cte1.t1b > 5) s where t1b > 6; --- TC 09.04 -with cte1 as (select t1a, t1b from t1) select distinct(*) from -(select cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1b > 5) s where t1b > 6; - --- CTE inside and outside --- TC 09.05 -with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) select distinct(*) from -(select cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1b > 5 and cte1.t1a = cte2.t1a) s where t1b in (8); --- TC 09.06 -with cte1 as (select t1a, t1b, t1h from t1 where t1a in (select t2a from t2 where t1b < t2b)) -select count(distinct t1a), t1b from -(select cte1.t1a, cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1h >= cte2.t1h) s where t1b in (select t1b from t1) -group by t1b; --- TC 09.07 -with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) select distinct(*) from -(select cte1.t1b from cte1 left semi join cte1 cte2 on cte1.t1b > 5 and cte1.t1a != cte2.t1a) s; --- TC 09.08 -with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) -select count(distinct(s.t1a)), s.t1b from -(select cte1.t1a, cte1.t1b from cte1 right outer join cte1 cte2 on cte1.t1a = cte2.t1a ) s -where t1b in (8) group by s.t1b; --- TC 09.09 -with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) select distinct(*) from -(select cte1.t1b from cte1 left outer join cte1 cte2 on cte1.t1b = cte2.t1b) s -where s.t1b in (select t1b from t1 left semi join cte1 on t1.t1a = cte1.t1a); - --- CTE with NOT IN --- TC 09.10 -with cte1 as (select t1a, t1b from t1) select * from t1 where t1b not in (select cte1.t1b from cte1 where cte1.t1b < 0); --- TC 09.11 -with cte1 as (select t1a, t1b from t1 where t1a not in (select t2a from t2)) select distinct(*) from -(select cte1.t1b from cte1 cross join cte1 cte2) s; --- TC 09.12 -with cte1 as (select t1a, t1b, t1c, t1h from t1 where t1d not in (select t2d from t2)) select * from -(select cte1.t1b, cte1.t1c, cte1.t1h from cte1 full outer join cte1 cte2 where cte1.t1h = cte2.t1h) s where s.t1h -not in (select t3h from t3); - --- multiple columns in the IN subquery --- TC 10.01 -select * from t1 where (t1a, t1h) not in -(select t2a, t2h from t2 where t2a = t1a order by t2a); --- TC 10.02 -select * from t1 where (t1b, t1d) in (select t2b, t2d from t2 where t2h in (select t3h from t3 where t2b > t3b)); --- TC 10.03 -select * from t1 where (t1b, t1d) not in (select t2b, t2d from t2 where t2h in (select t3h from t3 where t2b > t3b)); --- TC 10.05 -select t2a from (select t2a from t2 where (t2a, t2b) in (select t1a, t1b from t1) union all - select t2a from t2 where (t2a, t2b) in (select t1a, t1b from t1) union distinct - select t2a from t2 where (t2a, t2b) in (select t3a, t3b from t3)) as t4; --- TC 10.06 -select * from (select * from t3 left outer join t2 where t3a = t2a and (t2a, t2b) in -(select t1a, t1b from t1 where t2b = t1b)) t1 natural full outer join t2 -where (t1.t2a, t1.t2b) not in (select t2a, t2b from t2 left anti join t3 on t2a = t3a) order by t2a, t3a desc limit 5; --- TC 10.07 -with cte1 as (select t1a, t1b from t1 where (t1b, t1d) in (select t2b, t2d from t2 where t1c = t2c)) -select distinct(*) from (select cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1b > 5) s where t1b in (8); - --- Clean Up -DROP TABLE t1; -DROP TABLE t2; -DROP TABLE t3; -USE default; -DROP DATABASE indb; \ No newline at end of file diff --git a/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/in-group-by.sql b/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/in-group-by.sql new file mode 100644 index 000000000000..8efc275609f3 --- /dev/null +++ b/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/in-group-by.sql @@ -0,0 +1,117 @@ +-- A test suite for GROUP BY in parent side, subquery, and both predicate subquery +-- It includes correlated cases. + +-- tables and data types + +CREATE DATABASE indb; +CREATE TABLE t1(t1a String, t1b Short, t1c Int, t1d Long, t1e float, t1f double, t1g DECIMAL, t1h TIMESTAMP, t1i Date) +using parquet; +CREATE TABLE t2(t2a String, t2b Short, t2c Int, t2d Long, t2e float, t2f double, t2g DECIMAL, t2h TIMESTAMP, t2i Date) +using parquet; +CREATE TABLE t3(t3a String, t3b Short, t3c Int, t3d Long, t3e float, t3f double, t3g DECIMAL, t3h TIMESTAMP, t3i Date) +using parquet; + +-- insert to tables +INSERT INTO t1 VALUES + ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1a', 16, 12, 21, 15, 20, 20.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1a', 16, 12, 10, 15, 20, 20.00, timestamp(date("2014-07-04")), date("2014-07-04")), + ('t1c', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-05")), + ('t1d', null, 16, 22, 17, 25, 26.00, timestamp(date("2014-06-04")), null), + ('t1d', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), null), + ('t1e', 10, null, 25, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), + ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), + ('t1d', 10, null, 12, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), + ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-0=4")); + +INSERT INTO t2 VALUES + ('t2a', 6, 12, 14, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 8, 16, 119, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), + ('t1c', 12, 16, 219, 17, 25, 26.00, timestamp(date("2016-05-04")), date("2016-05-04")), + ('t1b', null, 16, 319, 17, 25, 26.00, timestamp(date("2017-05-04")), null), + ('t2e', 8, null, 419, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1f', 19, null, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), + ('t1c', 12, 16, 19, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-05")), + ('t1e', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), + ('t1f', 19, null, 19, 17, 25, 26.00, timestamp(date("2014-10-04")), date("2014-10-04")), + ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null); + +INSERT INTO t3 VALUES + ('t3a', 6, 12, 110, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t3a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 10, 12, 219, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 8, 16, 319, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), + ('t3c', 17, 16, 519, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), + ('t3c', 17, 16, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-05")), + ('t1b', null, 16, 419, 17, 25, 26.00, timestamp(date("2014-10-04")), null), + ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-11-04")), null), + ('t3b', 8, null, 719, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t3b', 8, null, 19, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")); + +-- 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); +-- TC 01.12 +select * from t1 where t1a in +(select min(t2a) from t2 where t2a = t2a and t2c >= 1 group by t2c having t2c in +(select t3c from t3 group by t3c, t3b having t2b > 6 and t3b > t2b )); +-- TC 01.13 +select * from (select * from t2 where t2a in (select t1a from t1 where t1b = t2b)) t2 where t2a in +(select t2a from t2 where t2a = t2a and t2c > 1 group by t2a having t2c > 8); + +-- GROUP BY in both +-- TC 01.14 +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.15 +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.16 +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.17 +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.18 +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; + +-- Clean Up +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +USE default; +DROP DATABASE indb; \ No newline at end of file diff --git a/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql b/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql new file mode 100644 index 000000000000..69b811b3c0de --- /dev/null +++ b/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql @@ -0,0 +1,92 @@ +-- A test suite for simple IN predicate subquery +-- It includes correlated cases. + +-- tables and data types + +CREATE DATABASE indb; +CREATE TABLE t1(t1a String, t1b Short, t1c Int, t1d Long, t1e float, t1f double, t1g DECIMAL, t1h TIMESTAMP, t1i Date) +using parquet; +CREATE TABLE t2(t2a String, t2b Short, t2c Int, t2d Long, t2e float, t2f double, t2g DECIMAL, t2h TIMESTAMP, t2i Date) +using parquet; +CREATE TABLE t3(t3a String, t3b Short, t3c Int, t3d Long, t3e float, t3f double, t3g DECIMAL, t3h TIMESTAMP, t3i Date) +using parquet; + +-- insert to tables +INSERT INTO t1 VALUES + ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1a', 16, 12, 21, 15, 20, 20.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1a', 16, 12, 10, 15, 20, 20.00, timestamp(date("2014-07-04")), date("2014-07-04")), + ('t1c', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-05")), + ('t1d', null, 16, 22, 17, 25, 26.00, timestamp(date("2014-06-04")), null), + ('t1d', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), null), + ('t1e', 10, null, 25, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), + ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), + ('t1d', 10, null, 12, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), + ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-0=4")); + +INSERT INTO t2 VALUES + ('t2a', 6, 12, 14, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 8, 16, 119, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), + ('t1c', 12, 16, 219, 17, 25, 26.00, timestamp(date("2016-05-04")), date("2016-05-04")), + ('t1b', null, 16, 319, 17, 25, 26.00, timestamp(date("2017-05-04")), null), + ('t2e', 8, null, 419, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1f', 19, null, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), + ('t1c', 12, 16, 19, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-05")), + ('t1e', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), + ('t1f', 19, null, 19, 17, 25, 26.00, timestamp(date("2014-10-04")), date("2014-10-04")), + ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null); + +INSERT INTO t3 VALUES + ('t3a', 6, 12, 110, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t3a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 10, 12, 219, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 8, 16, 319, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), + ('t3c', 17, 16, 519, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), + ('t3c', 17, 16, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-05")), + ('t1b', null, 16, 419, 17, 25, 26.00, timestamp(date("2014-10-04")), null), + ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-11-04")), null), + ('t3b', 8, null, 719, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t3b', 8, null, 19, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")); + +-- 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); +-- TC 01.08 +select t1d, t1h, t1i from t1 where t1d not in (select t2d from t2 where t2h > t1h or t2i > t1i); +-- TC 01.09 +select distinct(t1a), t1b from t1 where t1b not in (select t2b from t2 where t1a < t2a and t2b > 8); +-- TC 01.10 +select t1a, t1b from t1 where t1c not in (select t2b from t2 where t2a not in + (select t3a from t3 where t2c = t3c and t2b is NULL)); +-- TC 01.11 +select t1a, t1b from t1 where t1h not in (select t2h from t2 where t2a = t1a) and t1b not in ( + (select min(t3b) from t3 where t3d = t1d)); + +-- Clean Up +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +USE default; +DROP DATABASE indb; \ No newline at end of file diff --git a/sql/core/src/test/resources/sql-tests/results/subq01-in-subquery.sql.out b/sql/core/src/test/resources/sql-tests/results/subq01-in-subquery.sql.out deleted file mode 100644 index 229c78d92638..000000000000 --- a/sql/core/src/test/resources/sql-tests/results/subq01-in-subquery.sql.out +++ /dev/null @@ -1,1682 +0,0 @@ --- Automatically generated by SQLQueryTestSuite --- Number of queries: 131 - - --- !query 0 -CREATE DATABASE indb --- !query 0 schema -struct<> --- !query 0 output - - - --- !query 1 -CREATE TABLE t1(t1a String, t1b Short, t1c Int, t1d Long, t1e float, t1f double, t1g DECIMAL, t1h TIMESTAMP, t1i Date) -using parquet --- !query 1 schema -struct<> --- !query 1 output - - - --- !query 2 -CREATE TABLE t2(t2a String, t2b Short, t2c Int, t2d Long, t2e float, t2f double, t2g DECIMAL, t2h TIMESTAMP, t2i Date) -using parquet --- !query 2 schema -struct<> --- !query 2 output - - - --- !query 3 -CREATE TABLE t3(t3a String, t3b Short, t3c Int, t3d Long, t3e float, t3f double, t3g DECIMAL, t3h TIMESTAMP, t3i Date) -using parquet --- !query 3 schema -struct<> --- !query 3 output - - - --- !query 4 -INSERT INTO t1 VALUES - ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1a', 16, 12, 21, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1a', 16, 12, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1c', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1d', null, 16, 22, 17, 25, 26.00, timestamp(date("2014-05-04")), null), - ('t1d', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null), - ('t1e', 10, null, 25, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1d', 10, null, 12, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-04-05")), - ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")) --- !query 4 schema -struct<> --- !query 4 output - - - --- !query 5 -INSERT INTO t2 VALUES - ('t2a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', 8, 16, 119, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2014-04-05")), - ('t1c', 12, 16, 219, 17, 25, 26.00, timestamp(date("2016-05-04")), date("2014-04-05")), - ('t1b', null, 16, 319, 17, 25, 26.00, timestamp(date("2017-05-04")), null), - ('t2e', 8, null, 419, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-04-05")), - ('t1f', 19, null, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1c', 12, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1e', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1f', 19, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null) --- !query 5 schema -struct<> --- !query 5 output - - - --- !query 6 -INSERT INTO t3 VALUES - ('t3a', 6, 12, 110, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t3a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1b', 10, 12, 219, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', 8, 16, 319, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t3c', 17, 16, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t3c', 17, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t1b', null, 16, 419, 17, 25, 26.00, timestamp(date("2014-05-04")), null), - ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null), - ('t3b', 8, null, 719, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")), - ('t3b', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-04-05")) --- !query 6 schema -struct<> --- !query 6 output - - - --- !query 7 -select * from t1 where t1a in (select t2a from t2) --- !query 7 schema -struct --- !query 7 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 8 -select * from t1 where t1b in (select t2b from t2 where t1a = t2a) --- !query 8 schema -struct --- !query 8 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 9 -select t1a, t1b from t1 where t1c in (select t2b from t2 where t1a != t2a) --- !query 9 schema -struct --- !query 9 output -t1a 16 -t1a 16 -t1a 6 -t1a 6 - - --- !query 10 -select t1a, t1b from t1 where t1c in (select t2b from t2 where t1a = t2a or t1b > t2b) --- !query 10 schema -struct --- !query 10 output -t1a 16 -t1a 16 - - --- !query 11 -select t1a, t1b from t1 where t1c in (select t2b from t2 where t2a in - (select t3a from t3 where t2c = t3c)) --- !query 11 schema -struct --- !query 11 output -t1a 6 -t1a 6 - - --- !query 12 -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)) --- !query 12 schema -struct --- !query 12 output -t1a 6 -t1a 6 - - --- !query 13 -select * from t1 where t1a not in (select t2a from t2) --- !query 13 schema -struct --- !query 13 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL - - --- !query 14 -select * from t1 where t1d not in (select t2d from t2 where t2h > t1h or t2i > t1i) --- !query 14 schema -struct --- !query 14 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 - - --- !query 15 -select * from t1 where t1b not in (select t2b from t2 where t1a < t2a and t2b > 6) --- !query 15 schema -struct --- !query 15 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 16 -select t1a, avg(t1b) from t1 where t1a in (select t2a from t2) group by t1a --- !query 16 schema -struct --- !query 16 output -t1b 8.0 -t1c 8.0 -t1e 10.0 - - --- !query 17 -select t1a, max(t1b) from t1 where t1b in (select t2b from t2 where t1a = t2a) group by t1a, t1d --- !query 17 schema -struct --- !query 17 output -t1b 8 - - --- !query 18 -select t1a, sum(t1b) from t1 where t1c in (select t2c from t2 where t1a = t2a) group by t1a, t1c --- !query 18 schema -struct --- !query 18 output -t1b 8 -t1c 8 - - --- !query 19 -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 --- !query 19 schema -struct --- !query 19 output -t1b 8 -t1c 8 - - --- !query 20 -select t1a, count(distinct(t1b)) from t1 where t1c in (select t2c from t2 where t1a = t2a) -group by t1a, t1c having t1a = "t1b" --- !query 20 schema -struct --- !query 20 output -t1b 1 - - --- !query 21 -select * from t1 where t1b in (select max(t2b) from t2 group by t2a) --- !query 21 schema -struct --- !query 21 output -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 22 -select * from (select * from t2 where t2a in (select t1a from t1 where t1b = t2b)) t2 --- !query 22 schema -struct --- !query 22 output -t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 23 -select count(distinct(*)) from t1 where t1b in (select min(t2b) from t2 where t1a = t2a and t1c = t2c group by t2a) --- !query 23 schema -struct --- !query 23 output -1 - - --- !query 24 -select t1a, t1b from t1 where t1c in (select max(t2c) from t2 where t1a = t2a group by t2a, t2c having t2c > 8) --- !query 24 schema -struct --- !query 24 output -t1b 8 -t1c 8 - - --- !query 25 -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)) --- !query 25 schema -struct --- !query 25 output -t1a 16 -t1a 16 -t1b 8 -t1c 8 -t1d NULL -t1d NULL - - --- !query 26 -select * from t1 where t1a in -(select min(t2a) from t2 where t2a = t2a and t2c >= 1 group by t2c having t2c in -(select t3c from t3 having t2b > 6 and t3b > t2b)) --- !query 26 schema -struct --- !query 26 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 27 -select * from (select * from t2 where t2a in (select t1a from t1 where t1b = t2b)) t2 where t2a in -(select t2a from t2 where t2a = t2a and t2c > 1 group by t2a having t2c > 8) --- !query 27 schema -struct --- !query 27 output -t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 28 -select t1a, avg(t1b) from t1 where t1a not in (select t2a from t2) group by t1a --- !query 28 schema -struct --- !query 28 output -t1a 11.0 -t1d 10.0 - - --- !query 29 -select t1a, sum(distinct(t1b)) from t1 where t1d not in (select t2d from t2 where t1h < t2h) group by t1a --- !query 29 schema -struct --- !query 29 output -t1a 22 -t1b 8 -t1c 8 -t1d 10 -t1e 10 - - --- !query 30 -select * from t1 where t1b not in (select max(t2b) from t2 where t2i not in - (select t1i from t1 where t1d > t2d) group by t2a) --- !query 30 schema -struct --- !query 30 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 31 -select count(*) from (select * from t2 where t2a not in (select t3a from t3 where t3h != t2h)) t2 -where t2b not in (select min(t2b) from t2 where t2b = t2b group by t2c) --- !query 31 schema -struct --- !query 31 output -6 - - --- !query 32 -select t1a, t1b from t1 where t1c not in (select max(t2b) from t2 where t1a = t2a group by t2a) --- !query 32 schema -struct --- !query 32 output -t1a 16 -t1a 16 -t1a 6 -t1a 6 -t1b 8 -t1c 8 -t1d NULL -t1d NULL - - --- !query 33 -select t1a, t1b from t1 where t1c in (select t2b from t2 where t2a not in -( select min(t3a) from t3 where t3a = t2a group by t3b)) --- !query 33 schema -struct --- !query 33 output -t1a 16 -t1a 16 -t1a 6 -t1a 6 - - --- !query 34 -select * from t1 where t1a in (select t2a from t2) order by t1a --- !query 34 schema -struct --- !query 34 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 35 -select t1a from t1 where t1b in (select t2b from t2 where t1a = t2a) order by t1b desc --- !query 35 schema -struct --- !query 35 output -t1b - - --- !query 36 -select t1a, t1b from t1 where t1c in (select t2c from t2 where t1a = t2a) order by 1 --- !query 36 schema -struct --- !query 36 output -t1b 8 -t1c 8 - - --- !query 37 -select count(distinct(t1a)) from t1 where t1b in (select t2b from t2 where t1a = t2a) order by count(distinct(t1a)) --- !query 37 schema -struct --- !query 37 output -1 - - --- !query 38 -select * from t1 where t1a in (select t2a from t2 order by t2a) --- !query 38 schema -struct --- !query 38 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 39 -select * from t1 where t1b in (select min(t2b) from t2 where t1a = t2a order by min(t2b)) --- !query 39 schema -struct --- !query 39 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 40 -select t1a, t1b, t1h from t1 where t1c in (select t2c from t2 where t1a = t2a order by t2b desc) or - t1h in (select t2h from t2 where t1h > t2h) order by t1h asc --- !query 40 schema -struct --- !query 40 output -t1b 8 2014-05-04 00:00:00 -t1c 8 2014-05-04 00:00:00 - - --- !query 41 -select * from t1 where t1a not in (select t2a from t2) order by t1a --- !query 41 schema -struct --- !query 41 output -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 - - --- !query 42 -select t1a, t1b from t1 where t1a not in (select t2a from t2 where t1a = t2a) order by t1a --- !query 42 schema -struct --- !query 42 output -t1a 6 -t1a 16 -t1a 16 -t1a 6 -t1d NULL -t1d NULL -t1d 10 - - --- !query 43 -select * from t1 where t1a not in (select t2a from t2 order by t2a desc) and - t1c in (select t2c from t2 order by t2b asc) order by t1c desc --- !query 43 schema -struct --- !query 43 output -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 - - --- !query 44 -select * from t1 where t1b in (select min(t2b) from t2 group by t2a order by t2a desc) --- !query 44 schema -struct --- !query 44 output -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 45 -select count(distinct(*)) from t1 where t1a in (select min(t2a) from t2 group by t2c order by t2c desc) --- !query 45 schema -struct --- !query 45 output -1 - - --- !query 46 -select t1a, count(distinct(t1b)) from t1 where t1b in (select min(t2b) -from t2 where t1a = t2a group by t2a order by t2a desc) group by t1a, t1h --- !query 46 schema -struct --- !query 46 output -t1b 1 - - --- !query 47 -select t1a, t1b from t1 where t1b in (select min(t2b) from t2 -where t1a = t2a group by t2d order by t2d desc) --- !query 47 schema -struct --- !query 47 output -t1b 8 - - --- !query 48 -select * from t1 where t1b not in (select min(t2b) from t2 group by t2a order by t2a) --- !query 48 schema -struct --- !query 48 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 49 -select count(*) from t1 where t1b not in (select min(t2b) from t2 group by t2c order by t2c desc) group by t1a --- !query 49 schema -struct --- !query 49 output -1 -2 -3 - - --- !query 50 -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) group by t1a --- !query 50 schema -struct --- !query 50 output -t1a 22 -t1c 8 -t1d 10 -t1e 10 - - --- !query 51 -select count(distinct(t1a)), t1b from t1 where t1b not in (select min(t2b) from t2 -where t1a = t2a group by t2d order by t2d desc) group by t1a, t1b order by t1b desc --- !query 51 schema -struct --- !query 51 output - - - --- !query 52 -select * from t1 where t1a in (select t2a from t2 limit 2) --- !query 52 schema -struct --- !query 52 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 53 -select * from t1 where t1c in (select t2c from t2 where t2b >=8 limit 2) limit 4 --- !query 53 schema -struct --- !query 53 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 54 -select count(distinct(t1a)), t1b from t1 where t1d in (select t2d from t2 order by t2c) -group by t1b order by t1b limit 1 --- !query 54 schema -struct --- !query 54 output -1 NULL - - --- !query 55 -select * from t1 where t1a not in (select t2a from t2 limit 2) --- !query 55 schema -struct --- !query 55 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 56 -select * from t1 where t1b not in (select t2b from t2 where t2b > 6 limit 2) --- !query 56 schema -struct --- !query 56 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 - - --- !query 57 -select count(distinct(t1a)), t1b from t1 where t1d not in -(select t2d from t2 order by t2b) group by t1b limit 1 --- !query 57 schema -struct --- !query 57 output -1 NULL - - --- !query 58 -select * from t1 where t1a in (select t2a from t2 having t2c > 10) --- !query 58 schema -struct --- !query 58 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 59 -select * from t1 where t1b in (select min(t2b) from t2 where t1a = t2a group by t2b having t2b > 1) --- !query 59 schema -struct --- !query 59 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 60 -select count(distinct(t1a)), t1b from t1 where t1c in (select t2c from t2 where t1a = t2a having t2c > 10) -group by t1b having t1b >= 8 --- !query 60 schema -struct --- !query 60 output -2 8 - - --- !query 61 -select t1a, max(t1b) from t1 where t1b > 0 group by t1a having t1a in -(select t2a from t2 where t2b in (select t3b from t3 where t2c = t3c)) --- !query 61 schema -struct --- !query 61 output -t1b 8 - - --- !query 62 -select * from t1 where t1a not in (select t2a from t2 having t2c > 10) --- !query 62 schema -struct --- !query 62 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 63 -select t1a, t1b from t1 where t1d not in (select t2d from t2 where t1a = t2a having t2c > 8) --- !query 63 schema -struct --- !query 63 output -t1a 16 -t1a 16 -t1a 6 -t1a 6 -t1d 10 -t1d NULL -t1d NULL -t1e 10 -t1e 10 -t1e 10 - - --- !query 64 -select t1a, t1b from t1 where t1c not in (select t2c from t2 where t1a = t2a having t2c not in -(select t3c from t3)) group by t1a, t1b limit 2 --- !query 64 schema -struct --- !query 64 output -t1d 10 -t1e 10 - - --- !query 65 -select t1a, max(t1b) from t1 where t1b > 0 group by t1a having t1a not in (select t2a from t2 where t2b > 3) --- !query 65 schema -struct --- !query 65 output -t1a 16 -t1d 10 - - --- !query 66 -select * from t1 natural join t3 where t1a in (select t2a from t2 ) and t1b = t3b order by t1a, t1b --- !query 66 schema -struct --- !query 66 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t3b 8 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t3b 8 NULL 719 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 319 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t3b 8 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t3b 8 NULL 719 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 319 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 219 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 219 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 219 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 67 -select count(distinct(t1a)), t1b, t3a, t3b, t3c from t1 natural left join t3 where t1a -in (select t2a from t2 ) and t1b > t3b group by t1a, t1b, t3a, t3b, t3c order by t1a desc limit 2 --- !query 67 schema -struct --- !query 67 output -1 10 t3a 6 12 -1 10 t1b 8 16 - - --- !query 68 -select count(distinct(*)) from t1 natural right join t3 -where t1a in (select t2a from t2 where t1b = t2b) and t1b in (select t2b from t2 where t1c > t2c) and t1a = t3a -group by t1a order by t1a --- !query 68 schema -struct --- !query 68 output - - - --- !query 69 -select t1a, t1b, t1c, t3a, t3b, t3c from t1 full outer join t3 -where t1a in (select t2a from t2 ) and t1b != t3b order by t1a --- !query 69 schema -struct --- !query 69 output -t1b 8 16 t3a 6 12 -t1b 8 16 t3a 6 12 -t1b 8 16 t1b 10 12 -t1b 8 16 t1b 10 12 -t1b 8 16 t3c 17 16 -t1b 8 16 t3c 17 16 -t1c 8 16 t3a 6 12 -t1c 8 16 t3a 6 12 -t1c 8 16 t1b 10 12 -t1c 8 16 t1b 10 12 -t1c 8 16 t3c 17 16 -t1c 8 16 t3c 17 16 -t1e 10 NULL t3a 6 12 -t1e 10 NULL t3a 6 12 -t1e 10 NULL t1b 8 16 -t1e 10 NULL t1b 8 16 -t1e 10 NULL t3c 17 16 -t1e 10 NULL t3c 17 16 -t1e 10 NULL t3b 8 NULL -t1e 10 NULL t3b 8 NULL -t1e 10 NULL t3a 6 12 -t1e 10 NULL t3a 6 12 -t1e 10 NULL t1b 8 16 -t1e 10 NULL t1b 8 16 -t1e 10 NULL t3c 17 16 -t1e 10 NULL t3c 17 16 -t1e 10 NULL t3b 8 NULL -t1e 10 NULL t3b 8 NULL -t1e 10 NULL t3a 6 12 -t1e 10 NULL t3a 6 12 -t1e 10 NULL t1b 8 16 -t1e 10 NULL t1b 8 16 -t1e 10 NULL t3c 17 16 -t1e 10 NULL t3c 17 16 -t1e 10 NULL t3b 8 NULL -t1e 10 NULL t3b 8 NULL - - --- !query 70 -select count(distinct(t1a)), t1b from t1 full outer join t3 where t1a in (select t2a from t2 where t2h > t3h) -and t3a in (select t2a from t2 where t2c > t3c) and t1h >= t3h group by t1a, t1b order by t1a --- !query 70 schema -struct --- !query 70 output -1 8 -1 8 - - --- !query 71 -select count(*) from t1 left semi join t3 where t1a in (select t2a from t2 ) group by t1a order by t1a --- !query 71 schema -struct --- !query 71 output -1 -1 -3 - - --- !query 72 -select count(distinct(t1a)), t1b from t1 left anti join t2 on t1a > t2a where t1b in (select t2b from t2) -or t1a in (select t2a from t2) group by t1b having t1b > 1 --- !query 72 schema -struct --- !query 72 output -1 6 -1 8 - - --- !query 73 -select * from t1 where t1a in (select t2a from t2 left join t3 where t2b = t3b) --- !query 73 schema -struct --- !query 73 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 74 -select t1a, t1b from t1 where t1a in (select t2a from t2 full outer join t1 where t2b > t1b) limit 2 --- !query 74 schema -struct --- !query 74 output -t1b 8 -t1c 8 - - --- !query 75 -select count(distinct(t1a)), t1b from t1 where t1a in (select t2a from t2 cross join t1 where t2b <> t1b) and -t1h in (select t2h from t2 right join t3 where t2b = t3b) group by t1b --- !query 75 schema -struct --- !query 75 output -1 10 -2 8 - - --- !query 76 -select count(distinct(t1a)), t1b from t1 where t1a in (select t2a from t2 right join t1 where t2b <> t1b) or - t1b in (select t2b from t2 left join t1 where t2c = t1c) group by t1b --- !query 76 schema -struct --- !query 76 output -1 6 -2 10 -2 8 - - --- !query 77 -select * from t1 full outer join t2 where t1a in -(select t2a from t2 left join t3 where t2b = t3b) and t1c = t2c limit 10 --- !query 77 schema -struct --- !query 77 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 319 17.0 25.0 26 2017-05-04 00:00:00 NULL -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1c 12 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1c 12 16 219 17.0 25.0 26 2016-05-04 00:00:00 2014-04-05 - - --- !query 78 -select count(distinct(t1a)), t1b from t1 inner join t2 -where t1a in (select t2a from t2 join t3 where t2b > t3b) and -t1c in (select min(t3c) from t3 left outer join t2 group by t3a having t3a = t2a) and t1a = t2a -group by t1b order by t1b desc --- !query 78 schema -struct --- !query 78 output - - - --- !query 79 -select t1a, t1b, t1c, t2a, t2b, t2c from t1 right join t2 -where t1a in (select t2a from t2 full outer join t3 where t2b > t3b) and -t1b in ( select t3b from t3 left semi join t1 where t3c = t1c) and t1h > t2h --- !query 79 schema -struct --- !query 79 output -t1b 8 16 t2a 6 12 -t1c 8 16 t2a 6 12 - - --- !query 80 -select t1a, t1b, t1c, t2a, t2b, t2c from t1 full join t2 -where t1a in (select t2a from t2 left anti join t3 on t2b < t3b where t2c in (select t1c from t1 where t1a = t2a)) -and t1a = t2a --- !query 80 schema -struct --- !query 80 output -t1b 8 16 t1b 10 12 -t1b 8 16 t1b 10 12 -t1b 8 16 t1b 8 16 -t1b 8 16 t1b 8 16 -t1b 8 16 t1b NULL 16 -t1b 8 16 t1b NULL 16 - - --- !query 81 -select * from (select * from t3 left outer join t2 where t3a = t2a and t2a in -(select t1a from t1 where t2b = t1b)) t1 natural full outer join t2 -where t1.t2a in (select t2a from t2 left anti join t3 on t2b < t3b) and t1.t2c = t2c order by t2a, t3a desc limit 5 --- !query 81 schema -struct --- !query 81 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 419 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 t1b NULL 16 419 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 219 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 82 -select t1a, t1b, t1c, t3a, t3b, t3c from t1 natural join t3 where t1a not in (select t2a from t2 ) and t1b = t3b --- !query 82 schema -struct --- !query 82 output -t1a 6 8 t3a 6 12 -t1a 6 8 t3a 6 12 -t1a 6 8 t3a 6 12 -t1a 6 8 t3a 6 12 -t1d 10 NULL t1b 10 12 -t1d 10 NULL t1b 10 12 - - --- !query 83 -select t1a, t1b, t1c, t3a, t3b, t3c from t1 full outer join t3 -where t1a not in (select t2a from t2 where t2c not in (select t1c from t1 where t1a = t2a)) and t1b != t3b order by t1a --- !query 83 schema -struct --- !query 83 output -t1a 6 8 t1b 10 12 -t1a 6 8 t1b 10 12 -t1a 6 8 t1b 8 16 -t1a 6 8 t1b 8 16 -t1a 6 8 t3c 17 16 -t1a 6 8 t3c 17 16 -t1a 6 8 t3b 8 NULL -t1a 6 8 t3b 8 NULL -t1a 16 12 t3a 6 12 -t1a 16 12 t3a 6 12 -t1a 16 12 t1b 10 12 -t1a 16 12 t1b 10 12 -t1a 16 12 t1b 8 16 -t1a 16 12 t1b 8 16 -t1a 16 12 t3c 17 16 -t1a 16 12 t3c 17 16 -t1a 16 12 t3b 8 NULL -t1a 16 12 t3b 8 NULL -t1a 16 12 t3a 6 12 -t1a 16 12 t3a 6 12 -t1a 16 12 t1b 10 12 -t1a 16 12 t1b 10 12 -t1a 16 12 t1b 8 16 -t1a 16 12 t1b 8 16 -t1a 16 12 t3c 17 16 -t1a 16 12 t3c 17 16 -t1a 16 12 t3b 8 NULL -t1a 16 12 t3b 8 NULL -t1a 6 8 t1b 10 12 -t1a 6 8 t1b 10 12 -t1a 6 8 t1b 8 16 -t1a 6 8 t1b 8 16 -t1a 6 8 t3c 17 16 -t1a 6 8 t3c 17 16 -t1a 6 8 t3b 8 NULL -t1a 6 8 t3b 8 NULL -t1b 8 16 t3a 6 12 -t1b 8 16 t3a 6 12 -t1b 8 16 t1b 10 12 -t1b 8 16 t1b 10 12 -t1b 8 16 t3c 17 16 -t1b 8 16 t3c 17 16 -t1c 8 16 t3a 6 12 -t1c 8 16 t3a 6 12 -t1c 8 16 t1b 10 12 -t1c 8 16 t1b 10 12 -t1c 8 16 t3c 17 16 -t1c 8 16 t3c 17 16 -t1d 10 NULL t3a 6 12 -t1d 10 NULL t3a 6 12 -t1d 10 NULL t1b 8 16 -t1d 10 NULL t1b 8 16 -t1d 10 NULL t3c 17 16 -t1d 10 NULL t3c 17 16 -t1d 10 NULL t3b 8 NULL -t1d 10 NULL t3b 8 NULL -t1e 10 NULL t3a 6 12 -t1e 10 NULL t3a 6 12 -t1e 10 NULL t1b 8 16 -t1e 10 NULL t1b 8 16 -t1e 10 NULL t3c 17 16 -t1e 10 NULL t3c 17 16 -t1e 10 NULL t3b 8 NULL -t1e 10 NULL t3b 8 NULL -t1e 10 NULL t3a 6 12 -t1e 10 NULL t3a 6 12 -t1e 10 NULL t1b 8 16 -t1e 10 NULL t1b 8 16 -t1e 10 NULL t3c 17 16 -t1e 10 NULL t3c 17 16 -t1e 10 NULL t3b 8 NULL -t1e 10 NULL t3b 8 NULL -t1e 10 NULL t3a 6 12 -t1e 10 NULL t3a 6 12 -t1e 10 NULL t1b 8 16 -t1e 10 NULL t1b 8 16 -t1e 10 NULL t3c 17 16 -t1e 10 NULL t3c 17 16 -t1e 10 NULL t3b 8 NULL -t1e 10 NULL t3b 8 NULL - - --- !query 84 -select count(*) from t1 left semi join t3 where t1a not in (select t2a from t2 left outer join t3 where t2a = t3a) -group by t1a order by t1a --- !query 84 schema -struct --- !query 84 output -4 -1 -3 -3 - - --- !query 85 -select * from t1 where t1a not in (select t2a from t2 left join t3 where t2b = t3b) and t1d not in (select t2d from t2) --- !query 85 schema -struct --- !query 85 output -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL - - --- !query 86 -select count(distinct(t1a)), t1b, t1c, t1d from t1 where t1a not in (select t2a from t2 cross join t1 where t2b <> t1b) -group by t1b, t1c, t1d having t1d not in (select t2d from t2 where t1d = t2d) --- !query 86 schema -struct --- !query 86 output -1 10 NULL 12 -1 16 12 21 -1 NULL 16 22 - - --- !query 87 -select sum(distinct(t1a)), t1b, t1c, t1d from t1 where t1a not in (select t2a from t2 left semi join t1) -group by t1b, t1c, t1d having t1b < sum(t1c) --- !query 87 schema -struct --- !query 87 output -NULL 6 8 10 - - --- !query 88 -select * from t1 full outer join t2 where t1a not in (select t2a from t2 left join t3 where t2b = t3b) and t1c = t2c --- !query 88 schema -struct --- !query 88 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t2a 6 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t2a 6 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 319 17.0 25.0 26 2017-05-04 00:00:00 NULL -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1c 12 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1c 12 16 219 17.0 25.0 26 2016-05-04 00:00:00 2014-04-05 -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 319 17.0 25.0 26 2017-05-04 00:00:00 NULL -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 219 17.0 25.0 26 2016-05-04 00:00:00 2014-04-05 -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 319 17.0 25.0 26 2017-05-04 00:00:00 NULL -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 219 17.0 25.0 26 2016-05-04 00:00:00 2014-04-05 - - --- !query 89 -select * from t1 full outer join t2 where t1a not in (select t2a from t2 inner join t3 where t2b = t3b) and t1c = t2c --- !query 89 schema -struct --- !query 89 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t2a 6 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 t2a 6 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 319 17.0 25.0 26 2017-05-04 00:00:00 NULL -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1c 12 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1c 12 16 219 17.0 25.0 26 2016-05-04 00:00:00 2014-04-05 -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 319 17.0 25.0 26 2017-05-04 00:00:00 NULL -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 219 17.0 25.0 26 2016-05-04 00:00:00 2014-04-05 -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2014-04-05 -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1b NULL 16 319 17.0 25.0 26 2017-05-04 00:00:00 NULL -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL t1c 12 16 219 17.0 25.0 26 2016-05-04 00:00:00 2014-04-05 - - --- !query 90 -select t2a from (select t2a from t2 where t2a in (select t1a from t1) - union all select t2a from t2 where t2a in (select t1a from t1)) as t3 --- !query 90 schema -struct --- !query 90 output -t1b -t1b -t1b -t1b -t1b -t1b -t1b -t1b -t1b -t1b -t1b -t1b -t1c -t1c -t1c -t1c -t1e -t1e - - --- !query 91 -select t2a from (select t2a from t2 where t2a in (select t1a from t1) - union select t2a from t2 where t2a in (select t3a from t3)) as t3 --- !query 91 schema -struct --- !query 91 output -t1b -t1c -t1e - - --- !query 92 -select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) - union all select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3 --- !query 92 schema -struct --- !query 92 output -t1b -t1b -t1b -t1b -t1b -t1b -t1c -t1c - - --- !query 93 -select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) - union select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3 --- !query 93 schema -struct --- !query 93 output -t1b -t1c - - --- !query 94 -select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) - union distinct select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3 --- !query 94 schema -struct --- !query 94 output -t1b -t1c - - --- !query 95 -select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b = t2b) - intersect select t2a from t2 where t2a in (select t1a from t1 where t2c = t1c)) as t3 --- !query 95 schema -struct --- !query 95 output -t1b - - --- !query 96 -select t2a from (select t2a from t2 where t2a in (select t1a from t1 where t1b != t2b) - except select t2a from t2 where t2a in (select t3a from t3 where t2c = t3c)) as t3 --- !query 96 schema -struct --- !query 96 output -t1c -t1e - - --- !query 97 -select * from t1 where t1a in (select t3a from (select t2a t3a from t2 union all select t2a t3a from t2) as t3) --- !query 97 schema -struct --- !query 97 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 98 -select * from t1 where t1b in ( -select t2b from (select t2b from t2 where t2b > 6 union select t2b from t2 where t2b > 6) as t3) --- !query 98 schema -struct --- !query 98 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 99 -select t1a, t1b, t1c from t1 where t1b in ( -select t2b from (select t2b from t2 where t2b > 6 union distinct select t1b from t1 where t1b > 6) as t3) --- !query 99 schema -struct --- !query 99 output -t1a 16 12 -t1a 16 12 -t1b 8 16 -t1c 8 16 -t1d 10 NULL -t1e 10 NULL -t1e 10 NULL -t1e 10 NULL - - --- !query 100 -select t1a, t1b, t1c from t1 where t1b in ( -select t2b from (select t2b from t2 where t2b > 6 intersect select t1b from t1 where t1b > 6) as t3 where t2b = t1b) --- !query 100 schema -struct --- !query 100 output -t1b 8 16 -t1c 8 16 -t1d 10 NULL -t1e 10 NULL -t1e 10 NULL -t1e 10 NULL - - --- !query 101 -select t1a, t1b, t1c from t1 where t1h in ( -select t2h from (select t2h from t2 except select t3h from t3 ) as t3) --- !query 101 schema -struct --- !query 101 output -t1d 10 NULL - - --- !query 102 -select t1a, t1b, t1c from t1 where t1a in (select t3a from (select t2a t3a from t2 union all select t2a t3a from t2) - as t3) -union all -select t1a, t1b, t1c from t1 where t1a in (select t3a from (select t2a t3a from t2 union select t2a t3a from t2) - as t3) --- !query 102 schema -struct --- !query 102 output -t1b 8 16 -t1b 8 16 -t1c 8 16 -t1c 8 16 -t1e 10 NULL -t1e 10 NULL -t1e 10 NULL -t1e 10 NULL -t1e 10 NULL -t1e 10 NULL - - --- !query 103 -select t1a, t1b, t1c from t1 where t1b in ( -select t2b from (select t2b from t2 where t2b > 6 intersect select t1b from t1 where t1b > 6) as t3) -union distinct -select t1a, t1b, t1c from t1 where t1b in ( -select t2b from (select t2b from t2 where t2b > 6 except select t1b from t1 where t1b > 6) as t3 where t2b = t1b) --- !query 103 schema -struct --- !query 103 output -t1b 8 16 -t1c 8 16 -t1d 10 NULL -t1e 10 NULL - - --- !query 104 -select count(distinct t2b) from -(select t2a, t2b from (select t2a, t2b from t2 where t2h in (select t1h from t1 where t1a = t2a) - union distinct select t1a, t1b from t1 where t1h in (select t3h from t3 union select t1h from t1)) t4 - where t4.t2b in (select min(t3b) from t3 where t4.t2a = t3a)) --- !query 104 schema -struct --- !query 104 output -1 - - --- !query 105 -select t2a from (select t2a from t2 where t2a not in (select t1a from t1 union select t3a from t3) - union all select t2a from t2 where t2a not in (select t1a from t1 intersect select t2a from t2)) as t3 - where t3.t2a not in (select t1a from t1 intersect select t2a from t2) --- !query 105 schema -struct --- !query 105 output -t1f -t1f -t1f -t1f -t2a -t2a -t2e -t2e - - --- !query 106 -select t1a, t1b, t1c from t1 where t1b not in ( -select t2b from (select t2b from t2 where t2b not in (select t1b from t1) union - select t1b from t1 where t1b not in (select t3b from t3) union distinct - select t3b from t3 where t3b not in (select t2b from t2)) as t3 where t2b = t1b) --- !query 106 schema -struct --- !query 106 output -t1a 16 12 -t1a 16 12 -t1a 6 8 -t1a 6 8 -t1b 8 16 -t1c 8 16 -t1d 10 NULL -t1d NULL 16 -t1d NULL 16 -t1e 10 NULL -t1e 10 NULL -t1e 10 NULL - - --- !query 107 -select distinct(t1a), t1b, t1c from t1 where t1b not in ( -select t2b from (select t2b from t2 where t2b > 6 union distinct select t1b from t1 where t1b > 6) as t3) -union -select distinct(t1a), t1b, t1c from t1 where t1b not in ( -select t2b from (select t2b from t2 where t2b > 6 intersect select t1b from t1 where t1b > 6) as t3 where t2b = t1b) -group by t1a, t1b, t1c --- !query 107 schema -struct --- !query 107 output -t1a 16 12 -t1a 6 8 - - --- !query 108 -with cte1 as (select t1a, t1b from t1) select * from t1 where t1b in -(select cte1.t1b from cte1 where cte1.t1b > 0) --- !query 108 schema -struct --- !query 108 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 109 -with cte1 as (select t1a, t1b from t1) select t1a, t1b from t1 where t1b in -(select cte1.t1b from cte1 where cte1.t1b > 0 union select cte1.t1b from cte1 where cte1.t1b > 5) --- !query 109 schema -struct --- !query 109 output -t1a 16 -t1a 16 -t1a 6 -t1a 6 -t1b 8 -t1c 8 -t1d 10 -t1e 10 -t1e 10 -t1e 10 - - --- !query 110 -with cte1 as (select t1a, t1b from t1) select * from -(select cte1.t1b from cte1 where cte1.t1b > 0 union select cte1.t1b from cte1 where cte1.t1b > 5) s where t1b > 6 --- !query 110 schema -struct --- !query 110 output -10 -16 -8 - - --- !query 111 -with cte1 as (select t1a, t1b from t1) select distinct(*) from -(select cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1b > 5) s where t1b > 6 --- !query 111 schema -struct --- !query 111 output -10 -16 -8 - - --- !query 112 -with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) select distinct(*) from -(select cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1b > 5 and cte1.t1a = cte2.t1a) s where t1b in (8) --- !query 112 schema -struct --- !query 112 output -8 - - --- !query 113 -with cte1 as (select t1a, t1b, t1h from t1 where t1a in (select t2a from t2 where t1b < t2b)) -select count(distinct t1a), t1b from -(select cte1.t1a, cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1h >= cte2.t1h) s where t1b in (select t1b from t1) -group by t1b --- !query 113 schema -struct --- !query 113 output -2 8 - - --- !query 114 -with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) select distinct(*) from -(select cte1.t1b from cte1 left semi join cte1 cte2 on cte1.t1b > 5 and cte1.t1a != cte2.t1a) s --- !query 114 schema -struct --- !query 114 output -8 - - --- !query 115 -with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) -select count(distinct(s.t1a)), s.t1b from -(select cte1.t1a, cte1.t1b from cte1 right outer join cte1 cte2 on cte1.t1a = cte2.t1a ) s -where t1b in (8) group by s.t1b --- !query 115 schema -struct --- !query 115 output -2 8 - - --- !query 116 -with cte1 as (select t1a, t1b from t1 where t1b in (select t2b from t2 where t1c = t2c)) select distinct(*) from -(select cte1.t1b from cte1 left outer join cte1 cte2 on cte1.t1b = cte2.t1b) s -where s.t1b in (select t1b from t1 left semi join cte1 on t1.t1a = cte1.t1a) --- !query 116 schema -struct --- !query 116 output -8 - - --- !query 117 -with cte1 as (select t1a, t1b from t1) select * from t1 where t1b not in (select cte1.t1b from cte1 where cte1.t1b < 0) --- !query 117 schema -struct --- !query 117 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 118 -with cte1 as (select t1a, t1b from t1 where t1a not in (select t2a from t2)) select distinct(*) from -(select cte1.t1b from cte1 cross join cte1 cte2) s --- !query 118 schema -struct --- !query 118 output -10 -16 -6 -NULL - - --- !query 119 -with cte1 as (select t1a, t1b, t1c, t1h from t1 where t1d not in (select t2d from t2)) select * from -(select cte1.t1b, cte1.t1c, cte1.t1h from cte1 full outer join cte1 cte2 where cte1.t1h = cte2.t1h) s where s.t1h -not in (select t3h from t3) --- !query 119 schema -struct --- !query 119 output -10 NULL 2015-05-04 00:00:00 - - --- !query 120 -select * from t1 where (t1a, t1h) not in -(select t2a, t2h from t2 where t2a = t1a order by t2a) --- !query 120 schema -struct --- !query 120 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 -t1d NULL 16 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1d NULL 16 22 17.0 25.0 26 2014-05-04 00:00:00 NULL - - --- !query 121 -select * from t1 where (t1b, t1d) in (select t2b, t2d from t2 where t2h in (select t3h from t3 where t2b > t3b)) --- !query 121 schema -struct --- !query 121 output -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 122 -select * from t1 where (t1b, t1d) not in (select t2b, t2d from t2 where t2h in (select t3h from t3 where t2b > t3b)) --- !query 122 schema -struct --- !query 122 output -t1a 16 12 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 16 12 21 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-04-05 -t1e 10 NULL 25 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 - - --- !query 123 -select t2a from (select t2a from t2 where (t2a, t2b) in (select t1a, t1b from t1) union all - select t2a from t2 where (t2a, t2b) in (select t1a, t1b from t1) union distinct - select t2a from t2 where (t2a, t2b) in (select t3a, t3b from t3)) as t4 --- !query 123 schema -struct --- !query 123 output -t1b - - --- !query 124 -select * from (select * from t3 left outer join t2 where t3a = t2a and (t2a, t2b) in -(select t1a, t1b from t1 where t2b = t1b)) t1 natural full outer join t2 -where (t1.t2a, t1.t2b) not in (select t2a, t2b from t2 left anti join t3 on t2a = t3a) order by t2a, t3a desc limit 5 --- !query 124 schema -struct --- !query 124 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 219 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 10 12 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 319 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-04-05 t1b NULL 16 419 17.0 25.0 26 2014-05-04 00:00:00 NULL - - --- !query 125 -with cte1 as (select t1a, t1b from t1 where (t1b, t1d) in (select t2b, t2d from t2 where t1c = t2c)) -select distinct(*) from (select cte1.t1b from cte1 cross join cte1 cte2 on cte1.t1b > 5) s where t1b in (8) --- !query 125 schema -struct --- !query 125 output -8 - - --- !query 126 -DROP TABLE t1 --- !query 126 schema -struct<> --- !query 126 output - - - --- !query 127 -DROP TABLE t2 --- !query 127 schema -struct<> --- !query 127 output - - - --- !query 128 -DROP TABLE t3 --- !query 128 schema -struct<> --- !query 128 output - - - --- !query 129 -USE default --- !query 129 schema -struct<> --- !query 129 output - - - --- !query 130 -DROP DATABASE indb --- !query 130 schema -struct<> --- !query 130 output - diff --git a/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/in-group-by.sql.out b/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/in-group-by.sql.out new file mode 100644 index 000000000000..f152dc5198db --- /dev/null +++ b/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/in-group-by.sql.out @@ -0,0 +1,321 @@ +-- Automatically generated by SQLQueryTestSuite +-- Number of queries: 30 + + +-- !query 0 +CREATE DATABASE indb +-- !query 0 schema +struct<> +-- !query 0 output + + + +-- !query 1 +CREATE TABLE t1(t1a String, t1b Short, t1c Int, t1d Long, t1e float, t1f double, t1g DECIMAL, t1h TIMESTAMP, t1i Date) +using parquet +-- !query 1 schema +struct<> +-- !query 1 output + + + +-- !query 2 +CREATE TABLE t2(t2a String, t2b Short, t2c Int, t2d Long, t2e float, t2f double, t2g DECIMAL, t2h TIMESTAMP, t2i Date) +using parquet +-- !query 2 schema +struct<> +-- !query 2 output + + + +-- !query 3 +CREATE TABLE t3(t3a String, t3b Short, t3c Int, t3d Long, t3e float, t3f double, t3g DECIMAL, t3h TIMESTAMP, t3i Date) +using parquet +-- !query 3 schema +struct<> +-- !query 3 output + + + +-- !query 4 +INSERT INTO t1 VALUES + ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1a', 16, 12, 21, 15, 20, 20.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1a', 16, 12, 10, 15, 20, 20.00, timestamp(date("2014-07-04")), date("2014-07-04")), + ('t1c', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-05")), + ('t1d', null, 16, 22, 17, 25, 26.00, timestamp(date("2014-06-04")), null), + ('t1d', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), null), + ('t1e', 10, null, 25, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), + ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), + ('t1d', 10, null, 12, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), + ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-0=4")) +-- !query 4 schema +struct<> +-- !query 4 output + + + +-- !query 5 +INSERT INTO t2 VALUES + ('t2a', 6, 12, 14, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 8, 16, 119, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), + ('t1c', 12, 16, 219, 17, 25, 26.00, timestamp(date("2016-05-04")), date("2016-05-04")), + ('t1b', null, 16, 319, 17, 25, 26.00, timestamp(date("2017-05-04")), null), + ('t2e', 8, null, 419, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1f', 19, null, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), + ('t1c', 12, 16, 19, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-05")), + ('t1e', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), + ('t1f', 19, null, 19, 17, 25, 26.00, timestamp(date("2014-10-04")), date("2014-10-04")), + ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null) +-- !query 5 schema +struct<> +-- !query 5 output + + + +-- !query 6 +INSERT INTO t3 VALUES + ('t3a', 6, 12, 110, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t3a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 10, 12, 219, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 8, 16, 319, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), + ('t3c', 17, 16, 519, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), + ('t3c', 17, 16, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-05")), + ('t1b', null, 16, 419, 17, 25, 26.00, timestamp(date("2014-10-04")), null), + ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-11-04")), null), + ('t3b', 8, null, 719, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t3b', 8, null, 19, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")) +-- !query 6 schema +struct<> +-- !query 6 output + + + +-- !query 7 +select t1a, avg(t1b) from t1 where t1a in (select t2a from t2) group by t1a +-- !query 7 schema +struct +-- !query 7 output +t1b 8.0 +t1c 8.0 +t1e 10.0 + + +-- !query 8 +select t1a, max(t1b) from t1 where t1b in (select t2b from t2 where t1a = t2a) group by t1a, t1d +-- !query 8 schema +struct +-- !query 8 output +t1b 8 + + +-- !query 9 +select t1a, t1b from t1 where t1c in (select t2c from t2 where t1a = t2a) group by t1a, t1b +-- !query 9 schema +struct +-- !query 9 output +t1b 8 +t1c 8 + + +-- !query 10 +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 +-- !query 10 schema +struct +-- !query 10 output +t1b 8 +t1c 8 + + +-- !query 11 +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 +-- !query 11 schema +struct +-- !query 11 output +t1b 8 + + +-- !query 12 +select t1a, count(distinct(t1b)) from t1 where t1c in (select t2c from t2 where t1a = t2a) +group by t1a, t1c having t1a = "t1b" +-- !query 12 schema +struct +-- !query 12 output +t1b 1 + + +-- !query 13 +select * from t1 where t1b in (select max(t2b) from t2 group by t2a) +-- !query 13 schema +struct +-- !query 13 output +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-05-04 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-05-05 +t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-05-04 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1e 10 NULL 19 17.0 25.0 26 2014-09-04 00:00:00 2014-09-04 +t1e 10 NULL 25 17.0 25.0 26 2014-08-04 00:00:00 2014-08-04 + + +-- !query 14 +select * from (select t2a, t2b from t2 where t2a in (select t1a from t1 where t1b = t2b) group by t2a, t2b) t2 +-- !query 14 schema +struct +-- !query 14 output +t1b 8 + + +-- !query 15 +select count(distinct(*)) from t1 where t1b in (select min(t2b) from t2 where t1a = t2a and t1c = t2c group by t2a) +-- !query 15 schema +struct +-- !query 15 output +1 + + +-- !query 16 +select t1a, t1b from t1 where t1c in (select max(t2c) from t2 where t1a = t2a group by t2a, t2c having t2c > 8) +-- !query 16 schema +struct +-- !query 16 output +t1b 8 +t1c 8 + + +-- !query 17 +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) +-- !query 17 schema +struct +-- !query 17 output +t1a 16 +t1a 16 +t1b 8 +t1c 8 +t1d NULL +t1d NULL + + +-- !query 18 +select * from t1 where t1a in +(select min(t2a) from t2 where t2a = t2a and t2c >= 1 group by t2c having t2c in +(select t3c from t3 group by t3c, t3b having t2b > 6 and t3b > t2b )) +-- !query 18 schema +struct +-- !query 18 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-05-04 + + +-- !query 19 +select * from (select * from t2 where t2a in (select t1a from t1 where t1b = t2b)) t2 where t2a in +(select t2a from t2 where t2a = t2a and t2c > 1 group by t2a having t2c > 8) +-- !query 19 schema +struct +-- !query 19 output +t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2015-05-04 +t1b 8 16 19 17.0 25.0 26 2014-07-04 00:00:00 2014-07-04 + + +-- !query 20 +select t1a, min(t1b) from t1 where t1c in (select min(t2c) from t2 where t2b = t1b group by t2a) group by t1a +-- !query 20 schema +struct +-- !query 20 output +t1b 8 +t1c 8 + + +-- !query 21 +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 +-- !query 21 schema +struct +-- !query 21 output +t1b 8 +t1c 8 +t1d NULL +t1d NULL + + +-- !query 22 +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 +-- !query 22 schema +struct +-- !query 22 output +t1b 8 +t1c 8 + + +-- !query 23 +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 +-- !query 23 schema +struct +-- !query 23 output +t1a 16 +t1b 8 +t1c 8 +t1d NULL + + +-- !query 24 +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 +-- !query 24 schema +struct +-- !query 24 output +t1a 16 +t1b 8 +t1c 8 + + +-- !query 25 +DROP TABLE t1 +-- !query 25 schema +struct<> +-- !query 25 output + + + +-- !query 26 +DROP TABLE t2 +-- !query 26 schema +struct<> +-- !query 26 output + + + +-- !query 27 +DROP TABLE t3 +-- !query 27 schema +struct<> +-- !query 27 output + + + +-- !query 28 +USE default +-- !query 28 schema +struct<> +-- !query 28 output + + + +-- !query 29 +DROP DATABASE indb +-- !query 29 schema +struct<> +-- !query 29 output + diff --git a/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out b/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out new file mode 100644 index 000000000000..ba76de680874 --- /dev/null +++ b/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out @@ -0,0 +1,262 @@ +-- Automatically generated by SQLQueryTestSuite +-- Number of queries: 23 + + +-- !query 0 +CREATE DATABASE indb +-- !query 0 schema +struct<> +-- !query 0 output + + + +-- !query 1 +CREATE TABLE t1(t1a String, t1b Short, t1c Int, t1d Long, t1e float, t1f double, t1g DECIMAL, t1h TIMESTAMP, t1i Date) +using parquet +-- !query 1 schema +struct<> +-- !query 1 output + + + +-- !query 2 +CREATE TABLE t2(t2a String, t2b Short, t2c Int, t2d Long, t2e float, t2f double, t2g DECIMAL, t2h TIMESTAMP, t2i Date) +using parquet +-- !query 2 schema +struct<> +-- !query 2 output + + + +-- !query 3 +CREATE TABLE t3(t3a String, t3b Short, t3c Int, t3d Long, t3e float, t3f double, t3g DECIMAL, t3h TIMESTAMP, t3i Date) +using parquet +-- !query 3 schema +struct<> +-- !query 3 output + + + +-- !query 4 +INSERT INTO t1 VALUES + ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1a', 16, 12, 21, 15, 20, 20.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1a', 16, 12, 10, 15, 20, 20.00, timestamp(date("2014-07-04")), date("2014-07-04")), + ('t1c', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-05")), + ('t1d', null, 16, 22, 17, 25, 26.00, timestamp(date("2014-06-04")), null), + ('t1d', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), null), + ('t1e', 10, null, 25, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), + ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), + ('t1d', 10, null, 12, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), + ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-0=4")) +-- !query 4 schema +struct<> +-- !query 4 output + + + +-- !query 5 +INSERT INTO t2 VALUES + ('t2a', 6, 12, 14, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 8, 16, 119, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), + ('t1c', 12, 16, 219, 17, 25, 26.00, timestamp(date("2016-05-04")), date("2016-05-04")), + ('t1b', null, 16, 319, 17, 25, 26.00, timestamp(date("2017-05-04")), null), + ('t2e', 8, null, 419, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1f', 19, null, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), + ('t1c', 12, 16, 19, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-05")), + ('t1e', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), + ('t1f', 19, null, 19, 17, 25, 26.00, timestamp(date("2014-10-04")), date("2014-10-04")), + ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null) +-- !query 5 schema +struct<> +-- !query 5 output + + + +-- !query 6 +INSERT INTO t3 VALUES + ('t3a', 6, 12, 110, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), + ('t3a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 10, 12, 219, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t1b', 8, 16, 319, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), + ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), + ('t3c', 17, 16, 519, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), + ('t3c', 17, 16, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-05")), + ('t1b', null, 16, 419, 17, 25, 26.00, timestamp(date("2014-10-04")), null), + ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-11-04")), null), + ('t3b', 8, null, 719, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), + ('t3b', 8, null, 19, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")) +-- !query 6 schema +struct<> +-- !query 6 output + + + +-- !query 7 +select * from t1 where t1a in (select t2a from t2) +-- !query 7 schema +struct +-- !query 7 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-05-04 +t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-05-05 +t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 NULL +t1e 10 NULL 19 17.0 25.0 26 2014-09-04 00:00:00 2014-09-04 +t1e 10 NULL 25 17.0 25.0 26 2014-08-04 00:00:00 2014-08-04 + + +-- !query 8 +select * from t1 where t1b in (select t2b from t2 where t1a = t2a) +-- !query 8 schema +struct +-- !query 8 output +t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-05-04 + + +-- !query 9 +select t1a, t1b from t1 where t1c in (select t2b from t2 where t1a != t2a) +-- !query 9 schema +struct +-- !query 9 output +t1a 16 +t1a 16 +t1a 6 +t1a 6 + + +-- !query 10 +select t1a, t1b from t1 where t1c in (select t2b from t2 where t1a = t2a or t1b > t2b) +-- !query 10 schema +struct +-- !query 10 output +t1a 16 +t1a 16 + + +-- !query 11 +select t1a, t1b from t1 where t1c in (select t2b from t2 where t2i in (select t3i from t3 where t2c = t3c)) +-- !query 11 schema +struct +-- !query 11 output +t1a 6 +t1a 6 + + +-- !query 12 +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)) +-- !query 12 schema +struct +-- !query 12 output +t1a 6 +t1a 6 + + +-- !query 13 +select distinct(t1a), t1b, t1h from t1 where t1a not in (select t2a from t2) +-- !query 13 schema +struct +-- !query 13 output +t1a 16 2014-06-04 00:00:00 +t1a 16 2014-07-04 00:00:00 +t1a 6 2014-04-04 00:00:00 +t1d 10 2015-05-04 00:00:00 +t1d NULL 2014-06-04 00:00:00 +t1d NULL 2014-07-04 00:00:00 + + +-- !query 14 +select t1d, t1h, t1i from t1 where t1d not in (select t2d from t2 where t2h > t1h or t2i > t1i) +-- !query 14 schema +struct +-- !query 14 output +10 2014-04-04 00:00:00 2014-04-04 +10 2014-04-04 00:00:00 2014-04-04 + + +-- !query 15 +select distinct(t1a), t1b from t1 where t1b not in (select t2b from t2 where t1a < t2a and t2b > 8) +-- !query 15 schema +struct +-- !query 15 output +t1a 16 +t1a 6 +t1b 8 +t1c 8 +t1d 10 +t1e 10 + + +-- !query 16 +select t1a, t1b from t1 where t1c not in (select t2b from t2 where t2a not in + (select t3a from t3 where t2c = t3c and t2b is NULL)) +-- !query 16 schema +struct +-- !query 16 output +t1a 16 +t1a 16 +t1a 6 +t1a 6 +t1b 8 +t1c 8 +t1d 10 +t1d NULL +t1d NULL +t1e 10 +t1e 10 +t1e 10 + + +-- !query 17 +select t1a, t1b from t1 where t1h not in (select t2h from t2 where t2a = t1a) and t1b not in ( + (select min(t3b) from t3 where t3d = t1d)) +-- !query 17 schema +struct +-- !query 17 output +t1a 16 +t1e 10 + + +-- !query 18 +DROP TABLE t1 +-- !query 18 schema +struct<> +-- !query 18 output + + + +-- !query 19 +DROP TABLE t2 +-- !query 19 schema +struct<> +-- !query 19 output + + + +-- !query 20 +DROP TABLE t3 +-- !query 20 schema +struct<> +-- !query 20 output + + + +-- !query 21 +USE default +-- !query 21 schema +struct<> +-- !query 21 output + + + +-- !query 22 +DROP DATABASE indb +-- !query 22 schema +struct<> +-- !query 22 output + From 1c1900a261b12e95a8a53892017294df3c21b317 Mon Sep 17 00:00:00 2001 From: Kevin Yu Date: Thu, 22 Dec 2016 15:12:37 -0800 Subject: [PATCH 09/11] comment out 4 test cases --- .../subquery/in-subquery/in-group-by.sql | 16 ++-- .../inputs/subquery/in-subquery/simple-in.sql | 10 +-- .../subquery/in-subquery/in-group-by.sql.out | 80 +++++++------------ .../subquery/in-subquery/simple-in.sql.out | 69 +++++----------- 4 files changed, 63 insertions(+), 112 deletions(-) diff --git a/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/in-group-by.sql b/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/in-group-by.sql index 8efc275609f3..cc77a3f2a013 100644 --- a/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/in-group-by.sql +++ b/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/in-group-by.sql @@ -84,14 +84,14 @@ select count(distinct(*)) from t1 where t1b in (select min(t2b) from t2 where t1 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); --- TC 01.12 -select * from t1 where t1a in -(select min(t2a) from t2 where t2a = t2a and t2c >= 1 group by t2c having t2c in -(select t3c from t3 group by t3c, t3b having t2b > 6 and t3b > t2b )); --- TC 01.13 -select * from (select * from t2 where t2a in (select t1a from t1 where t1b = t2b)) t2 where t2a in -(select t2a from t2 where t2a = t2a and t2c > 1 group by t2a having t2c > 8); +(select min(t3a) from t3 where t3a = t2a group by t3b) group by t2c); +-- TC 01.12, comment out pending SPARK-18863 +--select * from t1 where t1a in +--(select min(t2a) from t2 where t2a = t2a and t2c >= 1 group by t2c having t2c in +--(select t3c from t3 group by t3c, t3b having t2b > 6 and t3b > t2b )); +-- TC 01.13, comment out pending SPARK-18863 +--select * from (select * from t2 where t2a in (select t1a from t1 where t1b = t2b)) t2 where t2a in +--(select t2a from t2 where t2a = t2a and t2c > 1 group by t2a having t2c > 8); -- GROUP BY in both -- TC 01.14 diff --git a/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql b/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql index 69b811b3c0de..2bdb73652cb3 100644 --- a/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql +++ b/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql @@ -73,13 +73,13 @@ select t1a, t1b from t1 where t1c in (select t2b from t2 where t2a in -- simple select for NOT IN -- TC 01.07 select distinct(t1a), t1b, t1h from t1 where t1a not in (select t2a from t2); --- TC 01.08 -select t1d, t1h, t1i from t1 where t1d not in (select t2d from t2 where t2h > t1h or t2i > t1i); +-- TC 01.08, comment out pending on SPARK-18966 +--select t1d, t1h, t1i from t1 where t1d not in (select t2d from t2 where t2h > t1h or t2i > t1i); -- TC 01.09 select distinct(t1a), t1b from t1 where t1b not in (select t2b from t2 where t1a < t2a and t2b > 8); --- TC 01.10 -select t1a, t1b from t1 where t1c not in (select t2b from t2 where t2a not in - (select t3a from t3 where t2c = t3c and t2b is NULL)); +-- TC 01.10, comment out pending on SPARK-18966 +--select t1a, t1b from t1 where t1c not in (select t2b from t2 where t2a not in +-- (select t3a from t3 where t2c = t3c and t2b is NULL)); -- TC 01.11 select t1a, t1b from t1 where t1h not in (select t2h from t2 where t2a = t1a) and t1b not in ( (select min(t3b) from t3 where t3d = t1d)); diff --git a/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/in-group-by.sql.out b/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/in-group-by.sql.out index f152dc5198db..cacc0e4a28a5 100644 --- a/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/in-group-by.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/in-group-by.sql.out @@ -1,5 +1,5 @@ -- Automatically generated by SQLQueryTestSuite --- Number of queries: 30 +-- Number of queries: 28 -- !query 0 @@ -195,7 +195,7 @@ t1c 8 -- !query 17 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) +(select min(t3a) from t3 where t3a = t2a group by t3b) group by t2c) -- !query 17 schema struct -- !query 17 output @@ -208,27 +208,29 @@ t1d NULL -- !query 18 -select * from t1 where t1a in -(select min(t2a) from t2 where t2a = t2a and t2c >= 1 group by t2c having t2c in -(select t3c from t3 group by t3c, t3b having t2b > 6 and t3b > t2b )) +select t1a, min(t1b) from t1 where t1c in (select min(t2c) from t2 where t2b = t1b group by t2a) group by t1a -- !query 18 schema -struct +struct -- !query 18 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-05-04 +t1b 8 +t1c 8 -- !query 19 -select * from (select * from t2 where t2a in (select t1a from t1 where t1b = t2b)) t2 where t2a in -(select t2a from t2 where t2a = t2a and t2c > 1 group by t2a having t2c > 8) +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 -- !query 19 schema -struct +struct -- !query 19 output -t1b 8 16 119 17.0 25.0 26 2015-05-04 00:00:00 2015-05-04 -t1b 8 16 19 17.0 25.0 26 2014-07-04 00:00:00 2014-07-04 +t1b 8 +t1c 8 +t1d NULL +t1d NULL -- !query 20 -select t1a, min(t1b) from t1 where t1c in (select min(t2c) from t2 where t2b = t1b group by t2a) group by t1a +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 -- !query 20 schema struct -- !query 20 output @@ -237,52 +239,46 @@ t1c 8 -- !query 21 -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 +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 -- !query 21 schema struct -- !query 21 output +t1a 16 t1b 8 t1c 8 t1d NULL -t1d NULL -- !query 22 -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 +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 -- !query 22 schema struct -- !query 22 output +t1a 16 t1b 8 t1c 8 -- !query 23 -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 +DROP TABLE t1 -- !query 23 schema -struct +struct<> -- !query 23 output -t1a 16 -t1b 8 -t1c 8 -t1d NULL + -- !query 24 -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 +DROP TABLE t2 -- !query 24 schema -struct +struct<> -- !query 24 output -t1a 16 -t1b 8 -t1c 8 + -- !query 25 -DROP TABLE t1 +DROP TABLE t3 -- !query 25 schema struct<> -- !query 25 output @@ -290,7 +286,7 @@ struct<> -- !query 26 -DROP TABLE t2 +USE default -- !query 26 schema struct<> -- !query 26 output @@ -298,24 +294,8 @@ struct<> -- !query 27 -DROP TABLE t3 +DROP DATABASE indb -- !query 27 schema struct<> -- !query 27 output - - --- !query 28 -USE default --- !query 28 schema -struct<> --- !query 28 output - - - --- !query 29 -DROP DATABASE indb --- !query 29 schema -struct<> --- !query 29 output - diff --git a/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out b/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out index ba76de680874..fdcaacc0ccfe 100644 --- a/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out @@ -1,5 +1,5 @@ -- Automatically generated by SQLQueryTestSuite --- Number of queries: 23 +-- Number of queries: 21 -- !query 0 @@ -171,59 +171,46 @@ t1d NULL 2014-07-04 00:00:00 -- !query 14 -select t1d, t1h, t1i from t1 where t1d not in (select t2d from t2 where t2h > t1h or t2i > t1i) +select distinct(t1a), t1b from t1 where t1b not in (select t2b from t2 where t1a < t2a and t2b > 8) -- !query 14 schema -struct +struct -- !query 14 output -10 2014-04-04 00:00:00 2014-04-04 -10 2014-04-04 00:00:00 2014-04-04 +t1a 16 +t1a 6 +t1b 8 +t1c 8 +t1d 10 +t1e 10 -- !query 15 -select distinct(t1a), t1b from t1 where t1b not in (select t2b from t2 where t1a < t2a and t2b > 8) +select t1a, t1b from t1 where t1h not in (select t2h from t2 where t2a = t1a) and t1b not in ( + (select min(t3b) from t3 where t3d = t1d)) -- !query 15 schema struct -- !query 15 output t1a 16 -t1a 6 -t1b 8 -t1c 8 -t1d 10 t1e 10 -- !query 16 -select t1a, t1b from t1 where t1c not in (select t2b from t2 where t2a not in - (select t3a from t3 where t2c = t3c and t2b is NULL)) +DROP TABLE t1 -- !query 16 schema -struct +struct<> -- !query 16 output -t1a 16 -t1a 16 -t1a 6 -t1a 6 -t1b 8 -t1c 8 -t1d 10 -t1d NULL -t1d NULL -t1e 10 -t1e 10 -t1e 10 + -- !query 17 -select t1a, t1b from t1 where t1h not in (select t2h from t2 where t2a = t1a) and t1b not in ( - (select min(t3b) from t3 where t3d = t1d)) +DROP TABLE t2 -- !query 17 schema -struct +struct<> -- !query 17 output -t1a 16 -t1e 10 + -- !query 18 -DROP TABLE t1 +DROP TABLE t3 -- !query 18 schema struct<> -- !query 18 output @@ -231,7 +218,7 @@ struct<> -- !query 19 -DROP TABLE t2 +USE default -- !query 19 schema struct<> -- !query 19 output @@ -239,24 +226,8 @@ struct<> -- !query 20 -DROP TABLE t3 +DROP DATABASE indb -- !query 20 schema struct<> -- !query 20 output - - --- !query 21 -USE default --- !query 21 schema -struct<> --- !query 21 output - - - --- !query 22 -DROP DATABASE indb --- !query 22 schema -struct<> --- !query 22 output - From 7c129d995cb62c2ec8ce8224cadfb6558b5cd93f Mon Sep 17 00:00:00 2001 From: Kevin Yu Date: Sat, 31 Dec 2016 17:19:50 -0800 Subject: [PATCH 10/11] address comments --- .../subquery/in-subquery/in-group-by.sql | 308 +++++++++---- .../inputs/subquery/in-subquery/simple-in.sql | 188 +++++--- .../subquery/in-subquery/in-group-by.sql.out | 430 ++++++++++-------- .../subquery/in-subquery/simple-in.sql.out | 298 ++++++------ 4 files changed, 711 insertions(+), 513 deletions(-) diff --git a/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/in-group-by.sql b/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/in-group-by.sql index cc77a3f2a013..b1d96b32c247 100644 --- a/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/in-group-by.sql +++ b/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/in-group-by.sql @@ -1,117 +1,239 @@ -- A test suite for GROUP BY in parent side, subquery, and both predicate subquery -- It includes correlated cases. --- tables and data types - -CREATE DATABASE indb; -CREATE TABLE t1(t1a String, t1b Short, t1c Int, t1d Long, t1e float, t1f double, t1g DECIMAL, t1h TIMESTAMP, t1i Date) -using parquet; -CREATE TABLE t2(t2a String, t2b Short, t2c Int, t2d Long, t2e float, t2f double, t2g DECIMAL, t2h TIMESTAMP, t2i Date) -using parquet; -CREATE TABLE t3(t3a String, t3b Short, t3c Int, t3d Long, t3e float, t3f double, t3g DECIMAL, t3h TIMESTAMP, t3i Date) -using parquet; - --- insert to tables -INSERT INTO t1 VALUES - ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1a', 16, 12, 21, 15, 20, 20.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1a', 16, 12, 10, 15, 20, 20.00, timestamp(date("2014-07-04")), date("2014-07-04")), - ('t1c', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-05")), - ('t1d', null, 16, 22, 17, 25, 26.00, timestamp(date("2014-06-04")), null), - ('t1d', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), null), - ('t1e', 10, null, 25, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), - ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), - ('t1d', 10, null, 12, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), - ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-0=4")); - -INSERT INTO t2 VALUES - ('t2a', 6, 12, 14, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 8, 16, 119, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), - ('t1c', 12, 16, 219, 17, 25, 26.00, timestamp(date("2016-05-04")), date("2016-05-04")), - ('t1b', null, 16, 319, 17, 25, 26.00, timestamp(date("2017-05-04")), null), - ('t2e', 8, null, 419, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1f', 19, null, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), - ('t1c', 12, 16, 19, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-05")), - ('t1e', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), - ('t1f', 19, null, 19, 17, 25, 26.00, timestamp(date("2014-10-04")), date("2014-10-04")), - ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null); - -INSERT INTO t3 VALUES - ('t3a', 6, 12, 110, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t3a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 10, 12, 219, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 8, 16, 319, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), - ('t3c', 17, 16, 519, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), - ('t3c', 17, 16, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-05")), - ('t1b', null, 16, 419, 17, 25, 26.00, timestamp(date("2014-10-04")), null), - ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-11-04")), null), - ('t3b', 8, null, 719, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t3b', 8, null, 19, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")); +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; +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; +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; +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; +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; +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"; +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); +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; +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); +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); +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); --- TC 01.12, comment out pending SPARK-18863 ---select * from t1 where t1a in ---(select min(t2a) from t2 where t2a = t2a and t2c >= 1 group by t2c having t2c in ---(select t3c from t3 group by t3c, t3b having t2b > 6 and t3b > t2b )); --- TC 01.13, comment out pending SPARK-18863 ---select * from (select * from t2 where t2a in (select t1a from t1 where t1b = t2b)) t2 where t2a in ---(select t2a from t2 where t2a = t2a and t2c > 1 group by t2a having t2c > 8); +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) group by t1a; +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 in (select min(t3b) from t3 -where t2a = t3a group by t3a) group by t2c) group by t1a, t1d; +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) and -t1d in (select t3d from t3 where t1c = t3c group by t3d) group by t1a; --- TC 01.17 -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.18 -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; - --- Clean Up -DROP TABLE t1; -DROP TABLE t2; -DROP TABLE t3; -USE default; -DROP DATABASE indb; \ No newline at end of file +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; + + + diff --git a/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql b/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql index 2bdb73652cb3..c244ce26fb39 100644 --- a/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql +++ b/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql @@ -1,92 +1,132 @@ -- A test suite for simple IN predicate subquery -- It includes correlated cases. --- tables and data types +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 DATABASE indb; -CREATE TABLE t1(t1a String, t1b Short, t1c Int, t1d Long, t1e float, t1f double, t1g DECIMAL, t1h TIMESTAMP, t1i Date) -using parquet; -CREATE TABLE t2(t2a String, t2b Short, t2c Int, t2d Long, t2e float, t2f double, t2g DECIMAL, t2h TIMESTAMP, t2i Date) -using parquet; -CREATE TABLE t3(t3a String, t3b Short, t3c Int, t3d Long, t3e float, t3f double, t3g DECIMAL, t3h TIMESTAMP, t3i Date) -using parquet; +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); --- insert to tables -INSERT INTO t1 VALUES - ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1a', 16, 12, 21, 15, 20, 20.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1a', 16, 12, 10, 15, 20, 20.00, timestamp(date("2014-07-04")), date("2014-07-04")), - ('t1c', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-05")), - ('t1d', null, 16, 22, 17, 25, 26.00, timestamp(date("2014-06-04")), null), - ('t1d', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), null), - ('t1e', 10, null, 25, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), - ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), - ('t1d', 10, null, 12, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), - ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-0=4")); - -INSERT INTO t2 VALUES - ('t2a', 6, 12, 14, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 8, 16, 119, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), - ('t1c', 12, 16, 219, 17, 25, 26.00, timestamp(date("2016-05-04")), date("2016-05-04")), - ('t1b', null, 16, 319, 17, 25, 26.00, timestamp(date("2017-05-04")), null), - ('t2e', 8, null, 419, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1f', 19, null, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), - ('t1c', 12, 16, 19, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-05")), - ('t1e', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), - ('t1f', 19, null, 19, 17, 25, 26.00, timestamp(date("2014-10-04")), date("2014-10-04")), - ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null); - -INSERT INTO t3 VALUES - ('t3a', 6, 12, 110, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t3a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 10, 12, 219, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 8, 16, 319, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), - ('t3c', 17, 16, 519, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), - ('t3c', 17, 16, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-05")), - ('t1b', null, 16, 419, 17, 25, 26.00, timestamp(date("2014-10-04")), null), - ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-11-04")), null), - ('t3b', 8, null, 719, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t3b', 8, null, 19, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")); +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); +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); +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); +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); +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)); +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)); +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); --- TC 01.08, comment out pending on SPARK-18966 ---select t1d, t1h, t1i from t1 where t1d not in (select t2d from t2 where t2h > t1h or t2i > t1i); +SELECT DISTINCT( t1a ), + t1b, + t1h +FROM t1 +WHERE t1a NOT IN (SELECT t2a + FROM t2); + + +-- TC 01.08 +SELECT DISTINCT( t1a ), + t1b +FROM t1 +WHERE t1b NOT IN (SELECT t2b + FROM t2 + WHERE t1a < t2a + AND t2b > 8); + -- TC 01.09 -select distinct(t1a), t1b from t1 where t1b not in (select t2b from t2 where t1a < t2a and t2b > 8); --- TC 01.10, comment out pending on SPARK-18966 ---select t1a, t1b from t1 where t1c not in (select t2b from t2 where t2a not in --- (select t3a from t3 where t2c = t3c and t2b is NULL)); --- TC 01.11 -select t1a, t1b from t1 where t1h not in (select t2h from t2 where t2a = t1a) and t1b not in ( - (select min(t3b) from t3 where t3d = t1d)); +SELECT t1a, + t1b +FROM t1 +WHERE t1h NOT IN (SELECT t2h + FROM t2 + WHERE t2a = t1a) + AND t1b NOT IN ((SELECT Min(t3b) + FROM t3 + WHERE t3d = t1d)); --- Clean Up -DROP TABLE t1; -DROP TABLE t2; -DROP TABLE t3; -USE default; -DROP DATABASE indb; \ No newline at end of file diff --git a/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/in-group-by.sql.out b/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/in-group-by.sql.out index cacc0e4a28a5..a159aa81eff1 100644 --- a/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/in-group-by.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/in-group-by.sql.out @@ -1,9 +1,22 @@ -- Automatically generated by SQLQueryTestSuite --- Number of queries: 28 +-- Number of queries: 19 -- !query 0 -CREATE DATABASE indb +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) -- !query 0 schema struct<> -- !query 0 output @@ -11,8 +24,21 @@ struct<> -- !query 1 -CREATE TABLE t1(t1a String, t1b Short, t1c Int, t1d Long, t1e float, t1f double, t1g DECIMAL, t1h TIMESTAMP, t1i Date) -using parquet +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) -- !query 1 schema struct<> -- !query 1 output @@ -20,8 +46,20 @@ struct<> -- !query 2 -CREATE TABLE t2(t2a String, t2b Short, t2c Int, t2d Long, t2e float, t2f double, t2g DECIMAL, t2h TIMESTAMP, t2i Date) -using parquet +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) -- !query 2 schema struct<> -- !query 2 output @@ -29,176 +67,184 @@ struct<> -- !query 3 -CREATE TABLE t3(t3a String, t3b Short, t3c Int, t3d Long, t3e float, t3f double, t3g DECIMAL, t3h TIMESTAMP, t3i Date) -using parquet +SELECT t1a, + Avg(t1b) +FROM t1 +WHERE t1a IN (SELECT t2a + FROM t2) +GROUP BY t1a -- !query 3 schema -struct<> +struct -- !query 3 output - +t1b 8.0 +t1c 8.0 +t1e 10.0 -- !query 4 -INSERT INTO t1 VALUES - ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1a', 16, 12, 21, 15, 20, 20.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1a', 16, 12, 10, 15, 20, 20.00, timestamp(date("2014-07-04")), date("2014-07-04")), - ('t1c', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-05")), - ('t1d', null, 16, 22, 17, 25, 26.00, timestamp(date("2014-06-04")), null), - ('t1d', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), null), - ('t1e', 10, null, 25, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), - ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), - ('t1d', 10, null, 12, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), - ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-0=4")) +SELECT t1a, + Max(t1b) +FROM t1 +WHERE t1b IN (SELECT t2b + FROM t2 + WHERE t1a = t2a) +GROUP BY t1a, + t1d -- !query 4 schema -struct<> +struct -- !query 4 output - +t1b 8 -- !query 5 -INSERT INTO t2 VALUES - ('t2a', 6, 12, 14, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 8, 16, 119, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), - ('t1c', 12, 16, 219, 17, 25, 26.00, timestamp(date("2016-05-04")), date("2016-05-04")), - ('t1b', null, 16, 319, 17, 25, 26.00, timestamp(date("2017-05-04")), null), - ('t2e', 8, null, 419, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1f', 19, null, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), - ('t1c', 12, 16, 19, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-05")), - ('t1e', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), - ('t1f', 19, null, 19, 17, 25, 26.00, timestamp(date("2014-10-04")), date("2014-10-04")), - ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null) +SELECT t1a, + t1b +FROM t1 +WHERE t1c IN (SELECT t2c + FROM t2 + WHERE t1a = t2a) +GROUP BY t1a, + t1b -- !query 5 schema -struct<> +struct -- !query 5 output - +t1b 8 +t1c 8 -- !query 6 -INSERT INTO t3 VALUES - ('t3a', 6, 12, 110, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t3a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 10, 12, 219, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 8, 16, 319, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), - ('t3c', 17, 16, 519, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), - ('t3c', 17, 16, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-05")), - ('t1b', null, 16, 419, 17, 25, 26.00, timestamp(date("2014-10-04")), null), - ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-11-04")), null), - ('t3b', 8, null, 719, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t3b', 8, null, 19, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-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 -- !query 6 schema -struct<> +struct -- !query 6 output - +t1b 8 +t1c 8 -- !query 7 -select t1a, avg(t1b) from t1 where t1a in (select t2a from t2) group by t1a +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 -- !query 7 schema -struct +struct -- !query 7 output -t1b 8.0 -t1c 8.0 -t1e 10.0 +t1b 8 -- !query 8 -select t1a, max(t1b) from t1 where t1b in (select t2b from t2 where t1a = t2a) group by t1a, t1d +SELECT t1a, + Count(DISTINCT( t1b )) +FROM t1 +WHERE t1c IN (SELECT t2c + FROM t2 + WHERE t1a = t2a) +GROUP BY t1a, + t1c +HAVING t1a = "t1b" -- !query 8 schema -struct +struct -- !query 8 output -t1b 8 +t1b 1 -- !query 9 -select t1a, t1b from t1 where t1c in (select t2c from t2 where t1a = t2a) group by t1a, t1b +SELECT * +FROM t1 +WHERE t1b IN (SELECT Max(t2b) + FROM t2 + GROUP BY t2a) -- !query 9 schema -struct +struct -- !query 9 output -t1b 8 -t1c 8 +t1a 6 8 10 15.0 20.0 2000 2014-04-04 01:00:00 2014-04-04 +t1a 6 8 10 15.0 20.0 2000 2014-04-04 01:02:00.001 2014-04-04 +t1b 8 16 19 17.0 25.0 2600 2014-05-04 01:01:00 2014-05-04 +t1c 8 16 19 17.0 25.0 2600 2014-05-04 01:02:00.001 2014-05-05 +t1d 10 NULL 12 17.0 25.0 2600 2015-05-04 01:01:00 2015-05-04 +t1e 10 NULL 19 17.0 25.0 2600 2014-05-04 01:01:00 2014-05-04 +t1e 10 NULL 19 17.0 25.0 2600 2014-09-04 01:02:00.001 2014-09-04 +t1e 10 NULL 25 17.0 25.0 2600 2014-08-04 01:01:00 2014-08-04 -- !query 10 -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 +SELECT * +FROM (SELECT t2a, + t2b + FROM t2 + WHERE t2a IN (SELECT t1a + FROM t1 + WHERE t1b = t2b) + GROUP BY t2a, + t2b) t2 -- !query 10 schema -struct +struct -- !query 10 output t1b 8 -t1c 8 -- !query 11 -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 +SELECT Count(DISTINCT( * )) +FROM t1 +WHERE t1b IN (SELECT Min(t2b) + FROM t2 + WHERE t1a = t2a + AND t1c = t2c + GROUP BY t2a) -- !query 11 schema -struct +struct -- !query 11 output -t1b 8 +1 -- !query 12 -select t1a, count(distinct(t1b)) from t1 where t1c in (select t2c from t2 where t1a = t2a) -group by t1a, t1c having t1a = "t1b" +SELECT t1a, + t1b +FROM t1 +WHERE t1c IN (SELECT Max(t2c) + FROM t2 + WHERE t1a = t2a + GROUP BY t2a, + t2c + HAVING t2c > 8) -- !query 12 schema -struct --- !query 12 output -t1b 1 - - --- !query 13 -select * from t1 where t1b in (select max(t2b) from t2 group by t2a) --- !query 13 schema -struct --- !query 13 output -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1a 6 8 10 15.0 20.0 20 2014-04-04 00:00:00 2014-04-04 -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-05-04 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-05-05 -t1d 10 NULL 12 17.0 25.0 26 2015-05-04 00:00:00 2015-05-04 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1e 10 NULL 19 17.0 25.0 26 2014-09-04 00:00:00 2014-09-04 -t1e 10 NULL 25 17.0 25.0 26 2014-08-04 00:00:00 2014-08-04 - - --- !query 14 -select * from (select t2a, t2b from t2 where t2a in (select t1a from t1 where t1b = t2b) group by t2a, t2b) t2 --- !query 14 schema -struct --- !query 14 output -t1b 8 - - --- !query 15 -select count(distinct(*)) from t1 where t1b in (select min(t2b) from t2 where t1a = t2a and t1c = t2c group by t2a) --- !query 15 schema -struct --- !query 15 output -1 - - --- !query 16 -select t1a, t1b from t1 where t1c in (select max(t2c) from t2 where t1a = t2a group by t2a, t2c having t2c > 8) --- !query 16 schema struct --- !query 16 output +-- !query 12 output t1b 8 t1c 8 --- !query 17 -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) --- !query 17 schema +-- !query 13 +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) +-- !query 13 schema struct --- !query 17 output +-- !query 13 output t1a 16 t1a 16 t1b 8 @@ -207,95 +253,105 @@ t1d NULL t1d NULL --- !query 18 -select t1a, min(t1b) from t1 where t1c in (select min(t2c) from t2 where t2b = t1b group by t2a) group by t1a --- !query 18 schema +-- !query 14 +SELECT t1a, + Min(t1b) +FROM t1 +WHERE t1c IN (SELECT Min(t2c) + FROM t2 + WHERE t2b = t1b + GROUP BY t2a) +GROUP BY t1a +-- !query 14 schema struct --- !query 18 output +-- !query 14 output t1b 8 t1c 8 --- !query 19 -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 --- !query 19 schema +-- !query 15 +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 +-- !query 15 schema struct --- !query 19 output +-- !query 15 output t1b 8 t1c 8 t1d NULL t1d NULL --- !query 20 -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 --- !query 20 schema +-- !query 16 +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 +-- !query 16 schema struct --- !query 20 output +-- !query 16 output t1b 8 t1c 8 --- !query 21 -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 --- !query 21 schema +-- !query 17 +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 +-- !query 17 schema struct --- !query 21 output +-- !query 17 output t1a 16 t1b 8 t1c 8 t1d NULL --- !query 22 -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 --- !query 22 schema +-- !query 18 +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 +-- !query 18 schema struct --- !query 22 output +-- !query 18 output t1a 16 t1b 8 t1c 8 - - --- !query 23 -DROP TABLE t1 --- !query 23 schema -struct<> --- !query 23 output - - - --- !query 24 -DROP TABLE t2 --- !query 24 schema -struct<> --- !query 24 output - - - --- !query 25 -DROP TABLE t3 --- !query 25 schema -struct<> --- !query 25 output - - - --- !query 26 -USE default --- !query 26 schema -struct<> --- !query 26 output - - - --- !query 27 -DROP DATABASE indb --- !query 27 schema -struct<> --- !query 27 output - diff --git a/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out b/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out index fdcaacc0ccfe..208f42516062 100644 --- a/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out @@ -1,9 +1,22 @@ -- Automatically generated by SQLQueryTestSuite --- Number of queries: 21 +-- Number of queries: 12 -- !query 0 -CREATE DATABASE indb +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) -- !query 0 schema struct<> -- !query 0 output @@ -11,8 +24,21 @@ struct<> -- !query 1 -CREATE TABLE t1(t1a String, t1b Short, t1c Int, t1d Long, t1e float, t1f double, t1g DECIMAL, t1h TIMESTAMP, t1i Date) -using parquet +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) -- !query 1 schema struct<> -- !query 1 output @@ -20,8 +46,20 @@ struct<> -- !query 2 -CREATE TABLE t2(t2a String, t2b Short, t2c Int, t2d Long, t2e float, t2f double, t2g DECIMAL, t2h TIMESTAMP, t2i Date) -using parquet +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) -- !query 2 schema struct<> -- !query 2 output @@ -29,153 +67,127 @@ struct<> -- !query 3 -CREATE TABLE t3(t3a String, t3b Short, t3c Int, t3d Long, t3e float, t3f double, t3g DECIMAL, t3h TIMESTAMP, t3i Date) -using parquet +SELECT * +FROM t1 +WHERE t1a IN (SELECT t2a + FROM t2) -- !query 3 schema -struct<> +struct -- !query 3 output - +t1b 8 16 19 17.0 25.0 2600 2014-05-04 01:01:00 2014-05-04 +t1c 8 16 19 17.0 25.0 2600 2014-05-04 01:02:00.001 2014-05-05 +t1e 10 NULL 19 17.0 25.0 2600 2014-05-04 01:01:00 2014-05-04 +t1e 10 NULL 19 17.0 25.0 2600 2014-09-04 01:02:00.001 2014-09-04 +t1e 10 NULL 25 17.0 25.0 2600 2014-08-04 01:01:00 2014-08-04 -- !query 4 -INSERT INTO t1 VALUES - ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1a', 16, 12, 21, 15, 20, 20.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1a', 16, 12, 10, 15, 20, 20.00, timestamp(date("2014-07-04")), date("2014-07-04")), - ('t1c', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-05")), - ('t1d', null, 16, 22, 17, 25, 26.00, timestamp(date("2014-06-04")), null), - ('t1d', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), null), - ('t1e', 10, null, 25, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), - ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), - ('t1d', 10, null, 12, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), - ('t1a', 6, 8, 10, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1e', 10, null, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-0=4")) +SELECT * +FROM t1 +WHERE t1b IN (SELECT t2b + FROM t2 + WHERE t1a = t2a) -- !query 4 schema -struct<> +struct -- !query 4 output - +t1b 8 16 19 17.0 25.0 2600 2014-05-04 01:01:00 2014-05-04 -- !query 5 -INSERT INTO t2 VALUES - ('t2a', 6, 12, 14, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 8, 16, 119, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")), - ('t1c', 12, 16, 219, 17, 25, 26.00, timestamp(date("2016-05-04")), date("2016-05-04")), - ('t1b', null, 16, 319, 17, 25, 26.00, timestamp(date("2017-05-04")), null), - ('t2e', 8, null, 419, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1f', 19, null, 519, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), - ('t1c', 12, 16, 19, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-05")), - ('t1e', 8, null, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-04")), - ('t1f', 19, null, 19, 17, 25, 26.00, timestamp(date("2014-10-04")), date("2014-10-04")), - ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), null) +SELECT t1a, + t1b +FROM t1 +WHERE t1c IN (SELECT t2b + FROM t2 + WHERE t1a != t2a) -- !query 5 schema -struct<> +struct -- !query 5 output - +t1a 16 +t1a 16 +t1a 6 +t1a 6 -- !query 6 -INSERT INTO t3 VALUES - ('t3a', 6, 12, 110, 15, 20, 20.00, timestamp(date("2014-04-04")), date("2014-04-04")), - ('t3a', 6, 12, 10, 15, 20, 20.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 10, 12, 219, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 10, 12, 19, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t1b', 8, 16, 319, 17, 25, 26.00, timestamp(date("2014-06-04")), date("2014-06-04")), - ('t1b', 8, 16, 19, 17, 25, 26.00, timestamp(date("2014-07-04")), date("2014-07-04")), - ('t3c', 17, 16, 519, 17, 25, 26.00, timestamp(date("2014-08-04")), date("2014-08-04")), - ('t3c', 17, 16, 19, 17, 25, 26.00, timestamp(date("2014-09-04")), date("2014-09-05")), - ('t1b', null, 16, 419, 17, 25, 26.00, timestamp(date("2014-10-04")), null), - ('t1b', null, 16, 19, 17, 25, 26.00, timestamp(date("2014-11-04")), null), - ('t3b', 8, null, 719, 17, 25, 26.00, timestamp(date("2014-05-04")), date("2014-05-04")), - ('t3b', 8, null, 19, 17, 25, 26.00, timestamp(date("2015-05-04")), date("2015-05-04")) +SELECT t1a, + t1b +FROM t1 +WHERE t1c IN (SELECT t2b + FROM t2 + WHERE t1a = t2a + OR t1b > t2b) -- !query 6 schema -struct<> +struct -- !query 6 output - +t1a 16 +t1a 16 -- !query 7 -select * from t1 where t1a in (select t2a from t2) +SELECT t1a, + t1b +FROM t1 +WHERE t1c IN (SELECT t2b + FROM t2 + WHERE t2i IN (SELECT t3i + FROM t3 + WHERE t2c = t3c)) -- !query 7 schema -struct +struct -- !query 7 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-05-04 -t1c 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-05-05 -t1e 10 NULL 19 17.0 25.0 26 2014-05-04 00:00:00 NULL -t1e 10 NULL 19 17.0 25.0 26 2014-09-04 00:00:00 2014-09-04 -t1e 10 NULL 25 17.0 25.0 26 2014-08-04 00:00:00 2014-08-04 +t1a 6 +t1a 6 -- !query 8 -select * from t1 where t1b in (select t2b from t2 where t1a = t2a) +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)) -- !query 8 schema -struct +struct -- !query 8 output -t1b 8 16 19 17.0 25.0 26 2014-05-04 00:00:00 2014-05-04 +t1a 6 +t1a 6 -- !query 9 -select t1a, t1b from t1 where t1c in (select t2b from t2 where t1a != t2a) +SELECT DISTINCT( t1a ), + t1b, + t1h +FROM t1 +WHERE t1a NOT IN (SELECT t2a + FROM t2) -- !query 9 schema -struct +struct -- !query 9 output -t1a 16 -t1a 16 -t1a 6 -t1a 6 +t1a 16 2014-06-04 01:02:00.001 +t1a 16 2014-07-04 01:01:00 +t1a 6 2014-04-04 01:00:00 +t1a 6 2014-04-04 01:02:00.001 +t1d 10 2015-05-04 01:01:00 +t1d NULL 2014-06-04 01:01:00 +t1d NULL 2014-07-04 01:02:00.001 -- !query 10 -select t1a, t1b from t1 where t1c in (select t2b from t2 where t1a = t2a or t1b > t2b) +SELECT DISTINCT( t1a ), + t1b +FROM t1 +WHERE t1b NOT IN (SELECT t2b + FROM t2 + WHERE t1a < t2a + AND t2b > 8) -- !query 10 schema struct -- !query 10 output t1a 16 -t1a 16 - - --- !query 11 -select t1a, t1b from t1 where t1c in (select t2b from t2 where t2i in (select t3i from t3 where t2c = t3c)) --- !query 11 schema -struct --- !query 11 output -t1a 6 -t1a 6 - - --- !query 12 -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)) --- !query 12 schema -struct --- !query 12 output -t1a 6 -t1a 6 - - --- !query 13 -select distinct(t1a), t1b, t1h from t1 where t1a not in (select t2a from t2) --- !query 13 schema -struct --- !query 13 output -t1a 16 2014-06-04 00:00:00 -t1a 16 2014-07-04 00:00:00 -t1a 6 2014-04-04 00:00:00 -t1d 10 2015-05-04 00:00:00 -t1d NULL 2014-06-04 00:00:00 -t1d NULL 2014-07-04 00:00:00 - - --- !query 14 -select distinct(t1a), t1b from t1 where t1b not in (select t2b from t2 where t1a < t2a and t2b > 8) --- !query 14 schema -struct --- !query 14 output -t1a 16 t1a 6 t1b 8 t1c 8 @@ -183,51 +195,19 @@ t1d 10 t1e 10 --- !query 15 -select t1a, t1b from t1 where t1h not in (select t2h from t2 where t2a = t1a) and t1b not in ( - (select min(t3b) from t3 where t3d = t1d)) --- !query 15 schema +-- !query 11 +SELECT t1a, + t1b +FROM t1 +WHERE t1h NOT IN (SELECT t2h + FROM t2 + WHERE t2a = t1a) + AND t1b NOT IN ((SELECT Min(t3b) + FROM t3 + WHERE t3d = t1d)) +-- !query 11 schema struct --- !query 15 output +-- !query 11 output t1a 16 t1e 10 - - --- !query 16 -DROP TABLE t1 --- !query 16 schema -struct<> --- !query 16 output - - - --- !query 17 -DROP TABLE t2 --- !query 17 schema -struct<> --- !query 17 output - - - --- !query 18 -DROP TABLE t3 --- !query 18 schema -struct<> --- !query 18 output - - - --- !query 19 -USE default --- !query 19 schema -struct<> --- !query 19 output - - - --- !query 20 -DROP DATABASE indb --- !query 20 schema -struct<> --- !query 20 output - +t1e 10 From 895bb35cf951e68936d26e81490a89e56a08d834 Mon Sep 17 00:00:00 2001 From: Kevin Yu Date: Sun, 1 Jan 2017 19:59:30 -0800 Subject: [PATCH 11/11] remove two not in cases --- .../inputs/subquery/in-subquery/simple-in.sql | 20 ---------- .../subquery/in-subquery/simple-in.sql.out | 39 +------------------ 2 files changed, 1 insertion(+), 58 deletions(-) diff --git a/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql b/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql index c244ce26fb39..20370b045e80 100644 --- a/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql +++ b/sql/core/src/test/resources/sql-tests/inputs/subquery/in-subquery/simple-in.sql @@ -110,23 +110,3 @@ WHERE t1a NOT IN (SELECT t2a FROM t2); --- TC 01.08 -SELECT DISTINCT( t1a ), - t1b -FROM t1 -WHERE t1b NOT IN (SELECT t2b - FROM t2 - WHERE t1a < t2a - AND t2b > 8); - --- TC 01.09 -SELECT t1a, - t1b -FROM t1 -WHERE t1h NOT IN (SELECT t2h - FROM t2 - WHERE t2a = t1a) - AND t1b NOT IN ((SELECT Min(t3b) - FROM t3 - WHERE t3d = t1d)); - diff --git a/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out b/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out index 208f42516062..66493d7fcc92 100644 --- a/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/subquery/in-subquery/simple-in.sql.out @@ -1,5 +1,5 @@ -- Automatically generated by SQLQueryTestSuite --- Number of queries: 12 +-- Number of queries: 10 -- !query 0 @@ -174,40 +174,3 @@ t1a 6 2014-04-04 01:02:00.001 t1d 10 2015-05-04 01:01:00 t1d NULL 2014-06-04 01:01:00 t1d NULL 2014-07-04 01:02:00.001 - - --- !query 10 -SELECT DISTINCT( t1a ), - t1b -FROM t1 -WHERE t1b NOT IN (SELECT t2b - FROM t2 - WHERE t1a < t2a - AND t2b > 8) --- !query 10 schema -struct --- !query 10 output -t1a 16 -t1a 6 -t1b 8 -t1c 8 -t1d 10 -t1e 10 - - --- !query 11 -SELECT t1a, - t1b -FROM t1 -WHERE t1h NOT IN (SELECT t2h - FROM t2 - WHERE t2a = t1a) - AND t1b NOT IN ((SELECT Min(t3b) - FROM t3 - WHERE t3d = t1d)) --- !query 11 schema -struct --- !query 11 output -t1a 16 -t1e 10 -t1e 10