diff --git a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/dm/DamengCatalog.java b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/dm/DamengCatalog.java index 0878dd007fe9..6ee4bcbb7d7d 100644 --- a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/dm/DamengCatalog.java +++ b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/dm/DamengCatalog.java @@ -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 getCreateTableSqls( + TablePath tablePath, CatalogTable table, boolean createIndex) { return new DamengCreateTableSqlBuilder(table, createIndex).build(tablePath); } diff --git a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/dm/DamengCreateTableSqlBuilder.java b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/dm/DamengCreateTableSqlBuilder.java index 8683346cebd7..87160513482f 100644 --- a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/dm/DamengCreateTableSqlBuilder.java +++ b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/dm/DamengCreateTableSqlBuilder.java @@ -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; @@ -52,7 +53,8 @@ public DamengCreateTableSqlBuilder(CatalogTable catalogTable, boolean createInde this.createIndex = createIndex; } - public String build(TablePath tablePath) { + public List build(TablePath tablePath) { + List sqlList = new ArrayList<>(); StringBuilder createTableSql = new StringBuilder(); createTableSql .append("CREATE TABLE ") @@ -90,7 +92,7 @@ public String build(TablePath tablePath) { createTableSql.append(String.join(",\n", columnSqls)); createTableSql.append("\n)"); - + sqlList.add(createTableSql.toString()); List commentSqls = columns.stream() .filter(column -> StringUtils.isNotBlank(column.getComment())) @@ -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) { diff --git a/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/dm/DamengCreateTableSqlBuilderTest.java b/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/dm/DamengCreateTableSqlBuilderTest.java index 3b0e4b7e5875..416ef072410a 100644 --- a/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/dm/DamengCreateTableSqlBuilderTest.java +++ b/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/dm/DamengCreateTableSqlBuilderTest.java @@ -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; @@ -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 sqlList = damengCreateTableSqlBuilder.build(tablePath); + String createTableSql = sqlList.get(0); String expect = "CREATE TABLE \"test_schema\".\"test_table\" (\n" + "\"id\" BIGINT NOT NULL,\n" @@ -107,12 +110,7 @@ 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+"; @@ -120,9 +118,23 @@ public void TestCreateTableSqlBuilder() { 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" @@ -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); }