From 1c9969a003b09abc851ae7e19631ad208d3b6066 Mon Sep 17 00:00:00 2001 From: Wechar Yu Date: Thu, 20 Jun 2024 23:21:48 +0800 Subject: [PATCH] HIVE-28307: Fast return when database exists and IF NOT EXISTS clause is enabled (#5292)(Wechar Yu, reviewed by Butao Zhang) --- .../hive/ql/ddl/database/create/CreateDatabaseAnalyzer.java | 4 ++++ ql/src/test/results/clientpositive/llap/database.q.out | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/create/CreateDatabaseAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/create/CreateDatabaseAnalyzer.java index e5041df1c462..ffa0ee72e111 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/create/CreateDatabaseAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/create/CreateDatabaseAnalyzer.java @@ -90,6 +90,10 @@ public void analyzeInternal(ASTNode root) throws SemanticException { } } + if (ifNotExists && getDatabase(databaseName, false) != null) { + return; + } + CreateDatabaseDesc desc = null; Database database = new Database(databaseName, comment, locationUri, props); if (type.equalsIgnoreCase(DatabaseType.NATIVE.name())) { diff --git a/ql/src/test/results/clientpositive/llap/database.q.out b/ql/src/test/results/clientpositive/llap/database.q.out index 481aae02f519..842e075cdd34 100644 --- a/ql/src/test/results/clientpositive/llap/database.q.out +++ b/ql/src/test/results/clientpositive/llap/database.q.out @@ -17,10 +17,8 @@ default test_db PREHOOK: query: CREATE DATABASE IF NOT EXISTS test_db PREHOOK: type: CREATEDATABASE -PREHOOK: Output: database:test_db POSTHOOK: query: CREATE DATABASE IF NOT EXISTS test_db POSTHOOK: type: CREATEDATABASE -POSTHOOK: Output: database:test_db PREHOOK: query: SHOW DATABASES PREHOOK: type: SHOWDATABASES POSTHOOK: query: SHOW DATABASES