You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@paimon.apache.org by lz...@apache.org on 2024/01/15 03:24:07 UTC

(incubator-paimon) branch release-0.6 updated: Revert "[hive] Improve hive database is exists yet create/drop database (#2595)"

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

lzljs3620320 pushed a commit to branch release-0.6
in repository https://gitbox.apache.org/repos/asf/incubator-paimon.git


The following commit(s) were added to refs/heads/release-0.6 by this push:
     new 73fc2cc79 Revert "[hive] Improve hive database is exists yet create/drop database (#2595)"
73fc2cc79 is described below

commit 73fc2cc79a93960aa677cecbae946897db01fb37
Author: Jingsong <ji...@gmail.com>
AuthorDate: Mon Jan 15 11:23:51 2024 +0800

    Revert "[hive] Improve hive database is exists yet create/drop database (#2595)"
    
    This reverts commit b3fd931e0c24202e605489cfcd085314a0b0c470.
---
 .../org/apache/paimon/catalog/AbstractCatalog.java |  6 +--
 .../apache/paimon/catalog/FileSystemCatalog.java   |  4 +-
 .../org/apache/paimon/catalog/CatalogTestBase.java | 40 +----------------
 .../java/org/apache/paimon/hive/HiveCatalog.java   | 51 ++++++++--------------
 4 files changed, 23 insertions(+), 78 deletions(-)

diff --git a/paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java b/paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java
index 33c216cbb..a5070a39c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java
+++ b/paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java
@@ -119,7 +119,7 @@ public abstract class AbstractCatalog implements Catalog {
                 Collections.singletonList(partitionSpec), BatchWriteBuilder.COMMIT_IDENTIFIER);
     }
 
-    protected abstract void createDatabaseImpl(String name) throws DatabaseAlreadyExistException;
+    protected abstract void createDatabaseImpl(String name);
 
     @Override
     public void dropDatabase(String name, boolean ignoreIfNotExists, boolean cascade)
@@ -134,14 +134,14 @@ public abstract class AbstractCatalog implements Catalog {
             throw new DatabaseNotExistException(name);
         }
 
-        if (!cascade && !listTables(name).isEmpty()) {
+        if (!cascade && listTables(name).size() > 0) {
             throw new DatabaseNotEmptyException(name);
         }
 
         dropDatabaseImpl(name);
     }
 
