From 1da57019ade33d85f76bfb86fa64332eea7b04eb Mon Sep 17 00:00:00 2001 From: Dimitris Tsirogiannis Date: Fri, 2 Dec 2016 14:53:15 -0800 Subject: [PATCH] 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 Tested-by: Internal Jenkins --- .../java/org/apache/impala/analysis/AnalysisContext.java | 2 +- .../queries/QueryTest/show-create-table.test | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) 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 e20fd34af..e720867bd 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 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() 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 910f2d595..252cd9661 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) +====