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

yuzelin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new 32ff166f9 [flink] Support big decimal for flink cdc sync action (#1876)
32ff166f9 is described below

commit 32ff166f962ee9e79dfff80bc9f431dd38158980
Author: JunZhang <[email protected]>
AuthorDate: Fri Sep 1 10:41:20 2023 +0800

    [flink] Support big decimal for flink cdc sync action (#1876)
---
 .../flink/action/cdc/mysql/MySqlDebeziumJsonEventParser.java     | 2 ++
 .../paimon/flink/action/cdc/mysql/MySqlCdcTypeMappingITCase.java | 9 +++++----
 .../flink/action/cdc/mysql/MySqlSyncTableActionITCase.java       | 8 +++++---
 .../src/test/resources/mysql/sync_table_setup.sql                | 5 +++--
 .../src/test/resources/mysql/type_mapping_test_setup.sql         | 5 +++--
 5 files changed, 18 insertions(+), 11 deletions(-)

diff --git 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/cdc/mysql/MySqlDebeziumJsonEventParser.java
 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/cdc/mysql/MySqlDebeziumJsonEventParser.java
index 4bdfc3671..d6a807652 100644
--- 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/cdc/mysql/MySqlDebeziumJsonEventParser.java
+++ 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/cdc/mysql/MySqlDebeziumJsonEventParser.java
@@ -39,6 +39,7 @@ import org.apache.paimon.utils.Preconditions;
 import org.apache.paimon.utils.StringUtils;
 
 import 
org.apache.paimon.shade.jackson2.com.fasterxml.jackson.core.type.TypeReference;
+import 
org.apache.paimon.shade.jackson2.com.fasterxml.jackson.databind.DeserializationFeature;
 import 
org.apache.paimon.shade.jackson2.com.fasterxml.jackson.databind.JsonNode;
 import 
org.apache.paimon.shade.jackson2.com.fasterxml.jackson.databind.ObjectMapper;
 
@@ -159,6 +160,7 @@ public class MySqlDebeziumJsonEventParser implements 
EventParser<String> {
     @Override
     public void setRawEvent(String rawEvent) {
         try {
+            
objectMapper.configure(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS, true);
             root = objectMapper.readValue(rawEvent, JsonNode.class);
             payload = root.get("payload");
             currentTable = payload.get("source").get("table").asText();
diff --git 
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/action/cdc/mysql/MySqlCdcTypeMappingITCase.java
 
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/action/cdc/mysql/MySqlCdcTypeMappingITCase.java
index 9c0bdfafa..f7a4dcf32 100644
--- 
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/action/cdc/mysql/MySqlCdcTypeMappingITCase.java
+++ 
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/action/cdc/mysql/MySqlCdcTypeMappingITCase.java
@@ -127,7 +127,7 @@ public class MySqlCdcTypeMappingITCase extends 
MySqlActionITCaseBase {
                         .build();
         runActionWithDefaultEnv(action);
 
-        int allTypeNums = 77;
+        int allTypeNums = 78;
         DataType[] types =
                 IntStream.range(0, allTypeNums)
                         .mapToObj(i -> DataTypes.STRING())
@@ -183,6 +183,7 @@ public class MySqlCdcTypeMappingITCase extends 
MySqlActionITCaseBase {
                             "_decimal",
                             "_decimal_unsigned",
                             "_decimal_unsigned_zerofill",
+                            "_big_decimal",
                             "_date",
                             "_datetime",
                             "_datetime3",
@@ -233,8 +234,8 @@ public class MySqlCdcTypeMappingITCase extends 
MySqlActionITCaseBase {
                                 + "1.000011, 2.000022, 3.000033, "
                                 + "1.000111, 2.000222, 3.000333, "
                                 + "12345.11, 12345.22, 12345.33, "
-                                + "1.2345678987654322E32, 
1.2345678987654322E32, 1.2345678987654322E32, "
-                                + "11111, 22222, 33333, "
+                                + "123456789876543212345678987654321.11, 
123456789876543212345678987654321.22, 123456789876543212345678987654321.33, "
+                                + "11111, 22222, 33333, 
2222222222222222300000001111.123456789, "
                                 + "2023-03-23, "
                                 // display value of datetime is not affected 
by timezone
                                 + "2023-03-23 14:30:05.000, 2023-03-23 
14:30:05.123, 2023-03-23 14:30:05.123456, "
@@ -274,7 +275,7 @@ public class MySqlCdcTypeMappingITCase extends 
MySqlActionITCaseBase {
                                 + "NULL, NULL, NULL, "
                                 + "NULL, NULL, NULL, "
                                 + "NULL, NULL, NULL, "
-                                + "NULL, NULL, NULL, "
+                                + "NULL, NULL, NULL, NULL, "
                                 + "NULL, "
                                 + "NULL, NULL, NULL, "
                                 + "NULL, NULL, "
diff --git 
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/action/cdc/mysql/MySqlSyncTableActionITCase.java
 
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/action/cdc/mysql/MySqlSyncTableActionITCase.java
index a22b568f0..88133d222 100644
--- 
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/action/cdc/mysql/MySqlSyncTableActionITCase.java
+++ 
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/action/cdc/mysql/MySqlSyncTableActionITCase.java
@@ -385,6 +385,7 @@ public class MySqlSyncTableActionITCase extends 
MySqlActionITCaseBase {
                             DataTypes.DECIMAL(8, 0), // _decimal
                             DataTypes.DECIMAL(8, 0), // _decimal_unsigned
                             DataTypes.DECIMAL(8, 0), // 
_decimal_unsigned_zerofill
+                            DataTypes.DECIMAL(38, 10), // _big_decimal
                             DataTypes.DATE(), // _date
                             DataTypes.TIMESTAMP(0), // _datetime
                             DataTypes.TIMESTAMP(3), // _datetime3
@@ -464,6 +465,7 @@ public class MySqlSyncTableActionITCase extends 
MySqlActionITCaseBase {
                             "_decimal",
                             "_decimal_unsigned",
                             "_decimal_unsigned_zerofill",
+                            "_big_decimal",
                             "_date",
                             "_datetime",
                             "_datetime3",
@@ -518,8 +520,8 @@ public class MySqlSyncTableActionITCase extends 
MySqlActionITCaseBase {
                                 + "1.000011, 2.000022, 3.000033, "
                                 + "1.000111, 2.000222, 3.000333, "
                                 + "12345.110, 12345.220, 12345.330, "
-                                + "1.2345678987654322E32, 
1.2345678987654322E32, 1.2345678987654322E32, "
-                                + "11111, 22222, 33333, "
+                                + "123456789876543212345678987654321.11, 
123456789876543212345678987654321.22, 123456789876543212345678987654321.33, "
+                                + "11111, 22222, 33333, 
2222222222222222300000001111.1234567890, "
                                 + "19439, "
                                 // display value of datetime is not affected 
by timezone
                                 + "2023-03-23T14:30:05, 
2023-03-23T14:30:05.123, 2023-03-23T14:30:05.123456, "
@@ -564,7 +566,7 @@ public class MySqlSyncTableActionITCase extends 
MySqlActionITCaseBase {
                                 + "NULL, NULL, NULL, "
                                 + "NULL, NULL, NULL, "
                                 + "NULL, NULL, NULL, "
-                                + "NULL, NULL, NULL, "
+                                + "NULL, NULL, NULL, NULL, "
                                 + "NULL, "
                                 + "NULL, NULL, NULL, "
                                 + "NULL, NULL, "
diff --git 
a/paimon-flink/paimon-flink-common/src/test/resources/mysql/sync_table_setup.sql
 
b/paimon-flink/paimon-flink-common/src/test/resources/mysql/sync_table_setup.sql
index a0b06595e..121f87560 100644
--- 
a/paimon-flink/paimon-flink-common/src/test/resources/mysql/sync_table_setup.sql
+++ 
b/paimon-flink/paimon-flink-common/src/test/resources/mysql/sync_table_setup.sql
@@ -107,6 +107,7 @@ CREATE TABLE all_types_table (
     _decimal DECIMAL(8),
     _decimal_unsigned DECIMAL(8) UNSIGNED,
     _decimal_unsigned_zerofill DECIMAL(8) UNSIGNED ZEROFILL,
+    _big_decimal DECIMAL(38,10),
     -- DATE
     _date DATE,
     -- DATETIME
@@ -180,7 +181,7 @@ INSERT INTO all_types_table VALUES (
     -- FIXED
     123456789876543212345678987654321.11, 
123456789876543212345678987654321.22, 123456789876543212345678987654321.33,
     -- DECIMAL
-    11111, 22222, 33333,
+    11111, 22222, 33333, 2222222222222222300000001111.1234567890,
     -- DATE
     '2023-03-23',
     -- DATETIME
@@ -224,7 +225,7 @@ INSERT INTO all_types_table VALUES (
     NULL, NULL, NULL,
     NULL, NULL, NULL,
     NULL, NULL, NULL,
-    NULL, NULL, NULL,
+    NULL, NULL, NULL, NULL,
     NULL,
     NULL, NULL, NULL,
     NULL, NULL,
diff --git 
a/paimon-flink/paimon-flink-common/src/test/resources/mysql/type_mapping_test_setup.sql
 
b/paimon-flink/paimon-flink-common/src/test/resources/mysql/type_mapping_test_setup.sql
index 2bd004f2d..5b74751d3 100644
--- 
a/paimon-flink/paimon-flink-common/src/test/resources/mysql/type_mapping_test_setup.sql
+++ 
b/paimon-flink/paimon-flink-common/src/test/resources/mysql/type_mapping_test_setup.sql
@@ -104,6 +104,7 @@ CREATE TABLE all_types_table (
     _decimal DECIMAL(8),
     _decimal_unsigned DECIMAL(8) UNSIGNED,
     _decimal_unsigned_zerofill DECIMAL(8) UNSIGNED ZEROFILL,
+    _big_decimal DECIMAL(38,10),
     -- DATE
     _date DATE,
     -- DATETIME
@@ -176,7 +177,7 @@ INSERT INTO all_types_table VALUES (
     -- FIXED
     123456789876543212345678987654321.11, 
123456789876543212345678987654321.22, 123456789876543212345678987654321.33,
     -- DECIMAL
-    11111, 22222, 33333,
+    11111, 22222, 33333, 2222222222222222300000001111.1234567890,
     -- DATE
     '2023-03-23',
     -- DATETIME
@@ -220,7 +221,7 @@ INSERT INTO all_types_table VALUES (
     NULL, NULL, NULL,
     NULL, NULL, NULL,
     NULL, NULL, NULL,
-    NULL, NULL, NULL,
+    NULL, NULL, NULL, NULL,
     NULL,
     NULL, NULL, NULL,
     NULL, NULL,

Reply via email to