JingsongLi commented on code in PR #2595:
URL: https://github.com/apache/incubator-paimon/pull/2595#discussion_r1439113291
##########
paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java:
##########
@@ -208,43 +208,58 @@ public List<String> listDatabases() {
@Override
protected boolean databaseExistsImpl(String databaseName) {
try {
- client.getDatabase(databaseName);
- return true;
- } catch (NoSuchObjectException e) {
- return false;
+ return getDatabase(databaseName) != null;
} catch (TException e) {
throw new RuntimeException(
"Failed to determine if database " + databaseName + "
exists", e);
}
}
@Override
- protected void createDatabaseImpl(String name) {
+ public void createDatabaseImpl(String name) throws
DatabaseAlreadyExistException {
try {
- Path databasePath = newDatabasePath(name);
- locationHelper.createPathIfRequired(databasePath, fileIO);
-
- Database database = new Database();
- database.setName(name);
- locationHelper.specifyDatabaseLocation(databasePath, database);
- client.createDatabase(database);
+ 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);
+ }
} catch (TException | IOException e) {
throw new RuntimeException("Failed to create database " + name, e);
}
}
@Override
- protected void dropDatabaseImpl(String name) {
+ public void dropDatabaseImpl(String name) {
try {
- Database database = client.getDatabase(name);
- String location = locationHelper.getDatabaseLocation(database);
- locationHelper.dropPathIfRequired(new Path(location), fileIO);
- client.dropDatabase(name, true, false, true);
+ Database database = getDatabase(name);
+ if (database != null) {
+ String location = locationHelper.getDatabaseLocation(database);
+ locationHelper.dropPathIfRequired(new Path(location), fileIO);
+ client.dropDatabase(name, true, false, true);
+ }
Review Comment:
else throw `DatabaseNotExistException`.
##########
paimon-core/src/main/java/org/apache/paimon/catalog/Catalog.java:
##########
@@ -83,6 +83,15 @@ default Optional<MetastoreClient.Factory>
metastoreClientFactory(Identifier iden
*/
void createDatabase(String name, boolean ignoreIfExists) throws
DatabaseAlreadyExistException;
+ /**
+ * Create a database.
+ *
+ * @param name Name of the database to be created
+ * @throws DatabaseAlreadyExistException if the given database already
exists and ignoreIfExists
+ * is false
+ */
+ void createDatabaseImpl(String name) throws DatabaseAlreadyExistException;
Review Comment:
If this method is a public API, it should be `createDatabase`.
##########
paimon-core/src/main/java/org/apache/paimon/catalog/Catalog.java:
##########
@@ -97,6 +106,13 @@ default Optional<MetastoreClient.Factory>
metastoreClientFactory(Identifier iden
void dropDatabase(String name, boolean ignoreIfNotExists, boolean cascade)
throws DatabaseNotExistException, DatabaseNotEmptyException;
+ /**
+ * Drop a database.
+ *
+ * @param name Name of the database to be dropped.
+ */
+ void dropDatabaseImpl(String name);
Review Comment:
If this method is a public API, it should be `dropDatabase`, and throw
`DatabaseNotExistException`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]