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);
+ }
}