HIVE-20010: Fix create view over literals (Zoltan Haindrich, reviewed by Ashutosh Chauhan, Daniel Dai)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/1b3ac733 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/1b3ac733 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/1b3ac733 Branch: refs/heads/master-txnstats Commit: 1b3ac733f53598636870f4f7af09d2938fe0b09f Parents: 777d62c Author: Daniel Dai <dai...@gmail.com> Authored: Thu Jun 28 13:03:29 2018 -0700 Committer: Daniel Dai <dai...@gmail.com> Committed: Thu Jun 28 13:03:29 2018 -0700 ---------------------------------------------------------------------- .../hadoop/hive/ql/parse/SemanticAnalyzer.java | 3 + .../test/queries/clientpositive/create_view.q | 9 +++ .../results/clientpositive/create_view.q.out | 60 ++++++++++++++++++++ 3 files changed, 72 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/1b3ac733/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 52cf237..b389a9b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -13441,6 +13441,9 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer { Set<String> tableAliases = qb.getTabAliases(); for (String alias : tableAliases) { try { + if (DUMMY_TABLE.equals(alias)) { + continue; + } Table table = this.getTableObjectByName(qb.getTabNameForAlias(alias)); if (table.isTemporary()) { throw new SemanticException("View definition references temporary table " + alias); http://git-wip-us.apache.org/repos/asf/hive/blob/1b3ac733/ql/src/test/queries/clientpositive/create_view.q ---------------------------------------------------------------------- diff --git a/ql/src/test/queries/clientpositive/create_view.q b/ql/src/test/queries/clientpositive/create_view.q index b3534e2..3d66cbc 100644 --- a/ql/src/test/queries/clientpositive/create_view.q +++ b/ql/src/test/queries/clientpositive/create_view.q @@ -230,6 +230,13 @@ DESCRIBE table1_n4; -- dependencies for implementing RESTRICT +-- create view over literals +create view view17 as select 1 as v; +select * from view17; +create view view18 as select v+1 from (select 1 as v) t; +select * from view18; + + DROP VIEW view1; DROP VIEW view2; DROP VIEW view3; @@ -246,6 +253,8 @@ DROP VIEW view13; DROP VIEW view14; DROP VIEW view15; DROP VIEW view16; +DROP VIEW view17; +DROP VIEW view18; DROP TEMPORARY FUNCTION test_translate; DROP TEMPORARY FUNCTION test_max; DROP TEMPORARY FUNCTION test_explode; http://git-wip-us.apache.org/repos/asf/hive/blob/1b3ac733/ql/src/test/results/clientpositive/create_view.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/create_view.q.out b/ql/src/test/results/clientpositive/create_view.q.out index fa3fb95..b5b7bfb 100644 --- a/ql/src/test/results/clientpositive/create_view.q.out +++ b/ql/src/test/results/clientpositive/create_view.q.out @@ -1570,6 +1570,50 @@ POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@table1_n4 key int value string +PREHOOK: query: create view view17 as select 1 as v +PREHOOK: type: CREATEVIEW +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: database:default +PREHOOK: Output: default@view17 +POSTHOOK: query: create view view17 as select 1 as v +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: database:default +POSTHOOK: Output: default@view17 +POSTHOOK: Lineage: view17.v SIMPLE [] +PREHOOK: query: select * from view17 +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Input: default@view17 +#### A masked pattern was here #### +POSTHOOK: query: select * from view17 +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Input: default@view17 +#### A masked pattern was here #### +1 +PREHOOK: query: create view view18 as select v+1 from (select 1 as v) t +PREHOOK: type: CREATEVIEW +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: database:default +PREHOOK: Output: default@view18 +POSTHOOK: query: create view view18 as select v+1 from (select 1 as v) t +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: database:default +POSTHOOK: Output: default@view18 +POSTHOOK: Lineage: view18._c0 SIMPLE [] +PREHOOK: query: select * from view18 +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Input: default@view18 +#### A masked pattern was here #### +POSTHOOK: query: select * from view18 +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Input: default@view18 +#### A masked pattern was here #### +2 PREHOOK: query: DROP VIEW view1 PREHOOK: type: DROPVIEW PREHOOK: Input: default@view1 @@ -1698,6 +1742,22 @@ POSTHOOK: query: DROP VIEW view16 POSTHOOK: type: DROPVIEW POSTHOOK: Input: default@view16 POSTHOOK: Output: default@view16 +PREHOOK: query: DROP VIEW view17 +PREHOOK: type: DROPVIEW +PREHOOK: Input: default@view17 +PREHOOK: Output: default@view17 +POSTHOOK: query: DROP VIEW view17 +POSTHOOK: type: DROPVIEW +POSTHOOK: Input: default@view17 +POSTHOOK: Output: default@view17 +PREHOOK: query: DROP VIEW view18 +PREHOOK: type: DROPVIEW +PREHOOK: Input: default@view18 +PREHOOK: Output: default@view18 +POSTHOOK: query: DROP VIEW view18 +POSTHOOK: type: DROPVIEW +POSTHOOK: Input: default@view18 +POSTHOOK: Output: default@view18 PREHOOK: query: DROP TEMPORARY FUNCTION test_translate PREHOOK: type: DROPFUNCTION PREHOOK: Output: test_translate