Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,12 @@ protected String getListDatabaseSql() {
@Override
protected String getCreateTableSql(
TablePath tablePath, CatalogTable table, boolean createIndex) {
return getCreateTableSqls(tablePath,table,createIndex).get(0);
}

@Override
protected List<String> getCreateTableSqls(
TablePath tablePath, CatalogTable table, boolean createIndex) {
return new DamengCreateTableSqlBuilder(table, createIndex).build(tablePath);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@

import org.apache.commons.collections4.CollectionUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
Expand All @@ -52,7 +53,8 @@ public DamengCreateTableSqlBuilder(CatalogTable catalogTable, boolean createInde
this.createIndex = createIndex;
}

public String build(TablePath tablePath) {
public List<String> build(TablePath tablePath) {
List<String> sqlList = new ArrayList<>();
StringBuilder createTableSql = new StringBuilder();
createTableSql
.append("CREATE TABLE ")
Expand Down Expand Up @@ -90,7 +92,7 @@ public String build(TablePath tablePath) {

createTableSql.append(String.join(",\n", columnSqls));
createTableSql.append("\n)");

sqlList.add(createTableSql.toString());
List<String> commentSqls =
columns.stream()
.filter(column -> StringUtils.isNotBlank(column.getComment()))
Expand All @@ -101,12 +103,10 @@ public String build(TablePath tablePath) {
.collect(Collectors.toList());

if (!commentSqls.isEmpty()) {
createTableSql.append(";\n");
createTableSql.append(String.join(";\n", commentSqls));
createTableSql.append(";");
sqlList.addAll(commentSqls);
}

return createTableSql.toString();
return sqlList;
}

String buildColumnSql(Column column) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
Expand Down Expand Up @@ -96,8 +97,10 @@ public void TestCreateTableSqlBuilder() {
new ArrayList<>(),
"User table");

String createTableSql =
new DamengCreateTableSqlBuilder(catalogTable, true).build(tablePath);
DamengCreateTableSqlBuilder damengCreateTableSqlBuilder =
new DamengCreateTableSqlBuilder(catalogTable, true);
List<String> sqlList = damengCreateTableSqlBuilder.build(tablePath);
String createTableSql = sqlList.get(0);
String expect =
"CREATE TABLE \"test_schema\".\"test_table\" (\n"
+ "\"id\" BIGINT NOT NULL,\n"
Expand All @@ -107,22 +110,31 @@ public void TestCreateTableSqlBuilder() {
+ "\"lastUpdateTime\" TIMESTAMP,\n"
+ "CONSTRAINT id_63d5 PRIMARY KEY (\"id\"),\n"
+ "\tCONSTRAINT name_49b6 UNIQUE (\"name\")\n"
+ ");\n"
+ "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"id\" IS 'id';\n"
+ "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"name\" IS 'name';\n"
+ "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"age\" IS 'age';\n"
+ "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"createTime\" IS 'createTime';\n"
+ "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"lastUpdateTime\" IS 'lastUpdateTime';";
+ ")";

String regex1 = "id_\\w+";
String regex2 = "name_\\w+";
String replacedStr1 = createTableSql.replaceAll(regex1, "id_").replaceAll(regex2, "name_");
String replacedStr2 = expect.replaceAll(regex1, "id_").replaceAll(regex2, "name_");
Assertions.assertEquals(replacedStr2, replacedStr1);

String expectIdComment = "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"id\" IS 'id'";
String expectNameComment = "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"name\" IS 'name'";
String expectLastUpdateTimeComment = "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"lastUpdateTime\" IS 'lastUpdateTime'";
String expectAgeComment = "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"age\" IS 'age'";
String expectCreateTimeComment = "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"createTime\" IS 'createTime'";

Assertions.assertEquals(expectIdComment, sqlList.get(1));
Assertions.assertEquals(expectNameComment, sqlList.get(2));
Assertions.assertEquals(expectLastUpdateTimeComment, sqlList.get(3));
Assertions.assertEquals(expectAgeComment, sqlList.get(4));
Assertions.assertEquals(expectCreateTimeComment, sqlList.get(5));

// skip index
DamengCreateTableSqlBuilder damengCreateTableSqlBuilderSkipIndex =
new DamengCreateTableSqlBuilder(catalogTable, false);
String createTableSqlSkipIndex =
new DamengCreateTableSqlBuilder(catalogTable, false).build(tablePath);
damengCreateTableSqlBuilderSkipIndex.build(tablePath).get(0);
// create table sql is change; The old unit tests are no longer applicable
String expectSkipIndex =
"CREATE TABLE \"test_schema\".\"test_table\" (\n"
Expand All @@ -131,12 +143,7 @@ public void TestCreateTableSqlBuilder() {
+ "\"age\" INT,\n"
+ "\"createTime\" TIMESTAMP,\n"
+ "\"lastUpdateTime\" TIMESTAMP\n"
+ ");\n"
+ "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"id\" IS 'id';\n"
+ "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"name\" IS 'name';\n"
+ "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"age\" IS 'age';\n"
+ "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"createTime\" IS 'createTime';\n"
+ "COMMENT ON COLUMN \"test_schema\".\"test_table\".\"lastUpdateTime\" IS 'lastUpdateTime';";
+ ");";
Assertions.assertEquals(expectSkipIndex, createTableSqlSkipIndex);
}

Expand Down