This is an automated email from the ASF dual-hosted git repository.

ngangam pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new a63f4b38c4a HIVE-26299: Drop data connector ifNotExists should not 
throw NoSuchObjectException (Reviewed by Saihemanth) (#3350)
a63f4b38c4a is described below

commit a63f4b38c4ab9baf5d99f233fd3b49e8e52fb6c6
Author: Butao Zhang <[email protected]>
AuthorDate: Wed Jun 15 03:20:59 2022 +0800

    HIVE-26299: Drop data connector ifNotExists should not throw 
NoSuchObjectException (Reviewed by Saihemanth) (#3350)
---
 ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java |  3 ---
 .../org/apache/hadoop/hive/metastore/HMSHandler.java     | 16 ++++++++--------
 .../apache/hadoop/hive/metastore/TestHiveMetaStore.java  | 12 ++++++++++++
 3 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java 
b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
index e30f5b09052..d011736bcf1 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
@@ -963,9 +963,6 @@ public class Hive {
       throws HiveException, NoSuchObjectException {
     try {
       getMSC().dropDataConnector(name, ifNotExists, checkReferences);
-    } catch (NoSuchObjectException e) {
-      if (!ifNotExists)
-        throw e;
     } catch (Exception e) {
       throw new HiveException(e);
     }
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java
index 5292d0f3361..c5b8973a46e 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java
@@ -2048,16 +2048,16 @@ public class HMSHandler extends FacebookBase implements 
IHMSHandler {
     Exception ex = null;
     RawStore ms = getMS();
     try {
-      ms.openTransaction();
       connector = getMS().getDataConnector(dcName);
-
-      if (connector == null) {
-        if (!ifNotExists) {
-          throw new NoSuchObjectException("DataConnector " + dcName + " 
doesn't exist");
-        } else {
-          return;
-        }
+    } catch (NoSuchObjectException e) {
+      if (!ifNotExists) {
+        throw new NoSuchObjectException("DataConnector " + dcName + " doesn't 
exist");
+      } else {
+        return;
       }
+    }
+    try {
+      ms.openTransaction();
       // TODO find DBs with references to this connector
       // if any existing references and checkReferences=true, do not drop
 
diff --git 
a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
 
b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
index b453af14d06..786f963224e 100644
--- 
a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
+++ 
b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
@@ -3705,4 +3705,16 @@ public abstract class TestHiveMetaStore {
       throw e;
     }
   }
+
+  @Test(expected = NoSuchObjectException.class)
+  public void testDropDataConnectorIfNotExistsFalse() throws Exception {
+    // No such data connector, throw NoSuchObjectException
+    client.dropDataConnector("no_such_data_connector", false, false);
+  }
+
+  @Test
+  public void testDropDataConnectorIfNotExistsTrue() throws Exception {
+    // No such data connector, ignore NoSuchObjectException
+    client.dropDataConnector("no_such_data_connector", true, false);
+  }
 }

Reply via email to