linliu-code commented on code in PR #13615:
URL: https://github.com/apache/hudi/pull/13615#discussion_r2232852472
##########
hudi-common/src/main/java/org/apache/hudi/common/table/HoodieTableConfig.java:
##########
@@ -807,6 +844,133 @@ public String getRecordMergeStrategyId() {
return getString(RECORD_MERGE_STRATEGY_ID);
}
+ /**
+ * Handle table config creation logic when creating a table for Table
Version 9,
+ * since it has some different logic from previous versions.
+ */
+ public static Map<String, String>
inferMergingConfigsForVersion9(RecordMergeMode recordMergeMode,
+ String
payloadClassName,
+ String
recordMergeStrategyId,
+
HoodieTableVersion tableVersion) {
+ Map<String, String> finalConfigs = new HashMap<>();
+ if (tableVersion.versionCode() != HoodieTableVersion.NINE.versionCode()) {
+ return finalConfigs;
+ }
+
+ // Infer merge mode and strategy id if needed.
+ Pair<RecordMergeMode, String> mergeModeAndStrategyId =
+ inferMergeModeOrStrategyId(recordMergeMode, recordMergeStrategyId,
payloadClassName);
+ recordMergeMode = mergeModeAndStrategyId.getLeft();
+ recordMergeStrategyId = mergeModeAndStrategyId.getRight();
+
+ // Properties for all tables.
+ // Since PARTIAL_UPDATE_MODE does not have default value, do not set it.
+ // For tables using MERGE MODEs (event time/commit time), or CUSTOM
mergers.
+ if (StringUtils.isNullOrEmpty(payloadClassName)) {
+ finalConfigs.put(RECORD_MERGE_MODE.key(), recordMergeMode.name());
+ finalConfigs.put(RECORD_MERGE_STRATEGY_ID.key(), recordMergeStrategyId);
+ // NOTE: No payload class should be set.
+ } else { // For tables using custom payload classes.
+ // For tables using CUSTOM payload classes.
+ if (!PAYLOADS_UNDER_DEPRECATION.contains(payloadClassName)) {
+ finalConfigs.put(RECORD_MERGE_MODE.key(), CUSTOM.toString());
Review Comment:
This is the only choice for payload class:
either it is one of our builtin payloads to deprecate
or it is a payload to be used as CUSTOM.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]