This is an automated email from the ASF dual-hosted git repository.

lincoln pushed a commit to branch release-1.17
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/release-1.17 by this push:
     new 7c2631b8ba8 [FLINK-32249][table-planner] Use proper toString 
conversion when constructing column comments for CatalogTable
7c2631b8ba8 is described below

commit 7c2631b8ba8c935be03c91fd44b7aa42937a9698
Author: lincoln lee <lincoln.8...@gmail.com>
AuthorDate: Tue Jun 6 08:52:14 2023 +0800

    [FLINK-32249][table-planner] Use proper toString conversion when 
constructing column comments for CatalogTable
    
    This closes #22715
---
 .../planner/operations/SqlCreateTableConverter.java |  4 +++-
 .../operations/SqlDdlToOperationConverterTest.java  | 21 ++++++++++++++-------
 2 files changed, 17 insertions(+), 8 deletions(-)

diff --git 
a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/operations/SqlCreateTableConverter.java
 
b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/operations/SqlCreateTableConverter.java
index 5d878341577..1340669d105 100644
--- 
a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/operations/SqlCreateTableConverter.java
+++ 
b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/operations/SqlCreateTableConverter.java
@@ -39,6 +39,7 @@ import org.apache.flink.table.operations.Operation;
 import org.apache.flink.table.operations.ddl.CreateTableOperation;
 import org.apache.flink.table.planner.calcite.FlinkCalciteSqlValidator;
 import org.apache.flink.table.planner.calcite.FlinkPlannerImpl;
+import org.apache.flink.table.planner.utils.OperationConverterUtils;
 
 import org.apache.calcite.sql.SqlIdentifier;
 import org.apache.calcite.sql.SqlNode;
@@ -165,7 +166,8 @@ class SqlCreateTableConverter {
                                         col -> col.getName().getSimple(),
                                         col ->
                                                 StringUtils.strip(
-                                                        
col.getComment().get().toString(), "'")));
+                                                        
OperationConverterUtils.getComment(col),
+                                                        "'")));
 
         TableSchema mergedSchema =
                 mergeTableLikeUtil.mergeTables(
diff --git 
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/operations/SqlDdlToOperationConverterTest.java
 
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/operations/SqlDdlToOperationConverterTest.java
index d5d097f9f78..0c9927238b0 100644
--- 
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/operations/SqlDdlToOperationConverterTest.java
+++ 
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/operations/SqlDdlToOperationConverterTest.java
@@ -32,11 +32,13 @@ import org.apache.flink.table.catalog.CatalogDatabaseImpl;
 import org.apache.flink.table.catalog.CatalogFunction;
 import org.apache.flink.table.catalog.CatalogFunctionImpl;
 import org.apache.flink.table.catalog.CatalogTable;
+import org.apache.flink.table.catalog.Column;
 import org.apache.flink.table.catalog.ContextResolvedTable;
 import org.apache.flink.table.catalog.FunctionLanguage;
 import org.apache.flink.table.catalog.GenericInMemoryCatalog;
 import org.apache.flink.table.catalog.ObjectIdentifier;
 import org.apache.flink.table.catalog.ObjectPath;
+import org.apache.flink.table.catalog.ResolvedCatalogTable;
 import org.apache.flink.table.catalog.TableChange;
 import org.apache.flink.table.catalog.exceptions.DatabaseNotExistException;
 import org.apache.flink.table.catalog.exceptions.FunctionAlreadyExistException;
@@ -218,12 +220,12 @@ public class SqlDdlToOperationConverterTest extends 
SqlToOperationConverterTestB
     public void testCreateTableWithPrimaryKey() {
         final String sql =
                 "CREATE TABLE tbl1 (\n"
-                        + "  a bigint,\n"
+                        + "  a bigint comment '测试utf8中文',\n"
                         + "  b varchar, \n"
                         + "  c int, \n"
-                        + "  d varchar, \n"
+                        + "  d varchar comment _utf8'测试_utf8中文', \n"
                         + "  constraint ct1 primary key(a, b) not enforced\n"
-                        + ") with (\n"
+                        + ") comment '测试中文 table comment' with (\n"
                         + "  'connector' = 'kafka', \n"
                         + "  'kafka.topic' = 'log.test'\n"
                         + ")\n";
@@ -249,6 +251,12 @@ public class SqlDdlToOperationConverterTest extends 
SqlToOperationConverterTestB
                             DataTypes.INT(),
                             DataTypes.STRING()
                         });
+        // verify chinese characters both in table comment and column comments
+        assertThat(catalogTable.getComment()).isEqualTo("测试中文 table comment");
+        assertThat(catalogTable).isInstanceOf(ResolvedCatalogTable.class);
+        List<Column> cols = ((ResolvedCatalogTable) 
catalogTable).getResolvedSchema().getColumns();
+        assertThat(cols.get(0).getComment().get()).isEqualTo("测试utf8中文");
+        assertThat(cols.get(3).getComment().get()).isEqualTo("测试_utf8中文");
     }
 
     @Test
@@ -1326,19 +1334,18 @@ public class SqlDdlToOperationConverterTest extends 
SqlToOperationConverterTestB
 
         // add a single column
         Operation operation =
-                parse(
-                        "alter table if exists tb1 add h double not null 
comment 'h is double not null'");
+                parse("alter table if exists tb1 add h double not null comment 
'utf 测试中文'");
         assertThat(operation.asSummaryString())
                 .isEqualTo(
                         "ALTER TABLE IF EXISTS cat1.db1.tb1\n"
-                                + "  ADD `h` DOUBLE NOT NULL COMMENT 'h is 
double not null' ");
+                                + "  ADD `h` DOUBLE NOT NULL COMMENT 'utf 
测试中文' ");
         assertAlterTableSchema(
                 operation,
                 tableIdentifier,
                 Schema.newBuilder()
                         .fromSchema(originalSchema)
                         .column("h", DataTypes.DOUBLE().notNull())
-                        .withComment("h is double not null")
+                        .withComment("utf 测试中文")
                         .build());
 
         // add multiple columns with pk, computed/metadata column

Reply via email to