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

Reply via email to