This is an automated email from the ASF dual-hosted git repository.
wanghailin pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new edca75b0d6 [Fix][Connector-V2] Fixed adding table comments (#8514)
edca75b0d6 is described below
commit edca75b0d648c546bd390d3e34cffc905b4266cd
Author: corgy-w <[email protected]>
AuthorDate: Thu Jan 16 10:49:33 2025 +0800
[Fix][Connector-V2] Fixed adding table comments (#8514)
---
docs/en/concept/sink-options-placeholders.md | 2 +
docs/en/connector-v2/sink/Clickhouse.md | 7 +-
docs/en/connector-v2/sink/Doris.md | 3 +
docs/en/connector-v2/sink/Maxcompute.md | 5 +-
docs/en/connector-v2/sink/StarRocks.md | 6 +-
docs/zh/concept/sink-options-placeholders.md | 2 +
docs/zh/connector-v2/sink/Clickhouse.md | 7 +-
docs/zh/connector-v2/sink/Doris.md | 5 +-
docs/zh/connector-v2/sink/StarRocks.md | 6 +-
.../seatunnel/api/sink/SaveModePlaceHolder.java | 1 +
.../clickhouse/catalog/ClickhouseCatalog.java | 2 +
.../clickhouse/config/ClickhouseConfig.java | 6 +-
.../seatunnel/clickhouse/util/ClickhouseProxy.java | 7 +-
.../clickhouse/ClickhouseCreateTableTest.java | 109 +++++++++++++++++
.../seatunnel/common/util/CatalogUtil.java | 7 +-
.../connectors/doris/config/DorisSinkOptions.java | 3 +
.../connectors/doris/util/DorisCatalogUtil.java | 6 +-
.../doris/catalog/DorisCreateTableTest.java | 129 ++++++++++++++++++++-
.../doris/catalog/PreviewActionTest.java | 1 +
.../maxcompute/catalog/MaxComputeCatalogUtil.java | 6 +-
.../maxcompute/config/MaxcomputeConfig.java | 4 +-
.../catalog/MaxComputeCreateTableTest.java | 6 +-
.../maxcompute/catalog/PreviewActionTest.java | 2 +-
.../starrocks/catalog/StarRocksCatalog.java | 2 +
.../starrocks/config/StarRocksSinkOptions.java | 3 +
.../starrocks/sink/StarRocksSinkFactory.java | 2 +-
.../starrocks/catalog/PreviewActionTest.java | 1 +
.../catalog/StarRocksCreateTableTest.java | 52 ++++++++-
28 files changed, 366 insertions(+), 26 deletions(-)
diff --git a/docs/en/concept/sink-options-placeholders.md
b/docs/en/concept/sink-options-placeholders.md
index 88eada299f..e7db53c132 100644
--- a/docs/en/concept/sink-options-placeholders.md
+++ b/docs/en/concept/sink-options-placeholders.md
@@ -37,6 +37,8 @@ The placeholders are mainly controlled by the following
expressions:
- Used to get the table unique-key fields in the upstream catalog table
- `${field_names}`
- Used to get the table field keys in the upstream catalog table
+- `${comment}`
+ - Used to get the table comment in the upstream catalog table
## Configuration
diff --git a/docs/en/connector-v2/sink/Clickhouse.md
b/docs/en/connector-v2/sink/Clickhouse.md
index 06ab4c0594..0837f76203 100644
--- a/docs/en/connector-v2/sink/Clickhouse.md
+++ b/docs/en/connector-v2/sink/Clickhouse.md
@@ -96,7 +96,8 @@ CREATE TABLE IF NOT EXISTS `${database}`.`${table}` (
ORDER BY (${rowtype_primary_key})
PRIMARY KEY (${rowtype_primary_key})
SETTINGS
- index_granularity = 8192;
+ index_granularity = 8192
+COMMENT '${comment}';
```
If custom fields are added to the template, for example, adding an `id` field:
@@ -109,7 +110,8 @@ CREATE TABLE IF NOT EXISTS `${database}`.`${table}` (
ORDER BY (${rowtype_primary_key})
PRIMARY KEY (${rowtype_primary_key})
SETTINGS
- index_granularity = 8192;
+ index_granularity = 8192
+COMMENT '${comment}';
```
The connector will automatically retrieve the corresponding types from the
upstream source and fill in the template, removing the `id` field from the
`rowtype_fields`. This method can be used to modify custom field types and
attributes.
@@ -121,6 +123,7 @@ The following placeholders can be used:
- `rowtype_fields`: Retrieves all fields from the upstream schema and
automatically maps them to Clickhouse field descriptions.
- `rowtype_primary_key`: Retrieves the primary key from the upstream schema
(this may be a list).
- `rowtype_unique_key`: Retrieves the unique key from the upstream schema
(this may be a list).
+- `comment`: Retrieves the table comment from the upstream schema.
## How to Create a Clickhouse Data Synchronization Jobs
diff --git a/docs/en/connector-v2/sink/Doris.md
b/docs/en/connector-v2/sink/Doris.md
index bddbad7713..dc177a3962 100644
--- a/docs/en/connector-v2/sink/Doris.md
+++ b/docs/en/connector-v2/sink/Doris.md
@@ -93,6 +93,7 @@ ${rowtype_primary_key},
${rowtype_fields}
) ENGINE=OLAP
UNIQUE KEY (${rowtype_primary_key})
+COMMENT '${comment}'
DISTRIBUTED BY HASH (${rowtype_primary_key})
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
@@ -110,6 +111,7 @@ CREATE TABLE IF NOT EXISTS `${database}`.`${table}`
id,
${rowtype_fields}
) ENGINE = OLAP UNIQUE KEY (${rowtype_primary_key})
+ COMMENT '${comment}'
DISTRIBUTED BY HASH (${rowtype_primary_key})
PROPERTIES
(
@@ -129,6 +131,7 @@ You can use the following placeholders
- rowtype_primary_key: Used to get the primary key in the upstream schema
(maybe a list)
- rowtype_unique_key: Used to get the unique key in the upstream schema (maybe
a list)
- rowtype_duplicate_key: Used to get the duplicate key in the upstream schema
(only for doris source, maybe a list)
+- comment: Used to get the table comment in the upstream schema
## Data Type Mapping
diff --git a/docs/en/connector-v2/sink/Maxcompute.md
b/docs/en/connector-v2/sink/Maxcompute.md
index 7210ee5bd3..b387ce9d97 100644
--- a/docs/en/connector-v2/sink/Maxcompute.md
+++ b/docs/en/connector-v2/sink/Maxcompute.md
@@ -62,7 +62,7 @@ Default template:
```sql
CREATE TABLE IF NOT EXISTS `${table}` (
${rowtype_fields}
-);
+) COMMENT '${comment}';
```
If a custom field is filled in the template, such as adding an `id` field
@@ -72,7 +72,7 @@ CREATE TABLE IF NOT EXISTS `${table}`
(
id,
${rowtype_fields}
-);
+) COMMENT '${comment}';
```
The connector will automatically obtain the corresponding type from the
upstream to complete the filling,
@@ -86,6 +86,7 @@ You can use the following placeholders
description of MaxCompute
- rowtype_primary_key: Used to get the primary key in the upstream schema
(maybe a list)
- rowtype_unique_key: Used to get the unique key in the upstream schema (maybe
a list)
+- comment: Used to get the table comment in the upstream schema
### schema_save_mode[Enum]
diff --git a/docs/en/connector-v2/sink/StarRocks.md
b/docs/en/connector-v2/sink/StarRocks.md
index 5358d6030b..e90c72d629 100644
--- a/docs/en/connector-v2/sink/StarRocks.md
+++ b/docs/en/connector-v2/sink/StarRocks.md
@@ -67,6 +67,7 @@ ${rowtype_primary_key},
${rowtype_fields}
) ENGINE=OLAP
PRIMARY KEY (${rowtype_primary_key})
+COMMENT '${comment}'
DISTRIBUTED BY HASH (${rowtype_primary_key})PROPERTIES (
"replication_num" = "1"
)
@@ -79,7 +80,9 @@ CREATE TABLE IF NOT EXISTS `${database}`.`${table}`
(
id,
${rowtype_fields}
-) ENGINE = OLAP DISTRIBUTED BY HASH (${rowtype_primary_key})
+) ENGINE = OLAP
+ COMMENT '${comment}'
+ DISTRIBUTED BY HASH (${rowtype_primary_key})
PROPERTIES
(
"replication_num" = "1"
@@ -97,6 +100,7 @@ You can use the following placeholders
description of StarRocks
- rowtype_primary_key: Used to get the primary key in the upstream schema
(maybe a list)
- rowtype_unique_key: Used to get the unique key in the upstream schema (maybe
a list)
+- comment: Used to get the table comment in the upstream schema
### table [string]
diff --git a/docs/zh/concept/sink-options-placeholders.md
b/docs/zh/concept/sink-options-placeholders.md
index 2553feb549..05542b76e0 100644
--- a/docs/zh/concept/sink-options-placeholders.md
+++ b/docs/zh/concept/sink-options-placeholders.md
@@ -37,6 +37,8 @@ SeaTunnel 提供了 Sink 参数占位符自动替换功能,可让您通过占
- 用于获取上游表中的唯一键字段名称列表
- `${field_names}`
- 用于获取上游表中的所有字段名称列表
+- `${comment}`
+ - 用于获取上游表中的表注释
## 配置
diff --git a/docs/zh/connector-v2/sink/Clickhouse.md
b/docs/zh/connector-v2/sink/Clickhouse.md
index 9b36f936b0..3dc04ce962 100644
--- a/docs/zh/connector-v2/sink/Clickhouse.md
+++ b/docs/zh/connector-v2/sink/Clickhouse.md
@@ -96,7 +96,8 @@ CREATE TABLE IF NOT EXISTS `${database}`.`${table}` (
ORDER BY (${rowtype_primary_key})
PRIMARY KEY (${rowtype_primary_key})
SETTINGS
- index_granularity = 8192;
+ index_granularity = 8192
+COMMENT '${comment}';
```
如果模板中填写了自定义字段,例如添加 id 字段
@@ -109,7 +110,8 @@ CREATE TABLE IF NOT EXISTS `${database}`.`${table}` (
ORDER BY (${rowtype_primary_key})
PRIMARY KEY (${rowtype_primary_key})
SETTINGS
- index_granularity = 8192;
+ index_granularity = 8192
+ COMMENT '${comment}';
```
连接器会自动从上游获取对应类型完成填充,
@@ -122,6 +124,7 @@ CREATE TABLE IF NOT EXISTS `${database}`.`${table}` (
- rowtype_fields:用于获取上游schema中的所有字段,自动映射到 Clickhouse 的字段描述。
- rowtype_primary_key:用于获取上游模式中的主键(可能是列表)。
- rowtype_unique_key:用于获取上游模式中的唯一键(可能是列表)。
+- comment:用于获取上游模式中的表注释。
## 如何创建一个clickhouse 同步任务
diff --git a/docs/zh/connector-v2/sink/Doris.md
b/docs/zh/connector-v2/sink/Doris.md
index 9de0580f7a..66fbe728ae 100644
--- a/docs/zh/connector-v2/sink/Doris.md
+++ b/docs/zh/connector-v2/sink/Doris.md
@@ -92,6 +92,7 @@ ${rowtype_primary_key},
${rowtype_fields}
) ENGINE=OLAP
UNIQUE KEY (${rowtype_primary_key})
+COMMENT '${comment}'
DISTRIBUTED BY HASH (${rowtype_primary_key})
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
@@ -109,6 +110,7 @@ CREATE TABLE IF NOT EXISTS `${database}`.`${table_name}`
id,
${rowtype_fields}
) ENGINE = OLAP UNIQUE KEY (${rowtype_primary_key})
+ COMMENT '${comment}'
DISTRIBUTED BY HASH (${rowtype_primary_key})
PROPERTIES
(
@@ -124,8 +126,9 @@ CREATE TABLE IF NOT EXISTS `${database}`.`${table_name}`
- database:用于获取上游schema中的数据库。
- table_name:用于获取上游schema中的表名。
- rowtype_fields:用于获取上游schema中的所有字段,自动映射到Doris的字段描述。
-- rowtype_primary_key:用于获取上游模式中的主键(可能是列表)
+- rowtype_primary_key:用于获取上游模式中的主键(可能是列表)。
- rowtype_unique_key:用于获取上游模式中的唯一键(可能是列表)。
+- comment:用于获取上游模式中的表注释。
## 数据类型映射
diff --git a/docs/zh/connector-v2/sink/StarRocks.md
b/docs/zh/connector-v2/sink/StarRocks.md
index a2258bf5bb..3a9ac1eab3 100644
--- a/docs/zh/connector-v2/sink/StarRocks.md
+++ b/docs/zh/connector-v2/sink/StarRocks.md
@@ -64,6 +64,7 @@ ${rowtype_primary_key},
${rowtype_fields}
) ENGINE=OLAP
PRIMARY KEY (${rowtype_primary_key})
+COMMENT '${comment}'
DISTRIBUTED BY HASH (${rowtype_primary_key})PROPERTIES (
"replication_num" = "1"
)
@@ -76,7 +77,9 @@ CREATE TABLE IF NOT EXISTS `${database}`.`${table_name}`
(
id,
${rowtype_fields}
-) ENGINE = OLAP DISTRIBUTED BY HASH (${rowtype_primary_key})
+) ENGINE = OLAP
+ COMMENT '${comment}'
+ DISTRIBUTED BY HASH (${rowtype_primary_key})
PROPERTIES
(
"replication_num" = "1"
@@ -92,6 +95,7 @@ StarRocks数据接收器根据上游数据自动获取相应的信息来填充
- rowtype_fields: 上游数据模式的所有字段信息,连接器会将字段信息自动映射到StarRocks对应的类型
- rowtype_primary_key: 上游数据模式的主键信息,结果可能是列表
- rowtype_unique_key: 上游数据模式的唯一键信息,结果可能是列表
+- comment: 上游数据模式的注释信息
### table [string]
diff --git
a/seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SaveModePlaceHolder.java
b/seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SaveModePlaceHolder.java
index 02b72faffb..9b4e7ae426 100644
---
a/seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SaveModePlaceHolder.java
+++
b/seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/SaveModePlaceHolder.java
@@ -27,6 +27,7 @@ public enum SaveModePlaceHolder {
ROWTYPE_FIELDS("rowtype_fields", "fields"),
TABLE("table", "table"),
DATABASE("database", "database"),
+ COMMENT("comment", "comment"),
/** @deprecated instead by {@link #TABLE} todo remove this enum */
@Deprecated
TABLE_NAME("table_name", "table name");
diff --git
a/seatunnel-connectors-v2/connector-clickhouse/src/main/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/catalog/ClickhouseCatalog.java
b/seatunnel-connectors-v2/connector-clickhouse/src/main/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/catalog/ClickhouseCatalog.java
index 4c7bba896e..6d4ef98ced 100644
---
a/seatunnel-connectors-v2/connector-clickhouse/src/main/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/catalog/ClickhouseCatalog.java
+++
b/seatunnel-connectors-v2/connector-clickhouse/src/main/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/catalog/ClickhouseCatalog.java
@@ -144,6 +144,7 @@ public class ClickhouseCatalog implements Catalog {
tablePath.getDatabaseName(),
tablePath.getTableName(),
template,
+ table.getComment(),
table.getTableSchema());
}
@@ -252,6 +253,7 @@ public class ClickhouseCatalog implements Catalog {
tablePath.getDatabaseName(),
tablePath.getTableName(),
catalogTable.get().getTableSchema(),
+ catalogTable.get().getComment(),
ClickhouseConfig.SAVE_MODE_CREATE_TEMPLATE.key()));
} else if (actionType == ActionType.DROP_TABLE) {
return new SQLPreviewResult(
diff --git
a/seatunnel-connectors-v2/connector-clickhouse/src/main/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/config/ClickhouseConfig.java
b/seatunnel-connectors-v2/connector-clickhouse/src/main/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/config/ClickhouseConfig.java
index 6476223e89..8ee0e83747 100644
---
a/seatunnel-connectors-v2/connector-clickhouse/src/main/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/config/ClickhouseConfig.java
+++
b/seatunnel-connectors-v2/connector-clickhouse/src/main/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/config/ClickhouseConfig.java
@@ -228,7 +228,11 @@ public class ClickhouseConfig {
+
SaveModePlaceHolder.ROWTYPE_PRIMARY_KEY.getPlaceHolder()
+ ")\n"
+ "SETTINGS\n"
- + " index_granularity = 8192;")
+ + " index_granularity = 8192"
+ + "\n"
+ + "COMMENT '"
+ +
SaveModePlaceHolder.COMMENT.getPlaceHolder()
+ + "';")
.withDescription(
"Create table statement template, used to create
Clickhouse table");
}
diff --git
a/seatunnel-connectors-v2/connector-clickhouse/src/main/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/util/ClickhouseProxy.java
b/seatunnel-connectors-v2/connector-clickhouse/src/main/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/util/ClickhouseProxy.java
index 275e16791b..61243deaa4 100644
---
a/seatunnel-connectors-v2/connector-clickhouse/src/main/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/util/ClickhouseProxy.java
+++
b/seatunnel-connectors-v2/connector-clickhouse/src/main/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/util/ClickhouseProxy.java
@@ -351,13 +351,18 @@ public class ClickhouseProxy {
}
public void createTable(
- String database, String table, String template, TableSchema
tableSchema) {
+ String database,
+ String table,
+ String template,
+ String comment,
+ TableSchema tableSchema) {
String createTableSql =
ClickhouseCatalogUtil.INSTANCE.getCreateTableSql(
template,
database,
table,
tableSchema,
+ comment,
ClickhouseConfig.SAVE_MODE_CREATE_TEMPLATE.key());
log.debug("Create Clickhouse table sql: {}", createTableSql);
executeSql(createTableSql);
diff --git
a/seatunnel-connectors-v2/connector-clickhouse/src/test/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/ClickhouseCreateTableTest.java
b/seatunnel-connectors-v2/connector-clickhouse/src/test/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/ClickhouseCreateTableTest.java
index 5728b18bcf..d270be52a8 100644
---
a/seatunnel-connectors-v2/connector-clickhouse/src/test/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/ClickhouseCreateTableTest.java
+++
b/seatunnel-connectors-v2/connector-clickhouse/src/test/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/ClickhouseCreateTableTest.java
@@ -96,6 +96,7 @@ public class ClickhouseCreateTableTest {
.ASC)))))
.columns(columns)
.build(),
+ "clickhouse test table",
ClickhouseConfig.SAVE_MODE_CREATE_TEMPLATE.key());
Assertions.assertEquals(
createTableSql,
@@ -129,6 +130,7 @@ public class ClickhouseCreateTableTest {
"test1",
"test2",
tableSchema,
+ "clickhouse test table",
ClickhouseConfig.SAVE_MODE_CREATE_TEMPLATE.key()));
String primaryKeyHolder =
SaveModePlaceHolder.ROWTYPE_PRIMARY_KEY.getPlaceHolder();
@@ -224,6 +226,7 @@ public class ClickhouseCreateTableTest {
"",
Arrays.asList("L_ORDERKEY", "L_LINENUMBER")))
.columns(columns)
.build(),
+ "clickhouse test table",
ClickhouseConfig.SAVE_MODE_CREATE_TEMPLATE.key());
String expected =
"CREATE TABLE IF NOT EXISTS `tpch`.`lineitem` (\n"
@@ -249,4 +252,110 @@ public class ClickhouseCreateTableTest {
+ " index_granularity = 8192;";
Assertions.assertEquals(result, expected);
}
+
+ @Test
+ public void testTableComment() {
+ List<Column> columns = new ArrayList<>();
+
+ columns.add(
+ PhysicalColumn.of("L_ORDERKEY", BasicType.INT_TYPE, (Long)
null, false, null, ""));
+ columns.add(
+ PhysicalColumn.of("L_PARTKEY", BasicType.INT_TYPE, (Long)
null, false, null, ""));
+ columns.add(
+ PhysicalColumn.of("L_SUPPKEY", BasicType.INT_TYPE, (Long)
null, false, null, ""));
+ columns.add(
+ PhysicalColumn.of(
+ "L_LINENUMBER", BasicType.INT_TYPE, (Long) null,
false, null, ""));
+ columns.add(
+ PhysicalColumn.of(
+ "L_QUANTITY", new DecimalType(15, 2), (Long) null,
false, null, ""));
+ columns.add(
+ PhysicalColumn.of(
+ "L_EXTENDEDPRICE", new DecimalType(15, 2), (Long)
null, false, null, ""));
+ columns.add(
+ PhysicalColumn.of(
+ "L_DISCOUNT", new DecimalType(15, 2), (Long) null,
false, null, ""));
+ columns.add(
+ PhysicalColumn.of("L_TAX", new DecimalType(15, 2), (Long)
null, false, null, ""));
+ columns.add(
+ PhysicalColumn.of(
+ "L_RETURNFLAG", BasicType.STRING_TYPE, (Long) null,
false, null, ""));
+ columns.add(
+ PhysicalColumn.of(
+ "L_LINESTATUS", BasicType.STRING_TYPE, (Long) null,
false, null, ""));
+ columns.add(
+ PhysicalColumn.of(
+ "L_SHIPDATE", LocalTimeType.LOCAL_DATE_TYPE, (Long)
null, false, null, ""));
+ columns.add(
+ PhysicalColumn.of(
+ "L_COMMITDATE",
+ LocalTimeType.LOCAL_DATE_TYPE,
+ (Long) null,
+ false,
+ null,
+ ""));
+ columns.add(
+ PhysicalColumn.of(
+ "L_RECEIPTDATE",
+ LocalTimeType.LOCAL_DATE_TYPE,
+ (Long) null,
+ false,
+ null,
+ ""));
+ columns.add(
+ PhysicalColumn.of(
+ "L_SHIPINSTRUCT", BasicType.STRING_TYPE, (Long) null,
false, null, ""));
+ columns.add(
+ PhysicalColumn.of(
+ "L_SHIPMODE", BasicType.STRING_TYPE, (Long) null,
false, null, ""));
+ columns.add(
+ PhysicalColumn.of(
+ "L_COMMENT", BasicType.STRING_TYPE, (Long) null,
false, null, ""));
+
+ String result =
+ ClickhouseCatalogUtil.INSTANCE.getCreateTableSql(
+ "CREATE TABLE IF NOT EXISTS `${database}`.`${table}`
(\n"
+ + "${rowtype_primary_key},\n"
+ + "${rowtype_fields}\n"
+ + ") ENGINE = MergeTree()\n"
+ + "ORDER BY (${rowtype_primary_key})\n"
+ + "PRIMARY KEY (${rowtype_primary_key})\n"
+ + "SETTINGS\n"
+ + " index_granularity = 8192\n"
+ + "COMMENT '${comment}';",
+ "tpch",
+ "lineitem",
+ TableSchema.builder()
+ .primaryKey(
+ PrimaryKey.of(
+ "",
Arrays.asList("L_ORDERKEY", "L_LINENUMBER")))
+ .columns(columns)
+ .build(),
+ "clickhouse test table",
+ ClickhouseConfig.SAVE_MODE_CREATE_TEMPLATE.key());
+ String expected =
+ "CREATE TABLE IF NOT EXISTS `tpch`.`lineitem` (\n"
+ + "`L_ORDERKEY` Int32 ,`L_LINENUMBER` Int32 ,\n"
+ + "`L_PARTKEY` Int32 ,\n"
+ + "`L_SUPPKEY` Int32 ,\n"
+ + "`L_QUANTITY` Decimal(15, 2) ,\n"
+ + "`L_EXTENDEDPRICE` Decimal(15, 2) ,\n"
+ + "`L_DISCOUNT` Decimal(15, 2) ,\n"
+ + "`L_TAX` Decimal(15, 2) ,\n"
+ + "`L_RETURNFLAG` String ,\n"
+ + "`L_LINESTATUS` String ,\n"
+ + "`L_SHIPDATE` Date ,\n"
+ + "`L_COMMITDATE` Date ,\n"
+ + "`L_RECEIPTDATE` Date ,\n"
+ + "`L_SHIPINSTRUCT` String ,\n"
+ + "`L_SHIPMODE` String ,\n"
+ + "`L_COMMENT` String \n"
+ + ") ENGINE = MergeTree()\n"
+ + "ORDER BY (`L_ORDERKEY`,`L_LINENUMBER`)\n"
+ + "PRIMARY KEY (`L_ORDERKEY`,`L_LINENUMBER`)\n"
+ + "SETTINGS\n"
+ + " index_granularity = 8192\n"
+ + "COMMENT 'clickhouse test table';";
+ Assertions.assertEquals(result, expected);
+ }
}
diff --git
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/util/CatalogUtil.java
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/util/CatalogUtil.java
index 7d10260cf5..1fdc59579a 100644
---
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/util/CatalogUtil.java
+++
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/util/CatalogUtil.java
@@ -30,6 +30,7 @@ import lombok.extern.slf4j.Slf4j;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -43,6 +44,7 @@ public abstract class CatalogUtil {
String database,
String table,
TableSchema tableSchema,
+ String comment,
String optionsKey) {
String primaryKey = "";
if (tableSchema.getPrimaryKey() != null) {
@@ -101,7 +103,10 @@ public abstract class CatalogUtil {
return
template.replaceAll(SaveModePlaceHolder.DATABASE.getReplacePlaceHolder(),
database)
.replaceAll(SaveModePlaceHolder.TABLE.getReplacePlaceHolder(),
table)
.replaceAll(
-
SaveModePlaceHolder.ROWTYPE_FIELDS.getReplacePlaceHolder(), rowTypeFields);
+
SaveModePlaceHolder.ROWTYPE_FIELDS.getReplacePlaceHolder(), rowTypeFields)
+ .replaceAll(
+ SaveModePlaceHolder.COMMENT.getReplacePlaceHolder(),
+ Objects.isNull(comment) ? "" : comment);
}
private String mergeColumnInTemplate(
diff --git
a/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/config/DorisSinkOptions.java
b/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/config/DorisSinkOptions.java
index 372418d12a..5340c953ba 100644
---
a/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/config/DorisSinkOptions.java
+++
b/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/config/DorisSinkOptions.java
@@ -134,6 +134,9 @@ public interface DorisSinkOptions {
+ " UNIQUE KEY ("
+
SaveModePlaceHolder.ROWTYPE_PRIMARY_KEY.getPlaceHolder()
+ ")\n"
+ + "COMMENT '"
+ +
SaveModePlaceHolder.COMMENT.getPlaceHolder()
+ + "'\n"
+ "DISTRIBUTED BY HASH ("
+
SaveModePlaceHolder.ROWTYPE_PRIMARY_KEY.getPlaceHolder()
+ ")\n "
diff --git
a/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/util/DorisCatalogUtil.java
b/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/util/DorisCatalogUtil.java
index 91ce2a51d2..11018d5c5c 100644
---
a/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/util/DorisCatalogUtil.java
+++
b/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/util/DorisCatalogUtil.java
@@ -37,6 +37,7 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -205,7 +206,10 @@ public class DorisCatalogUtil {
.replaceAll(
SaveModePlaceHolder.TABLE.getReplacePlaceHolder(),
tablePath.getTableName())
.replaceAll(
-
SaveModePlaceHolder.ROWTYPE_FIELDS.getReplacePlaceHolder(), rowTypeFields);
+
SaveModePlaceHolder.ROWTYPE_FIELDS.getReplacePlaceHolder(), rowTypeFields)
+ .replaceAll(
+ SaveModePlaceHolder.COMMENT.getReplacePlaceHolder(),
+ Objects.isNull(catalogTable.getComment()) ? "" :
catalogTable.getComment());
}
private static String mergeColumnInTemplate(
diff --git
a/seatunnel-connectors-v2/connector-doris/src/test/java/org/apache/seatunnel/connectors/doris/catalog/DorisCreateTableTest.java
b/seatunnel-connectors-v2/connector-doris/src/test/java/org/apache/seatunnel/connectors/doris/catalog/DorisCreateTableTest.java
index cdaa55487c..2142c0e2e2 100644
---
a/seatunnel-connectors-v2/connector-doris/src/test/java/org/apache/seatunnel/connectors/doris/catalog/DorisCreateTableTest.java
+++
b/seatunnel-connectors-v2/connector-doris/src/test/java/org/apache/seatunnel/connectors/doris/catalog/DorisCreateTableTest.java
@@ -119,7 +119,7 @@ public class DorisCreateTableTest {
.build(),
Collections.emptyMap(),
Collections.emptyList(),
- ""),
+ "doris test comment"),
DorisTypeConverterV1.INSTANCE);
Assertions.assertEquals(
result,
@@ -153,7 +153,7 @@ public class DorisCreateTableTest {
.build(),
Collections.emptyMap(),
Collections.emptyList(),
- "");
+ "doris test comment");
TablePath tablePath = TablePath.of("test1.test2");
SeaTunnelRuntimeException actualSeaTunnelRuntimeException =
Assertions.assertThrows(
@@ -263,7 +263,7 @@ public class DorisCreateTableTest {
.build(),
Collections.emptyMap(),
Collections.emptyList(),
- ""),
+ "doris test comment"),
DorisTypeConverterV1.INSTANCE);
String expected =
"CREATE TABLE IF NOT EXISTS `tpch`.`lineitem` (\n"
@@ -328,7 +328,7 @@ public class DorisCreateTableTest {
.build(),
Collections.emptyMap(),
Collections.emptyList(),
- ""),
+ "doris test comment"),
DorisTypeConverterV1.INSTANCE);
Assertions.assertEquals(
@@ -380,7 +380,7 @@ public class DorisCreateTableTest {
.build(),
Collections.emptyMap(),
Collections.emptyList(),
- ""),
+ "doris test comment"),
DorisTypeConverterV1.INSTANCE);
Assertions.assertEquals(
@@ -394,4 +394,123 @@ public class DorisCreateTableTest {
+ " partitioned by `id`,`age`,`name`;",
result);
}
+
+ @Test
+ public void testTableComment() {
+ List<Column> columns = new ArrayList<>();
+
+ columns.add(
+ PhysicalColumn.of(
+ "id",
+ BasicType.LONG_TYPE,
+ (Long) null,
+ true,
+ null,
+ "This is the ID column"));
+ columns.add(
+ PhysicalColumn.of(
+ "name",
+ BasicType.STRING_TYPE,
+ (Long) null,
+ true,
+ null,
+ "This is the name column"));
+ columns.add(
+ PhysicalColumn.of(
+ "age",
+ BasicType.INT_TYPE,
+ (Long) null,
+ true,
+ null,
+ "This is the age column"));
+ columns.add(PhysicalColumn.of("score", BasicType.INT_TYPE, (Long)
null, true, null, ""));
+ columns.add(
+ PhysicalColumn.of(
+ "gender",
+ BasicType.BYTE_TYPE,
+ (Long) null,
+ true,
+ null,
+ "This is the gender column"));
+ columns.add(
+ PhysicalColumn.of(
+ "create_time",
+ BasicType.LONG_TYPE,
+ (Long) null,
+ true,
+ null,
+ "This is the create_time column"));
+
+ String result =
+ DorisCatalogUtil.getCreateTableStatement(
+ "CREATE TABLE IF NOT EXISTS `${database}`.`${table}`
(\n"
+ + "${rowtype_primary_key},\n"
+ + "${rowtype_fields}\n"
+ + ") ENGINE=OLAP\n"
+ + " UNIQUE KEY (${rowtype_primary_key})\n"
+ + "COMMENT '${comment}'\n"
+ + "DISTRIBUTED BY HASH
(${rowtype_primary_key})\n"
+ + " PROPERTIES (\n"
+ + "\"replication_allocation\" =
\"tag.location.default: 1\",\n"
+ + "\"in_memory\" = \"false\",\n"
+ + "\"storage_format\" = \"V2\",\n"
+ + "\"disable_auto_compaction\" = \"false\"\n"
+ + ")",
+ TablePath.of("test1.test2"),
+ CatalogTable.of(
+ TableIdentifier.of("test", "test1", "test2"),
+ TableSchema.builder()
+ .primaryKey(PrimaryKey.of("",
Arrays.asList("id", "age")))
+ .constraintKey(
+ Arrays.asList(
+ ConstraintKey.of(
+
ConstraintKey.ConstraintType
+
.UNIQUE_KEY,
+ "unique_key",
+
Collections.singletonList(
+
ConstraintKey
+
.ConstraintKeyColumn
+
.of(
+
"name",
+
ConstraintKey
+
.ColumnSortType
+
.DESC))),
+ ConstraintKey.of(
+
ConstraintKey.ConstraintType
+
.UNIQUE_KEY,
+ "unique_key2",
+
Collections.singletonList(
+
ConstraintKey
+
.ConstraintKeyColumn
+
.of(
+
"score",
+
ConstraintKey
+
.ColumnSortType
+
.ASC)))))
+ .columns(columns)
+ .build(),
+ Collections.emptyMap(),
+ Collections.emptyList(),
+ "doris test comment"),
+ DorisTypeConverterV1.INSTANCE);
+
+ Assertions.assertEquals(
+ result,
+ "CREATE TABLE IF NOT EXISTS `test1`.`test2` (\n"
+ + "`id` BIGINT NULL COMMENT 'This is the ID
column',`age` INT NULL COMMENT 'This is the age column',\n"
+ + "`name` STRING NULL COMMENT 'This is the name
column',\n"
+ + "`score` INT NULL ,\n"
+ + "`gender` TINYINT NULL COMMENT 'This is the gender
column',\n"
+ + "`create_time` BIGINT NULL COMMENT 'This is the
create_time column'\n"
+ + ") ENGINE=OLAP\n"
+ + " UNIQUE KEY (`id`,`age`)\n"
+ + "COMMENT 'doris test comment'\n"
+ + "DISTRIBUTED BY HASH (`id`,`age`)\n"
+ + " PROPERTIES (\n"
+ + "\"replication_allocation\" =
\"tag.location.default: 1\",\n"
+ + "\"in_memory\" = \"false\",\n"
+ + "\"storage_format\" = \"V2\",\n"
+ + "\"disable_auto_compaction\" = \"false\"\n"
+ + ")");
+ }
}
diff --git
a/seatunnel-connectors-v2/connector-doris/src/test/java/org/apache/seatunnel/connectors/doris/catalog/PreviewActionTest.java
b/seatunnel-connectors-v2/connector-doris/src/test/java/org/apache/seatunnel/connectors/doris/catalog/PreviewActionTest.java
index 96d6e90f97..754e30cca0 100644
---
a/seatunnel-connectors-v2/connector-doris/src/test/java/org/apache/seatunnel/connectors/doris/catalog/PreviewActionTest.java
+++
b/seatunnel-connectors-v2/connector-doris/src/test/java/org/apache/seatunnel/connectors/doris/catalog/PreviewActionTest.java
@@ -108,6 +108,7 @@ public class PreviewActionTest {
+ "`test` STRING NULL \n"
+ ") ENGINE=OLAP\n"
+ " UNIQUE KEY (`id`)\n"
+ + "COMMENT 'comment'\n"
+ "DISTRIBUTED BY HASH (`id`)\n"
+ " PROPERTIES (\n"
+ "\"replication_allocation\" =
\"tag.location.default: 1\",\n"
diff --git
a/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/catalog/MaxComputeCatalogUtil.java
b/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/catalog/MaxComputeCatalogUtil.java
index 8097d95a65..fb87385907 100644
---
a/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/catalog/MaxComputeCatalogUtil.java
+++
b/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/catalog/MaxComputeCatalogUtil.java
@@ -36,6 +36,7 @@ import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -108,7 +109,10 @@ public class MaxComputeCatalogUtil {
.replaceAll(
SaveModePlaceHolder.TABLE.getReplacePlaceHolder(),
tablePath.getTableName())
.replaceAll(
-
SaveModePlaceHolder.ROWTYPE_FIELDS.getReplacePlaceHolder(), rowTypeFields);
+
SaveModePlaceHolder.ROWTYPE_FIELDS.getReplacePlaceHolder(), rowTypeFields)
+ .replaceAll(
+ SaveModePlaceHolder.COMMENT.getReplacePlaceHolder(),
+ Objects.isNull(catalogTable.getComment()) ? "" :
catalogTable.getComment());
}
private static String mergeColumnInTemplate(
diff --git
a/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/config/MaxcomputeConfig.java
b/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/config/MaxcomputeConfig.java
index d3465bd3db..c1e65be949 100644
---
a/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/config/MaxcomputeConfig.java
+++
b/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/config/MaxcomputeConfig.java
@@ -98,7 +98,9 @@ public class MaxcomputeConfig implements Serializable {
+ "` (\n"
+
SaveModePlaceHolder.ROWTYPE_FIELDS.getPlaceHolder()
+ "\n"
- + ");")
+ + ") COMMENT '"
+ +
SaveModePlaceHolder.COMMENT.getPlaceHolder()
+ + "' ;")
.withDescription(
"Create table statement template, used to create
MaxCompute table");
}
diff --git
a/seatunnel-connectors-v2/connector-maxcompute/src/test/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/catalog/MaxComputeCreateTableTest.java
b/seatunnel-connectors-v2/connector-maxcompute/src/test/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/catalog/MaxComputeCreateTableTest.java
index efdcd070e3..5e5a3745bb 100644
---
a/seatunnel-connectors-v2/connector-maxcompute/src/test/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/catalog/MaxComputeCreateTableTest.java
+++
b/seatunnel-connectors-v2/connector-maxcompute/src/test/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/catalog/MaxComputeCreateTableTest.java
@@ -73,7 +73,7 @@ public class MaxComputeCreateTableTest {
+ "\"in_memory\" = \"false\",\n"
+ "\"storage_format\" = \"V2\",\n"
+ "\"disable_auto_compaction\" = \"false\"\n"
- + ");",
+ + ") COMMENT '${comment}';",
TablePath.of("test1.test2"),
CatalogTable.of(
TableIdentifier.of("test", "test1", "test2"),
@@ -109,7 +109,7 @@ public class MaxComputeCreateTableTest {
.build(),
Collections.emptyMap(),
Collections.emptyList(),
- ""));
+ "comment"));
Assertions.assertEquals(
result,
"CREATE TABLE IF NOT EXISTS `test1`.`test2` (
\n"
@@ -128,6 +128,6 @@ public class MaxComputeCreateTableTest {
+ "\"in_memory\" = \"false\",\n"
+ "\"storage_format\" = \"V2\",\n"
+ "\"disable_auto_compaction\" = \"false\"\n"
- + ");");
+ + ") COMMENT 'comment';");
}
}
diff --git
a/seatunnel-connectors-v2/connector-maxcompute/src/test/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/catalog/PreviewActionTest.java
b/seatunnel-connectors-v2/connector-maxcompute/src/test/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/catalog/PreviewActionTest.java
index d4ba6799ac..78b55e9de8 100644
---
a/seatunnel-connectors-v2/connector-maxcompute/src/test/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/catalog/PreviewActionTest.java
+++
b/seatunnel-connectors-v2/connector-maxcompute/src/test/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/catalog/PreviewActionTest.java
@@ -90,7 +90,7 @@ public class PreviewActionTest {
"CREATE TABLE IF NOT EXISTS `testtable` (\n"
+ "`id` BIGINT NOT NULL ,\n"
+ "`test` STRING NULL \n"
- + ");",
+ + ") COMMENT 'comment' ;",
Optional.of(CATALOG_TABLE));
}
diff --git
a/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/StarRocksCatalog.java
b/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/StarRocksCatalog.java
index ae97cccfa4..cd44b7cf40 100644
---
a/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/StarRocksCatalog.java
+++
b/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/StarRocksCatalog.java
@@ -209,6 +209,7 @@ public class StarRocksCatalog implements Catalog {
tablePath.getDatabaseName(),
tablePath.getTableName(),
table.getTableSchema(),
+ table.getComment(),
StarRocksSinkOptions.SAVE_MODE_CREATE_TEMPLATE.key()));
}
@@ -504,6 +505,7 @@ public class StarRocksCatalog implements Catalog {
tablePath.getDatabaseName(),
tablePath.getTableName(),
catalogTable.get().getTableSchema(),
+ catalogTable.get().getComment(),
StarRocksSinkOptions.SAVE_MODE_CREATE_TEMPLATE.key()));
} else if (actionType == ActionType.DROP_TABLE) {
return new SQLPreviewResult(
diff --git
a/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/config/StarRocksSinkOptions.java
b/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/config/StarRocksSinkOptions.java
index bb34aaa5d1..a0467d9917 100644
---
a/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/config/StarRocksSinkOptions.java
+++
b/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/config/StarRocksSinkOptions.java
@@ -71,6 +71,9 @@ public interface StarRocksSinkOptions {
+ " PRIMARY KEY ("
+
SaveModePlaceHolder.ROWTYPE_PRIMARY_KEY.getPlaceHolder()
+ ")\n"
+ + "COMMENT '"
+ +
SaveModePlaceHolder.COMMENT.getPlaceHolder()
+ + "'\n"
+ "DISTRIBUTED BY HASH ("
+
SaveModePlaceHolder.ROWTYPE_PRIMARY_KEY.getPlaceHolder()
+ ")"
diff --git
a/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/sink/StarRocksSinkFactory.java
b/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/sink/StarRocksSinkFactory.java
index 6057eb97af..b2f482c201 100644
---
a/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/sink/StarRocksSinkFactory.java
+++
b/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/sink/StarRocksSinkFactory.java
@@ -100,7 +100,7 @@ public class StarRocksSinkFactory implements
TableSinkFactory {
catalogTable.getTableSchema(),
catalogTable.getOptions(),
catalogTable.getPartitionKeys(),
- catalogTable.getCatalogName());
+ catalogTable.getComment());
return () -> new StarRocksSink(sinkConfig, finalCatalogTable);
}
diff --git
a/seatunnel-connectors-v2/connector-starrocks/src/test/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/PreviewActionTest.java
b/seatunnel-connectors-v2/connector-starrocks/src/test/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/PreviewActionTest.java
index 37c06345fd..51b2b2290b 100644
---
a/seatunnel-connectors-v2/connector-starrocks/src/test/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/PreviewActionTest.java
+++
b/seatunnel-connectors-v2/connector-starrocks/src/test/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/PreviewActionTest.java
@@ -106,6 +106,7 @@ public class PreviewActionTest {
+ "`test2` STRING NULL \n"
+ ") ENGINE=OLAP\n"
+ " PRIMARY KEY (`test`)\n"
+ + "COMMENT 'comment'\n"
+ "DISTRIBUTED BY HASH (`test`)PROPERTIES (\n"
+ " \"replication_num\" = \"1\" \n"
+ ")",
diff --git
a/seatunnel-connectors-v2/connector-starrocks/src/test/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/StarRocksCreateTableTest.java
b/seatunnel-connectors-v2/connector-starrocks/src/test/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/StarRocksCreateTableTest.java
index c4d0616733..25b06f2806 100644
---
a/seatunnel-connectors-v2/connector-starrocks/src/test/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/StarRocksCreateTableTest.java
+++
b/seatunnel-connectors-v2/connector-starrocks/src/test/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/StarRocksCreateTableTest.java
@@ -111,6 +111,7 @@ public class StarRocksCreateTableTest {
.ASC)))))
.columns(columns)
.build(),
+ "test table",
StarRocksSinkOptions.SAVE_MODE_CREATE_TEMPLATE.key());
Assertions.assertEquals(
"CREATE TABLE IF NOT EXISTS `test1`.`test2` (
\n"
@@ -143,7 +144,7 @@ public class StarRocksCreateTableTest {
.build(),
Collections.emptyMap(),
Collections.emptyList(),
- "");
+ "test table");
TablePath tablePath = TablePath.of("test1.test2");
String createTemplate =
StarRocksSinkOptions.SAVE_MODE_CREATE_TEMPLATE.defaultValue();
RuntimeException actualSeaTunnelRuntimeException =
@@ -155,6 +156,7 @@ public class StarRocksCreateTableTest {
tablePath.getDatabaseName(),
tablePath.getTableName(),
catalogTable.getTableSchema(),
+ catalogTable.getComment(),
StarRocksSinkOptions.SAVE_MODE_CREATE_TEMPLATE.key()));
String primaryKeyHolder =
SaveModePlaceHolder.ROWTYPE_PRIMARY_KEY.getPlaceHolder();
SeaTunnelRuntimeException exceptSeaTunnelRuntimeException =
@@ -255,6 +257,7 @@ public class StarRocksCreateTableTest {
"",
Arrays.asList("L_ORDERKEY", "L_LINENUMBER")))
.columns(columns)
.build(),
+ "test table",
StarRocksSinkOptions.SAVE_MODE_CREATE_TEMPLATE.key());
String expected =
"CREATE TABLE IF NOT EXISTS `tpch`.`lineitem` (\n"
@@ -316,6 +319,7 @@ public class StarRocksCreateTableTest {
.primaryKey(PrimaryKey.of("",
Arrays.asList("id", "age")))
.columns(columns)
.build(),
+ "test table",
StarRocksSinkOptions.SAVE_MODE_CREATE_TEMPLATE.key());
Assertions.assertEquals(
@@ -363,6 +367,7 @@ public class StarRocksCreateTableTest {
PrimaryKey.of("test",
Arrays.asList("id", "age", "name")))
.columns(columns)
.build(),
+ "test table",
StarRocksSinkOptions.SAVE_MODE_CREATE_TEMPLATE.key());
Assertions.assertEquals(
@@ -376,4 +381,49 @@ public class StarRocksCreateTableTest {
+ " partitioned by `id`,`age`,`name`;",
result);
}
+
+ @Test
+ public void testTableComment() {
+ List<Column> columns = new ArrayList<>();
+
+ columns.add(PhysicalColumn.of("id", BasicType.LONG_TYPE, (Long) null,
true, null, ""));
+ columns.add(PhysicalColumn.of("name", BasicType.STRING_TYPE, (Long)
null, true, null, ""));
+ columns.add(PhysicalColumn.of("age", BasicType.INT_TYPE, (Long) null,
true, null, ""));
+ columns.add(PhysicalColumn.of("comment", BasicType.STRING_TYPE, 500,
true, null, ""));
+ columns.add(PhysicalColumn.of("description", BasicType.STRING_TYPE,
70000, true, null, ""));
+
+ String result =
+ StarRocksSaveModeUtil.INSTANCE.getCreateTableSql(
+ "CREATE TABLE IF NOT EXISTS `${database}`.`${table}`
(\n"
+ + "${rowtype_primary_key},\n"
+ + "${rowtype_fields}\n"
+ + ") ENGINE=OLAP\n"
+ + " PRIMARY KEY (${rowtype_primary_key})\n"
+ + "COMMENT '${comment}'\n"
+ + "DISTRIBUTED BY HASH
(${rowtype_primary_key})PROPERTIES (\n"
+ + " \"replication_num\" = \"1\" \n"
+ + ")\n",
+ "test1",
+ "test2",
+ TableSchema.builder()
+ .primaryKey(
+ PrimaryKey.of("test",
Arrays.asList("id", "age", "name")))
+ .columns(columns)
+ .build(),
+ "test table",
+ StarRocksSinkOptions.SAVE_MODE_CREATE_TEMPLATE.key());
+
+ Assertions.assertEquals(
+ "CREATE TABLE IF NOT EXISTS `test1`.`test2` (\n"
+ + "`id` BIGINT NULL ,`age` INT NULL ,`name` STRING
NULL ,\n"
+ + "`comment` VARCHAR(500) NULL ,\n"
+ + "`description` STRING NULL \n"
+ + ") ENGINE=OLAP\n"
+ + " PRIMARY KEY (`id`,`age`,`name`)\n"
+ + "COMMENT 'test table'\n"
+ + "DISTRIBUTED BY HASH (`id`,`age`,`name`)PROPERTIES
(\n"
+ + " \"replication_num\" = \"1\" \n"
+ + ")\n",
+ result);
+ }
}