You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ng...@apache.org on 2021/04/06 15:39:54 UTC

[hive] 10/38: HIVE-24396: getTable/getTables API not expected to throw NoSuchObjectException

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

commit 1523cd47d0c81d5e2bb9f0b88d96efd847a67751
Author: Naveen Gangam <ng...@cloudera.com>
AuthorDate: Thu Nov 19 00:00:02 2020 -0500

    HIVE-24396: getTable/getTables API not expected to throw NoSuchObjectException
---
 .../apache/hadoop/hive/metastore/HiveMetaStoreClient.java   | 10 +++++-----
 .../org/apache/hadoop/hive/metastore/HiveMetaStore.java     | 13 ++++++-------
 .../hive/metastore/client/builder/DatabaseBuilder.java      | 10 ++++++++++
 .../apache/hadoop/hive/metastore/cache/TestCachedStore.java |  1 +
 4 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java b/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
index 8700bed..9dbaacc 100644
--- a/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
+++ b/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
@@ -1097,7 +1097,7 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
   /**
    * Create a new Database
    *
-   * @param connector
+   * @param db
    * @throws AlreadyExistsException
    * @throws InvalidObjectException
    * @throws MetaException
@@ -1105,12 +1105,12 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable {
    * @see org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Iface#create_database(Database)
    */
   @Override
-  public void createDatabase(Database connector)
+  public void createDatabase(Database db)
       throws AlreadyExistsException, InvalidObjectException, MetaException, TException {
-    if (!connector.isSetCatalogName()) {
-      connector.setCatalogName(getDefaultCatalog(conf));
+    if (!db.isSetCatalogName()) {
+      db.setCatalogName(getDefaultCatalog(conf));
     }
-    client.create_database(connector);
+    client.create_database(db);
   }
 
   /**
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
index ec0fa00..696b89d 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
@@ -3733,9 +3733,7 @@ public class HiveMetaStore extends ThriftHiveMetastore {
             return DataConnectorProviderFactory.getDataConnectorProvider(db).getTable(name);
           }
         }
-      } catch (NoSuchObjectException notExists) {
-        throw new MetaException("Database could not be found:" + dbname);
-      }
+      } catch (Exception e) { /* appears exception is not thrown currently if db doesnt exist */ }
 
       try {
         t = getMS().getTable(catName, dbname, name, writeIdList);
@@ -6003,9 +6001,7 @@ public class HiveMetaStore extends ThriftHiveMetastore {
             return DataConnectorProviderFactory.getDataConnectorProvider(db).getTableNames();
           }
         }
-      } catch (NoSuchObjectException notExists) {
-        throw new MetaException("Database could not be found:" + dbname);
-      }
+      } catch (Exception e) { /* appears we return empty set instead of throwing an exception */ }
 
       try {
         ret = getMS().getTables(parsedDbName[CAT_NAME], parsedDbName[DB_NAME], pattern);
@@ -6065,10 +6061,13 @@ public class HiveMetaStore extends ThriftHiveMetastore {
       try {
         db = get_database_core(catName, dbname);
         if (db != null) {
-          if(db.getType().equals(DatabaseType.REMOTE)) {
+          if (db.getType().equals(DatabaseType.REMOTE)) {
             return DataConnectorProviderFactory.getDataConnectorProvider(db).getTableNames();
           }
         }
+      } catch (Exception e) { /* ignore */ }
+
+      try {
         ret = getMS().getTables(catName, dbname, pattern, TableType.valueOf(tableType), -1);
       } catch (MetaException e) {
         ex = e;
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/client/builder/DatabaseBuilder.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/client/builder/DatabaseBuilder.java
index 21e3a9f..806bf0f 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/client/builder/DatabaseBuilder.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/client/builder/DatabaseBuilder.java
@@ -22,6 +22,7 @@ import org.apache.hadoop.hive.metastore.IMetaStoreClient;
 import org.apache.hadoop.hive.metastore.Warehouse;
 import org.apache.hadoop.hive.metastore.api.Catalog;
 import org.apache.hadoop.hive.metastore.api.Database;
+import org.apache.hadoop.hive.metastore.api.DatabaseType;
 import org.apache.hadoop.hive.metastore.api.MetaException;
 import org.apache.hadoop.hive.metastore.api.PrincipalType;
 import org.apache.hadoop.hive.metastore.utils.MetaStoreUtils;
@@ -42,6 +43,7 @@ public class DatabaseBuilder {
   private String ownerName;
   private PrincipalType ownerType;
   private int createTime;
+  private DatabaseType type;
 
   public DatabaseBuilder() {
   }
@@ -101,6 +103,12 @@ public class DatabaseBuilder {
     return this;
   }
 
+  public DatabaseBuilder setType(DatabaseType type) {
+    if (type != null)
+      this.type = type;
+    return this;
+  }
+
   public Database build(Configuration conf) throws MetaException {
     if (name == null) throw new MetaException("You must name the database");
     if (catalogName == null) catalogName = MetaStoreUtils.getDefaultCatalog(conf);
@@ -114,6 +122,8 @@ public class DatabaseBuilder {
       db.setOwnerName(ownerName);
       if (ownerType == null) ownerType = PrincipalType.USER;
       db.setOwnerType(ownerType);
+      if (type == null) type = DatabaseType.NATIVE;
+      db.setType(type);
       return db;
     } catch (IOException e) {
       throw MetaStoreUtils.newMetaException(e);
diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/cache/TestCachedStore.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/cache/TestCachedStore.java
index d285f3d..c71c459 100644
--- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/cache/TestCachedStore.java
+++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/cache/TestCachedStore.java
@@ -2053,6 +2053,7 @@ import static org.apache.hadoop.hive.metastore.Warehouse.DEFAULT_CATALOG_NAME;
     db.setOwnerType(PrincipalType.USER);
     db.setCatalogName(DEFAULT_CATALOG_NAME);
     db.setCreateTime((int) (System.currentTimeMillis() / 1000));
+    db.setType(DatabaseType.NATIVE);
     return db;
   }