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) +====
