This is an automated email from the ASF dual-hosted git repository. tarmstrong pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/impala.git
commit 6f99cabdb9ab71d5c022b95716a276b04b5ba132 Author: Shant Hovsepian <sh...@cloudera.com> AuthorDate: Sat Jul 18 08:38:36 2020 -0400 IMPALA-9929: Subquery error should throw AnalysisException Unsupported subquery in the select list should throw an AnalysisException. Testing: * Analyzer test to catch this case. Change-Id: Ic299ea25fd6e505e364528891e737a9af5bcc338 Reviewed-on: http://gerrit.cloudera.org:8080/16212 Reviewed-by: Impala Public Jenkins <impala-public-jenk...@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenk...@cloudera.com> --- fe/src/main/java/org/apache/impala/analysis/SelectStmt.java | 7 ++++--- .../java/org/apache/impala/analysis/AnalyzeSubqueriesTest.java | 4 ++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/fe/src/main/java/org/apache/impala/analysis/SelectStmt.java b/fe/src/main/java/org/apache/impala/analysis/SelectStmt.java index 2fca33d..3d520f3 100644 --- a/fe/src/main/java/org/apache/impala/analysis/SelectStmt.java +++ b/fe/src/main/java/org/apache/impala/analysis/SelectStmt.java @@ -326,9 +326,10 @@ public class SelectStmt extends QueryStmt { "A subquery which may return more than one row is not supported in " + "the expression: " + item.getExpr().toSql()); } - Preconditions.checkState(((SelectStmt)s.getStatement()).returnsAtMostOneRow(), - "Invariant violated: Only subqueries that are guaranteed to return a " - + "single row are supported: " + item.getExpr().toSql()); + if (!((SelectStmt)s.getStatement()).returnsAtMostOneRow()) { + throw new AnalysisException("Only subqueries that are guaranteed to return " + + "a single row are supported: " + item.getExpr().toSql()); + } } resultExprs_.add(item.getExpr()); String label = item.toColumnLabel(i, analyzer_.useHiveColLabels()); diff --git a/fe/src/test/java/org/apache/impala/analysis/AnalyzeSubqueriesTest.java b/fe/src/test/java/org/apache/impala/analysis/AnalyzeSubqueriesTest.java index e4be4d0..c490450 100644 --- a/fe/src/test/java/org/apache/impala/analysis/AnalyzeSubqueriesTest.java +++ b/fe/src/test/java/org/apache/impala/analysis/AnalyzeSubqueriesTest.java @@ -1387,6 +1387,10 @@ public class AnalyzeSubqueriesTest extends AnalyzerTest { + "id=a.id ) from functional.alltypes a", "A correlated scalar subquery is not supported in the expression: " + "(SELECT count(*) FROM functional.alltypestiny b WHERE id = a.id)"); + AnalysisError("select id, min(id) in (select id from functional.alltypestiny) " + + "from functional.alltypes a", + "Only subqueries that are guaranteed to return a single row are supported: " + + "min(id) IN (SELECT id FROM functional.alltypestiny)"); } @Test