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 {