Skip to content

Commit

Permalink
store database comment in properties
Browse files Browse the repository at this point in the history
  • Loading branch information
zhoukangcn committed Apr 6, 2024
1 parent dc657a4 commit f4a448f
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,31 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;

/** Database operations for Doris. */
public class DorisDatabaseOperations extends JdbcDatabaseOperations {
public static final String COMMENT_KEY = "comment";

@Override
public String generateCreateDatabaseSql(
String databaseName, String comment, Map<String, String> properties) {
if (StringUtils.isNotEmpty(comment)) {
throw new UnsupportedOperationException(
"Doris doesn't support set database comment: " + comment);
}
StringBuilder sqlBuilder = new StringBuilder();

// Append database name
sqlBuilder.append(String.format("CREATE DATABASE `%s`", databaseName));

// Doris does not support setting schema comment, put comment in properties
Map<String, String> newProperties = new HashMap<>(properties);
if (StringUtils.isNotEmpty(comment)) {
newProperties.put(COMMENT_KEY, comment);
}

// Append properties
sqlBuilder.append(DorisUtils.generatePropertiesSql(properties));
sqlBuilder.append(DorisUtils.generatePropertiesSql(newProperties));

String result = sqlBuilder.toString();
LOG.info("Generated create database:{} sql: {}", databaseName, result);
Expand Down Expand Up @@ -82,8 +85,12 @@ public JdbcSchema load(String databaseName) throws NoSuchSchemaException {

Map<String, String> properties = getDatabaseProperties(databaseName);

// extract comment from properties
String comment = properties.remove(COMMENT_KEY);

return JdbcSchema.builder()
.withName(dbName)
.withComment(comment)
.withProperties(properties)
.withAuditInfo(AuditInfo.EMPTY)
.build();
Expand All @@ -109,6 +116,6 @@ protected Map<String, String> getDatabaseProperties(String databaseName) {
throw new NoSuchTableException("Database %s does not exist.", databaseName);
}

return Collections.unmodifiableMap(DorisUtils.extractPropertiesFromSql(createDatabaseSql));
return DorisUtils.extractPropertiesFromSql(createDatabaseSql);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@ public class TestDorisDatabaseOperations extends TestDorisAbstractIT {
@Test
public void testBaseOperationDatabase() {
String databaseName = RandomNameUtils.genRandomName("it_db");
String comment = "comment";

Map<String, String> properties = new HashMap<>();
properties.put("property1", "value1");

testBaseOperation(databaseName, properties, null);
testBaseOperation(databaseName, properties, comment);

// recreate database, get exception.
Assertions.assertThrowsExactly(
Expand Down

0 comments on commit f4a448f

Please sign in to comment.