-    protected abstract void dropDatabaseImpl(String name) throws DatabaseNotExistException;
+    protected abstract void dropDatabaseImpl(String name);
 
     @Override
     public List<String> listTables(String databaseName) throws DatabaseNotExistException {
diff --git a/paimon-core/src/main/java/org/apache/paimon/catalog/FileSystemCatalog.java b/paimon-core/src/main/java/org/apache/paimon/catalog/FileSystemCatalog.java
index c400826b7..03523da58 100644
--- a/paimon-core/src/main/java/org/apache/paimon/catalog/FileSystemCatalog.java
+++ b/paimon-core/src/main/java/org/apache/paimon/catalog/FileSystemCatalog.java
@@ -72,12 +72,12 @@ public class FileSystemCatalog extends AbstractCatalog {
     }
 
     @Override
-    public void createDatabaseImpl(String name) {
+    protected void createDatabaseImpl(String name) {
         uncheck(() -> fileIO.mkdirs(newDatabasePath(name)));
     }
 
     @Override
-    public void dropDatabaseImpl(String name) {
+    protected void dropDatabaseImpl(String name) {
         uncheck(() -> fileIO.delete(newDatabasePath(name), true));
     }
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/catalog/CatalogTestBase.java b/paimon-core/src/test/java/org/apache/paimon/catalog/CatalogTestBase.java
index 517160204..d85de5e76 100644
--- a/paimon-core/src/test/java/org/apache/paimon/catalog/CatalogTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/catalog/CatalogTestBase.java
@@ -54,7 +54,7 @@ public abstract class CatalogTestBase {
     @TempDir java.nio.file.Path tempFile;
     protected String warehouse;
     protected FileIO fileIO;
-    protected AbstractCatalog catalog;
+    protected Catalog catalog;
     protected static final Schema DEFAULT_TABLE_SCHEMA =
             new Schema(
                     Lists.newArrayList(
@@ -140,21 +140,6 @@ public abstract class CatalogTestBase {
                 .doesNotThrowAnyException();
     }
 
-    @Test
-    public void testCreateDatabaseImpl() throws Exception {
-        // Create database creates a new database when it does not exist
-        catalog.createDatabaseImpl("new_db");
-        boolean exists = catalog.databaseExists("new_db");
-        assertThat(exists).isTrue();
-
-        catalog.createDatabaseImpl("existing_db");
-
-        // Create database throws DatabaseAlreadyExistException when database already exists
-        assertThatExceptionOfType(Catalog.DatabaseAlreadyExistException.class)
-                .isThrownBy(() -> catalog.createDatabaseImpl("existing_db"))
-                .withMessage("Database existing_db already exists.");
-    }
-
     @Test
     public void testDropDatabase() throws Exception {
         // Drop database deletes the database when it exists and there are no tables
@@ -188,29 +173,6 @@ public abstract class CatalogTestBase {
                 .withMessage("Database db_with_tables is not empty.");
     }
 
-    @Test
-    public void testDropDatabaseImpl() throws Exception {
-        // Drop database deletes the database when it exists and there are no tables
-        catalog.createDatabase("db_to_drop", false);
-        catalog.dropDatabase("db_to_drop", false, false);
-        boolean exists = catalog.databaseExists("db_to_drop");
-        assertThat(exists).isFalse();
-
-        // Drop database does throw exception when database does not exist
-        assertThatExceptionOfType(Catalog.DatabaseNotExistException.class)
-                .isThrownBy(() -> catalog.dropDatabaseImpl("non_existing_db"))
-                .withMessage("Database non_existing_db does not exist.");
-
-        // Drop database deletes all tables in the database
-        catalog.createDatabase("db_to_drop", false);
-        catalog.createTable(Identifier.create("db_to_drop", "table1"), DEFAULT_TABLE_SCHEMA, false);
-        catalog.createTable(Identifier.create("db_to_drop", "table2"), DEFAULT_TABLE_SCHEMA, false);
-
-        catalog.dropDatabaseImpl("db_to_drop");
-        exists = catalog.databaseExists("db_to_drop");
-        assertThat(exists).isFalse();
-    }
-
     @Test
     public void testListTables() throws Exception {
         // List tables returns an empty list when there are no tables in the database
diff --git a/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java b/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java
index 6090da6c7..731c09358 100644
--- a/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java
+++ b/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java
@@ -205,7 +205,10 @@ public class HiveCatalog extends AbstractCatalog {
     @Override
     protected boolean databaseExistsImpl(String databaseName) {
         try {
-            return getDatabase(databaseName) != null;
+            client.getDatabase(databaseName);
+            return true;
+        } catch (NoSuchObjectException e) {
+            return false;
         } catch (TException e) {
             throw new RuntimeException(
                     "Failed to determine if database " + databaseName + " exists", e);
@@ -213,52 +216,32 @@ public class HiveCatalog extends AbstractCatalog {
     }
 
     @Override
-    protected void createDatabaseImpl(String name) throws DatabaseAlreadyExistException {
+    protected void createDatabaseImpl(String name) {
         try {
-            Database database = getDatabase(name);
-            if (database == null) {
-                Path databasePath = newDatabasePath(name);
-                locationHelper.createPathIfRequired(databasePath, fileIO);
-
-                database = new Database();
-                database.setName(name);
-                locationHelper.specifyDatabaseLocation(databasePath, database);
-                client.createDatabase(database);
-            } else {
-                throw new DatabaseAlreadyExistException(name);
-            }
+            Path databasePath = newDatabasePath(name);
+            locationHelper.createPathIfRequired(databasePath, fileIO);
+
+            Database database = new Database();
+            database.setName(name);
+            locationHelper.specifyDatabaseLocation(databasePath, database);
+            client.createDatabase(database);
         } catch (TException | IOException e) {
             throw new RuntimeException("Failed to create database " + name, e);
         }
     }
 
     @Override
-    protected void dropDatabaseImpl(String name) throws DatabaseNotExistException {
+    protected void dropDatabaseImpl(String name) {
         try {
-            Database database = getDatabase(name);
-            if (database != null) {
-                String location = locationHelper.getDatabaseLocation(database);
-                locationHelper.dropPathIfRequired(new Path(location), fileIO);
-                client.dropDatabase(name, true, false, true);
-            } else {
-                throw new DatabaseNotExistException(name);
-            }
+            Database database = client.getDatabase(name);
+            String location = locationHelper.getDatabaseLocation(database);
+            locationHelper.dropPathIfRequired(new Path(location), fileIO);
+            client.dropDatabase(name, true, false, true);
         } catch (TException | IOException e) {
             throw new RuntimeException("Failed to drop database " + name, e);
         }
     }
 
-    private Database getDatabase(String databaseName) throws TException {
-        try {
-            return client.getDatabase(databaseName);
-        } catch (NoSuchObjectException e) {
-            return null;
-        } catch (TException e) {
-            throw new RuntimeException(
-                    "Failed to determine if database " + databaseName + " exists", e);
-        }
-    }
-
     @Override
     protected List<String> listTablesImpl(String databaseName) {
         try {