Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ case class In(value: Expression, list: Seq[Expression]) extends Predicate {
} else {
val mismatchedColumns = valExprs.zip(childOutputs).flatMap {
case (l, r) if l.dataType != r.dataType =>
s"(${l.sql}:${l.dataType.catalogString}, ${r.sql}:${r.dataType.catalogString})"
Seq(s"(${l.sql}:${l.dataType.catalogString}, ${r.sql}:${r.dataType.catalogString})")
case _ => None
}
TypeCheckResult.TypeCheckFailure(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,14 @@ CREATE TEMPORARY VIEW t3 AS SELECT * FROM VALUES
(3, 1, 2)
AS t3(t3a, t3b, t3c);

CREATE TEMPORARY VIEW t4 AS SELECT * FROM VALUES
(CAST(1 AS DOUBLE), CAST(2 AS STRING), CAST(3 AS STRING))
AS t1(t4a, t4b, t4c);

CREATE TEMPORARY VIEW t5 AS SELECT * FROM VALUES
(CAST(1 AS DECIMAL(18, 0)), CAST(2 AS STRING), CAST(3 AS BIGINT))
AS t1(t5a, t5b, t5c);

-- TC 01.01
SELECT
( SELECT max(t2b), min(t2b)
Expand Down Expand Up @@ -44,4 +52,10 @@ WHERE
(t1a, t1b) IN (SELECT t2a
FROM t2
WHERE t1a = t2a);

-- TC 01.05
SELECT * FROM t4
WHERE
(t4a, t4b, t4c) IN (SELECT t5a,
t5b,
t5c
FROM t5);
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
-- Automatically generated by SQLQueryTestSuite
-- Number of queries: 7
-- Number of queries: 10


-- !query 0
Expand Down Expand Up @@ -33,44 +33,64 @@ struct<>


-- !query 3
CREATE TEMPORARY VIEW t4 AS SELECT * FROM VALUES
(CAST(1 AS DOUBLE), CAST(2 AS STRING), CAST(3 AS STRING))
AS t1(t4a, t4b, t4c)
-- !query 3 schema
struct<>
-- !query 3 output



-- !query 4
CREATE TEMPORARY VIEW t5 AS SELECT * FROM VALUES
(CAST(1 AS DECIMAL(18, 0)), CAST(2 AS STRING), CAST(3 AS BIGINT))
AS t1(t5a, t5b, t5c)
-- !query 4 schema
struct<>
-- !query 4 output



-- !query 5
SELECT
( SELECT max(t2b), min(t2b)
FROM t2
WHERE t2.t2b = t1.t1b
GROUP BY t2.t2b
)
FROM t1
-- !query 3 schema
-- !query 5 schema
struct<>
-- !query 3 output
-- !query 5 output
org.apache.spark.sql.AnalysisException
Scalar subquery must return only one column, but got 2;


-- !query 4
-- !query 6
SELECT
( SELECT max(t2b), min(t2b)
FROM t2
WHERE t2.t2b > 0
GROUP BY t2.t2b
)
FROM t1
-- !query 4 schema
-- !query 6 schema
struct<>
-- !query 4 output
-- !query 6 output
org.apache.spark.sql.AnalysisException
Scalar subquery must return only one column, but got 2;


-- !query 5
-- !query 7
SELECT * FROM t1
WHERE
t1a IN (SELECT t2a, t2b
FROM t2
WHERE t1a = t2a)
-- !query 5 schema
-- !query 7 schema
struct<>
-- !query 5 output
-- !query 7 output
org.apache.spark.sql.AnalysisException
cannot resolve '(t1.`t1a` IN (listquery(t1.`t1a`)))' due to data type mismatch:
The number of columns in the left hand side of an IN subquery does not match the
Expand All @@ -83,15 +103,15 @@ Right side columns:
[t2.`t2a`, t2.`t2b`].;


-- !query 6
-- !query 8
SELECT * FROM T1
WHERE
(t1a, t1b) IN (SELECT t2a
FROM t2
WHERE t1a = t2a)
-- !query 6 schema
-- !query 8 schema
struct<>
-- !query 6 output
-- !query 8 output
org.apache.spark.sql.AnalysisException
cannot resolve '(named_struct('t1a', t1.`t1a`, 't1b', t1.`t1b`) IN (listquery(t1.`t1a`)))' due to data type mismatch:
The number of columns in the left hand side of an IN subquery does not match the
Expand All @@ -102,3 +122,25 @@ Left side columns:
[t1.`t1a`, t1.`t1b`].
Right side columns:
[t2.`t2a`].;


-- !query 9
SELECT * FROM t4
WHERE
(t4a, t4b, t4c) IN (SELECT t5a,
t5b,
t5c
FROM t5)
-- !query 9 schema
struct<>
-- !query 9 output
org.apache.spark.sql.AnalysisException
cannot resolve '(named_struct('t4a', t4.`t4a`, 't4b', t4.`t4b`, 't4c', t4.`t4c`) IN (listquery()))' due to data type mismatch:
The data type of one or more elements in the left hand side of an IN subquery
is not compatible with the data type of the output of the subquery
Mismatched columns:
[(t4.`t4a`:double, t5.`t5a`:decimal(18,0)), (t4.`t4c`:string, t5.`t5c`:bigint)]
Left side:
[double, string, string].
Right side:
[decimal(18,0), string, bigint].;