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

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


The following commit(s) were added to refs/heads/master by this push:
     new 102e5a916 [cdc] Kafka database sync new table shouldn't require 
primary keys (#4202)
102e5a916 is described below

commit 102e5a9168633f68c05d2487a1f90d708279c76d
Author: yuzelin <[email protected]>
AuthorDate: Wed Sep 18 14:26:24 2024 +0800

    [cdc] Kafka database sync new table shouldn't require primary keys (#4202)
---
 .../apache/paimon/flink/action/cdc/SyncDatabaseActionBase.java    | 3 +++
 .../paimon/flink/action/cdc/kafka/KafkaSyncDatabaseAction.java    | 5 +++++
 .../flink/action/cdc/mongodb/MongoDBSyncDatabaseAction.java       | 5 +++++
 .../paimon/flink/action/cdc/mysql/MySqlSyncDatabaseAction.java    | 5 +++++
 .../paimon/flink/action/cdc/pulsar/PulsarSyncDatabaseAction.java  | 5 +++++
 .../org/apache/paimon/flink/sink/cdc/NewTableSchemaBuilder.java   | 8 +++++---
 6 files changed, 28 insertions(+), 3 deletions(-)

diff --git 
a/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/SyncDatabaseActionBase.java
 
b/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/SyncDatabaseActionBase.java
index c513aff10..4ab56bdcf 100644
--- 
a/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/SyncDatabaseActionBase.java
+++ 
b/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/SyncDatabaseActionBase.java
@@ -148,6 +148,7 @@ public abstract class SyncDatabaseActionBase extends 
SynchronizationActionBase {
                         allowUpperCase,
                         partitionKeys,
                         primaryKeys,
+                        requirePrimaryKeys(),
                         partitionKeyMultiple,
                         metadataConverters);
         Pattern includingPattern = Pattern.compile(includingTables);
@@ -170,6 +171,8 @@ public abstract class SyncDatabaseActionBase extends 
SynchronizationActionBase {
                         createdTables);
     }
 
+    protected abstract boolean requirePrimaryKeys();
+
     @Override
     protected void buildSink(
             DataStream<RichCdcMultiplexRecord> input,
diff --git 
a/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/kafka/KafkaSyncDatabaseAction.java
 
b/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/kafka/KafkaSyncDatabaseAction.java
index cce4c4e68..089bd035c 100644
--- 
a/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/kafka/KafkaSyncDatabaseAction.java
+++ 
b/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/kafka/KafkaSyncDatabaseAction.java
@@ -40,4 +40,9 @@ public class KafkaSyncDatabaseAction extends 
SyncDatabaseActionBase {
     protected CdcTimestampExtractor createCdcTimestampExtractor() {
         return new MessageQueueCdcTimestampExtractor();
     }
+
+    @Override
+    protected boolean requirePrimaryKeys() {
+        return false;
+    }
 }
diff --git 
a/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/mongodb/MongoDBSyncDatabaseAction.java
 
b/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/mongodb/MongoDBSyncDatabaseAction.java
index 589513960..9f3ed1085 100644
--- 
a/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/mongodb/MongoDBSyncDatabaseAction.java
+++ 
b/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/mongodb/MongoDBSyncDatabaseAction.java
@@ -73,4 +73,9 @@ public class MongoDBSyncDatabaseAction extends 
SyncDatabaseActionBase {
                         includingTables,
                         Collections.emptyList()));
     }
+
+    @Override
+    protected boolean requirePrimaryKeys() {
+        return true;
+    }
 }
diff --git 
a/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/mysql/MySqlSyncDatabaseAction.java
 
b/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/mysql/MySqlSyncDatabaseAction.java
index 316168e1e..01be020f7 100644
--- 
a/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/mysql/MySqlSyncDatabaseAction.java
+++ 
b/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/mysql/MySqlSyncDatabaseAction.java
@@ -259,4 +259,9 @@ public class MySqlSyncDatabaseAction extends 
SyncDatabaseActionBase {
     public List<Identifier> excludedTables() {
         return excludedTables;
     }
+
+    @Override
+    protected boolean requirePrimaryKeys() {
+        return true;
+    }
 }
diff --git 
a/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/pulsar/PulsarSyncDatabaseAction.java
 
b/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/pulsar/PulsarSyncDatabaseAction.java
index d097feec6..0b99040f1 100644
--- 
a/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/pulsar/PulsarSyncDatabaseAction.java
+++ 
b/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/action/cdc/pulsar/PulsarSyncDatabaseAction.java
@@ -40,4 +40,9 @@ public class PulsarSyncDatabaseAction extends 
SyncDatabaseActionBase {
     protected CdcTimestampExtractor createCdcTimestampExtractor() {
         return new MessageQueueCdcTimestampExtractor();
     }
+
+    @Override
+    protected boolean requirePrimaryKeys() {
+        return false;
+    }
 }
diff --git 
a/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/sink/cdc/NewTableSchemaBuilder.java
 
b/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/sink/cdc/NewTableSchemaBuilder.java
index 8ac36d075..ce1bcc47d 100644
--- 
a/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/sink/cdc/NewTableSchemaBuilder.java
+++ 
b/paimon-flink/paimon-flink-cdc/src/main/java/org/apache/paimon/flink/sink/cdc/NewTableSchemaBuilder.java
@@ -24,7 +24,6 @@ import org.apache.paimon.schema.Schema;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -38,14 +37,16 @@ public class NewTableSchemaBuilder implements Serializable {
     private final boolean caseSensitive;
     private final List<String> partitionKeys;
     private final List<String> primaryKeys;
+    private final boolean requirePrimaryKeys;
     private final CdcMetadataConverter[] metadataConverters;
-    protected Map<String, List<String>> partitionKeyMultiple = new HashMap<>();
+    private final Map<String, List<String>> partitionKeyMultiple;
 
     public NewTableSchemaBuilder(
             Map<String, String> tableConfig,
             boolean caseSensitive,
             List<String> partitionKeys,
             List<String> primaryKeys,
+            boolean requirePrimaryKeys,
             Map<String, List<String>> partitionKeyMultiple,
             CdcMetadataConverter[] metadataConverters) {
         this.tableConfig = tableConfig;
@@ -53,6 +54,7 @@ public class NewTableSchemaBuilder implements Serializable {
         this.metadataConverters = metadataConverters;
         this.partitionKeys = partitionKeys;
         this.primaryKeys = primaryKeys;
+        this.requirePrimaryKeys = requirePrimaryKeys;
         this.partitionKeyMultiple = partitionKeyMultiple;
     }
 
@@ -84,6 +86,6 @@ public class NewTableSchemaBuilder implements Serializable {
                         metadataConverters,
                         caseSensitive,
                         false,
-                        true));
+                        requirePrimaryKeys));
     }
 }

Reply via email to