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 59e396c43 [flink][kafka-cdc] Minor refactor kafka cdc record parser 
(#1885)
59e396c43 is described below

commit 59e396c43dfa91e852d67d4103bb4c3eac1aef74
Author: yuzelin <[email protected]>
AuthorDate: Fri Aug 25 14:46:38 2023 +0800

    [flink][kafka-cdc] Minor refactor kafka cdc record parser (#1885)
---
 .../cdc/kafka/formats/canal/CanalRecordParser.java | 41 ++++++----------------
 .../cdc/kafka/formats/ogg/OggRecordParser.java     |  5 ++-
 2 files changed, 13 insertions(+), 33 deletions(-)

diff --git 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/cdc/kafka/formats/canal/CanalRecordParser.java
 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/cdc/kafka/formats/canal/CanalRecordParser.java
index 85cb07855..17321214e 100644
--- 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/cdc/kafka/formats/canal/CanalRecordParser.java
+++ 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/cdc/kafka/formats/canal/CanalRecordParser.java
@@ -36,6 +36,7 @@ import 
org.apache.paimon.shade.jackson2.com.fasterxml.jackson.databind.node.Arra
 
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -61,7 +62,6 @@ import static 
org.apache.paimon.utils.Preconditions.checkNotNull;
 public class CanalRecordParser extends RecordParser {
 
     private static final String FIELD_IS_DDL = "isDdl";
-    private static final String FIELD_SQL = "sql";
     private static final String FIELD_MYSQL_TYPE = "mysqlType";
     private static final String FIELD_PRIMARY_KEYS = "pkNames";
     private static final String FIELD_TYPE = "type";
@@ -83,10 +83,8 @@ public class CanalRecordParser extends RecordParser {
 
     @Override
     public List<RichCdcMultiplexRecord> extractRecords() {
-        List<RichCdcMultiplexRecord> records = new ArrayList<>();
-
         if (isDdl()) {
-            return records;
+            return Collections.emptyList();
         }
 
         List<String> primaryKeys = extractPrimaryKeys();
@@ -99,24 +97,13 @@ public class CanalRecordParser extends RecordParser {
 
         switch (type) {
             case OP_UPDATE:
-                return handleUpdateOperation(
-                        data, mySqlFieldTypes, paimonFieldTypes, primaryKeys, 
records);
+                return handleUpdateOperation(data, mySqlFieldTypes, 
paimonFieldTypes, primaryKeys);
             case OP_INSERT:
                 return handleDataOperation(
-                        data,
-                        mySqlFieldTypes,
-                        paimonFieldTypes,
-                        primaryKeys,
-                        records,
-                        RowKind.INSERT);
+                        data, mySqlFieldTypes, paimonFieldTypes, primaryKeys, 
RowKind.INSERT);
             case OP_DELETE:
                 return handleDataOperation(
-                        data,
-                        mySqlFieldTypes,
-                        paimonFieldTypes,
-                        primaryKeys,
-                        records,
-                        RowKind.DELETE);
+                        data, mySqlFieldTypes, paimonFieldTypes, primaryKeys, 
RowKind.DELETE);
             default:
                 throw new UnsupportedOperationException("Unknown record type: 
" + type);
         }
@@ -157,9 +144,7 @@ public class CanalRecordParser extends RecordParser {
         checkNotNull(root.get(FIELD_DATA), errorMessageTemplate, FIELD_DATA);
         checkNotNull(root.get(FIELD_IS_DDL), errorMessageTemplate, 
FIELD_IS_DDL);
 
-        if (isDdl()) {
-            checkNotNull(root.get(FIELD_SQL), errorMessageTemplate, FIELD_SQL);
-        } else {
+        if (!isDdl()) {
             checkNotNull(root.get(FIELD_MYSQL_TYPE), errorMessageTemplate, 
FIELD_MYSQL_TYPE);
             checkNotNull(root.get(FIELD_PRIMARY_KEYS), errorMessageTemplate, 
FIELD_PRIMARY_KEYS);
         }
@@ -171,8 +156,7 @@ public class CanalRecordParser extends RecordParser {
     }
 
     private boolean isDdl() {
-        JsonNode isDdlNode = root.get(FIELD_IS_DDL);
-        return isDdlNode.asBoolean();
+        return root.get(FIELD_IS_DDL).asBoolean();
     }
 
     private List<String> extractPrimaryKeys() {
@@ -217,10 +201,7 @@ public class CanalRecordParser extends RecordParser {
 
         Map<String, String> resultMap =
                 mySqlFieldTypes.entrySet().stream()
-                        .filter(
-                                entry ->
-                                        jsonMap.containsKey(entry.getKey())
-                                                && jsonMap.get(entry.getKey()) 
!= null)
+                        .filter(entry -> jsonMap.get(entry.getKey()) != null)
                         .collect(
                                 Collectors.toMap(
                                         Map.Entry::getKey,
@@ -270,8 +251,8 @@ public class CanalRecordParser extends RecordParser {
             Map<String, String> mySqlFieldTypes,
             LinkedHashMap<String, DataType> paimonFieldTypes,
             List<String> primaryKeys,
-            List<RichCdcMultiplexRecord> records,
             RowKind kind) {
+        List<RichCdcMultiplexRecord> records = new ArrayList<>();
         for (JsonNode datum : data) {
             Map<String, String> rowData =
                     extractRowFromJson(datum, mySqlFieldTypes, 
paimonFieldTypes);
@@ -292,8 +273,8 @@ public class CanalRecordParser extends RecordParser {
             ArrayNode data,
             Map<String, String> mySqlFieldTypes,
             LinkedHashMap<String, DataType> paimonFieldTypes,
-            List<String> primaryKeys,
-            List<RichCdcMultiplexRecord> records) {
+            List<String> primaryKeys) {
+        List<RichCdcMultiplexRecord> records = new ArrayList<>();
         ArrayNode old = JsonSerdeUtil.getNodeAs(root, FIELD_OLD, 
ArrayNode.class);
         for (int i = 0; i < data.size(); i++) {
             Map<String, String> after =
diff --git 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/cdc/kafka/formats/ogg/OggRecordParser.java
 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/cdc/kafka/formats/ogg/OggRecordParser.java
index 19d0a1e70..9e7b67631 100644
--- 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/cdc/kafka/formats/ogg/OggRecordParser.java
+++ 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/cdc/kafka/formats/ogg/OggRecordParser.java
@@ -27,7 +27,6 @@ import 
org.apache.paimon.flink.sink.cdc.RichCdcMultiplexRecord;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.DataTypes;
 import org.apache.paimon.types.RowKind;
-import org.apache.paimon.utils.JsonSerdeUtil;
 
 import 
org.apache.paimon.shade.jackson2.com.fasterxml.jackson.core.JsonProcessingException;
 import 
org.apache.paimon.shade.jackson2.com.fasterxml.jackson.core.type.TypeReference;
@@ -164,7 +163,7 @@ public class OggRecordParser extends RecordParser {
     }
 
     private void extractDatabaseAndTableNames() {
-        JsonNode tableNode = JsonSerdeUtil.getNodeAs(root, FIELD_TABLE, 
JsonNode.class);
+        JsonNode tableNode = root.get(FIELD_TABLE);
         if (tableNode != null) {
             String[] dbt = tableNode.asText().split("\\.", 2); // Limit split 
to 2 parts
             if (dbt.length == 2) {
@@ -176,7 +175,7 @@ public class OggRecordParser extends RecordParser {
 
     private LinkedHashMap<String, DataType> extractFieldTypesFromOracleType() {
         LinkedHashMap<String, DataType> fieldTypes = new LinkedHashMap<>();
-        JsonNode record = JsonSerdeUtil.getNodeAs(root, FIELD_AFTER, 
JsonNode.class);
+        JsonNode record = root.get(FIELD_AFTER);
         Map<String, Object> linkedHashMap =
                 OBJECT_MAPPER.convertValue(
                         record, new TypeReference<LinkedHashMap<String, 
Object>>() {});

Reply via email to