danny0405 commented on code in PR #13334:
URL: https://github.com/apache/hudi/pull/13334#discussion_r2127771545


##########
hudi-common/src/main/java/org/apache/hudi/common/util/HoodieRecordUtils.java:
##########
@@ -75,21 +85,58 @@ public static HoodieRecordMerger loadRecordMerger(String 
mergerClass) {
    * Instantiate a given class with a record merge.
    */
   public static HoodieRecordMerger createRecordMerger(String basePath, 
EngineType engineType,
-                                                      List<String> 
mergerClassList, String recordMergerStrategy) {
-    if (mergerClassList.isEmpty() || 
HoodieTableMetadata.isMetadataTable(basePath)) {
+                                                      List<String> 
mergerClassList,
+                                                      String 
recordMergerStrategy,
+                                                      Option<String> 
payloadClassOpt) {
+    if (HoodieTableMetadata.isMetadataTable(basePath)) {
       return HoodieAvroRecordMerger.INSTANCE;
+    } else if (mergerClassList.isEmpty()) {
+      // No merger class is given, we fall back to use Avro based mergers.
+      return createValidRecordMerger(engineType, "", recordMergerStrategy, 
payloadClassOpt)
+          .orElse(HoodieAvroRecordMerger.INSTANCE);
     } else {
       return createValidRecordMerger(engineType, mergerClassList, 
recordMergerStrategy)
           .orElse(HoodieAvroRecordMerger.INSTANCE);
     }
   }
 
   public static Option<HoodieRecordMerger> createValidRecordMerger(EngineType 
engineType,
-                                                                   String 
mergerImpls, String recordMergerStrategy) {
-    if 
(recordMergerStrategy.equals(HoodieRecordMerger.PAYLOAD_BASED_MERGE_STRATEGY_UUID))
 {
-      return Option.of(HoodieAvroRecordMerger.INSTANCE);
+                                                                   String 
mergerImpls,
+                                                                   String 
recordMergerStrategy,
+                                                                   
Option<String> payloadClassOpt) {
+    String payloadClass = payloadClassOpt.get();
+    // Payload based strategy and payload class is given.
+    if (null != recordMergerStrategy

Review Comment:
   payload class is a table config, shouldn't we fix 
`HoodieTableConfig.inferRecordMergeModeFromPayloadClass` and 
`HoodieTableConfig.inferRecordMergeModeFromMergeStrategyId` instead of here?



-- 
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]

Reply via email to