Repository: hive Updated Branches: refs/heads/master e69129454 -> be1130d56
HIVE-20462: "CREATE VIEW IF NOT EXISTS" fails if view already exists (Daniel Dai, reviewed by Jesus Camacho Rodriguez) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/be1130d5 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/be1130d5 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/be1130d5 Branch: refs/heads/master Commit: be1130d567bd3b075fa3364215bb561e221506ed Parents: e691294 Author: Daniel Dai <dai...@gmail.com> Authored: Sat Sep 15 15:59:46 2018 -0700 Committer: Daniel Dai <dai...@gmail.com> Committed: Sat Sep 15 15:59:46 2018 -0700 ---------------------------------------------------------------------- ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java | 2 +- ql/src/test/queries/clientpositive/create_view.q | 2 ++ ql/src/test/results/clientpositive/create_view.q.out | 10 ++++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/be1130d5/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index 79cb54e..8aa971a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -5155,7 +5155,7 @@ public class DDLTask extends Task<DDLWork> implements Serializable { } } - if (!crtView.isReplace()) { + if (!crtView.isReplace() && !crtView.getIfNotExists()) { // View already exists, thus we should be replacing throw new HiveException(ErrorMsg.TABLE_ALREADY_EXISTS.getMsg(crtView.getViewName())); } http://git-wip-us.apache.org/repos/asf/hive/blob/be1130d5/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 dce2866..3fe14f4 100644 --- a/ql/src/test/queries/clientpositive/create_view.q +++ b/ql/src/test/queries/clientpositive/create_view.q @@ -237,6 +237,8 @@ select * from view17; create view view18 as select v+1 from (select 1 as v) t; select * from view18; +-- create view if not exists +create view if not exists view18 as select v+1 from (select 1 as v) t; DROP VIEW view1; DROP VIEW view2; http://git-wip-us.apache.org/repos/asf/hive/blob/be1130d5/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 d2c516f..99d1543 100644 --- a/ql/src/test/results/clientpositive/create_view.q.out +++ b/ql/src/test/results/clientpositive/create_view.q.out @@ -1604,6 +1604,16 @@ POSTHOOK: Input: _dummy_database@_dummy_table POSTHOOK: Input: default@view18 #### A masked pattern was here #### 2 +PREHOOK: query: create view if not exists 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 if not exists 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 PREHOOK: query: DROP VIEW view1 PREHOOK: type: DROPVIEW PREHOOK: Input: default@view1