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

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


The following commit(s) were added to refs/heads/master by this push:
     new 4c295b2c2b0 [HUDI-7119] Don't write precombine field to 
hoodie.properties when the ts field does not exist for append mode (#10133)
4c295b2c2b0 is described below

commit 4c295b2c2b011d5769ba6f215a5e626927ddeee6
Author: hehuiyuan <[email protected]>
AuthorDate: Sun Nov 19 09:43:52 2023 +0800

    [HUDI-7119] Don't write precombine field to hoodie.properties when the ts 
field does not exist for append mode (#10133)
---
 .../src/main/java/org/apache/hudi/table/HoodieTableFactory.java  | 2 +-
 .../test/java/org/apache/hudi/table/TestHoodieTableFactory.java  | 9 +++++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git 
a/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/table/HoodieTableFactory.java
 
b/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/table/HoodieTableFactory.java
index 83816044acb..bbab47236a8 100644
--- 
a/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/table/HoodieTableFactory.java
+++ 
b/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/table/HoodieTableFactory.java
@@ -171,8 +171,8 @@ public class HoodieTableFactory implements 
DynamicTableSourceFactory, DynamicTab
 
     if (!OptionsResolver.isAppendMode(conf)) {
       checkRecordKey(conf, schema);
-      checkPreCombineKey(conf, schema);
     }
+    checkPreCombineKey(conf, schema);
   }
 
   /**
diff --git 
a/hudi-flink-datasource/hudi-flink/src/test/java/org/apache/hudi/table/TestHoodieTableFactory.java
 
b/hudi-flink-datasource/hudi-flink/src/test/java/org/apache/hudi/table/TestHoodieTableFactory.java
index c6522cf32d1..d3a48ae63b7 100644
--- 
a/hudi-flink-datasource/hudi-flink/src/test/java/org/apache/hudi/table/TestHoodieTableFactory.java
+++ 
b/hudi-flink-datasource/hudi-flink/src/test/java/org/apache/hudi/table/TestHoodieTableFactory.java
@@ -109,6 +109,9 @@ public class TestHoodieTableFactory {
     final MockContext sourceContext11 = MockContext.getInstance(this.conf, 
schema1, "f2");
     assertDoesNotThrow(() -> new 
HoodieTableFactory().createDynamicTableSource(sourceContext11));
     assertDoesNotThrow(() -> new 
HoodieTableFactory().createDynamicTableSink(sourceContext11));
+    //miss the pre combine key will be ok
+    HoodieTableSink tableSink11 = (HoodieTableSink) new 
HoodieTableFactory().createDynamicTableSink(sourceContext11);
+    assertThat(tableSink11.getConf().getString(FlinkOptions.PRECOMBINE_FIELD), 
is(FlinkOptions.NO_PRE_COMBINE));
     this.conf.set(FlinkOptions.OPERATION, 
FlinkOptions.OPERATION.defaultValue());
 
     // a non-exists precombine key will throw exception
@@ -140,6 +143,12 @@ public class TestHoodieTableFactory {
     
assertThat(tableSource.getConf().getString(FlinkOptions.PAYLOAD_CLASS_NAME), 
is(FlinkOptions.PAYLOAD_CLASS_NAME.defaultValue()));
     assertThat(tableSink.getConf().getString(FlinkOptions.PAYLOAD_CLASS_NAME), 
is(FlinkOptions.PAYLOAD_CLASS_NAME.defaultValue()));
 
+    // append mode given the pk but miss the pre combine key will be ok
+    this.conf.set(FlinkOptions.OPERATION, "insert");
+    HoodieTableSink tableSink3 = (HoodieTableSink) new 
HoodieTableFactory().createDynamicTableSink(sourceContext3);
+    assertThat(tableSink3.getConf().getString(FlinkOptions.PRECOMBINE_FIELD), 
is(FlinkOptions.NO_PRE_COMBINE));
+    this.conf.set(FlinkOptions.OPERATION, 
FlinkOptions.OPERATION.defaultValue());
+
     this.conf.setString(FlinkOptions.PAYLOAD_CLASS_NAME, 
DefaultHoodieRecordPayload.class.getName());
     final MockContext sourceContext4 = MockContext.getInstance(this.conf, 
schema3, "f2");
 

Reply via email to