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

Reply via email to