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");