IMPALA-4579: SHOW CREATE VIEW fails for view containing a subquery

This commit fixes an issue where a SHOW CREATE VIEW statement throws an
analysis error if the view contains a subquery.

Change-Id: I4a89e46a022f0ccec198b6e3e2b30230103831ce
Reviewed-on: http://gerrit.cloudera.org:8080/5333
Reviewed-by: Dimitris Tsirogiannis <[email protected]>
Tested-by: Internal Jenkins


Project: http://git-wip-us.apache.org/repos/asf/incubator-impala/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-impala/commit/1da57019
Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/1da57019
Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/1da57019

Branch: refs/heads/master
Commit: 1da57019ade33d85f76bfb86fa64332eea7b04eb
Parents: ff629c2
Author: Dimitris Tsirogiannis <[email protected]>
Authored: Fri Dec 2 14:53:15 2016 -0800
Committer: Internal Jenkins <[email protected]>
Committed: Sun Dec 4 08:35:15 2016 +0000

----------------------------------------------------------------------
 .../java/org/apache/impala/analysis/AnalysisContext.java    | 2 +-
 .../queries/QueryTest/show-create-table.test                | 9 +++++++++
 2 files changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/1da57019/fe/src/main/java/org/apache/impala/analysis/AnalysisContext.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/org/apache/impala/analysis/AnalysisContext.java 
b/fe/src/main/java/org/apache/impala/analysis/AnalysisContext.java
index e20fd34..e720867 100644
--- a/fe/src/main/java/org/apache/impala/analysis/AnalysisContext.java
+++ b/fe/src/main/java/org/apache/impala/analysis/AnalysisContext.java
@@ -335,7 +335,7 @@ public class AnalysisContext {
     public Set<TAccessEvent> getAccessEvents() { return 
analyzer_.getAccessEvents(); }
     public boolean requiresSubqueryRewrite() {
       return analyzer_.containsSubquery() && !(stmt_ instanceof CreateViewStmt)
-          && !(stmt_ instanceof AlterViewStmt);
+          && !(stmt_ instanceof AlterViewStmt) && !(stmt_ instanceof 
ShowCreateTableStmt);
     }
     public boolean requiresExprRewrite() {
       return isQueryStmt() ||isInsertStmt() || isCreateTableAsSelectStmt()

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/1da57019/testdata/workloads/functional-query/queries/QueryTest/show-create-table.test
----------------------------------------------------------------------
diff --git 
a/testdata/workloads/functional-query/queries/QueryTest/show-create-table.test 
b/testdata/workloads/functional-query/queries/QueryTest/show-create-table.test
index 910f2d5..252cd96 100644
--- 
a/testdata/workloads/functional-query/queries/QueryTest/show-create-table.test
+++ 
b/testdata/workloads/functional-query/queries/QueryTest/show-create-table.test
@@ -337,3 +337,12 @@ STORED AS PARQUET
 LOCATION '$$location_uri$$'
 TBLPROPERTIES ()
 ====
+---- CREATE_VIEW
+# Create view that contains a subquery (IMPALA-4579)
+CREATE VIEW view_with_subquery AS SELECT * FROM functional.alltypestiny
+  WHERE id IN (SELECT id FROM functional.alltypesagg);
+---- RESULTS
+CREATE VIEW show_create_table_test_db.view_with_subquery
+AS SELECT * FROM functional.alltypestiny
+WHERE id IN (SELECT id FROM functional.alltypesagg)
+====

Reply via email to