xushiyan commented on a change in pull request #4681:
URL: https://github.com/apache/hudi/pull/4681#discussion_r803653564



##########
File path: 
hudi-common/src/main/java/org/apache/hudi/metadata/HoodieMetadataPayload.java
##########
@@ -288,6 +288,7 @@ private HoodieMetadataColumnStats 
combineColumnStatsMetadatat(HoodieMetadataPayl
     return this.columnStatMetadata;
   }
 
+  // HoodieMetadataPayload is an internal payload. Hence not implementing 
newer apis with Properties as last argument.

Review comment:
       for the sake of getting rid of deprecation, what is preventing us from 
migrating this API for metadata payload?

##########
File path: 
hudi-spark-datasource/hudi-spark/src/main/java/org/apache/hudi/payload/AWSDmsAvroPayload.java
##########
@@ -68,12 +69,25 @@ public AWSDmsAvroPayload(Option<GenericRecord> record) {
     return delete ? Option.empty() : Option.of(insertValue);
   }
 
+  @Override
+  public Option<IndexedRecord> getInsertValue(Schema schema, Properties 
properties) throws IOException {
+    IndexedRecord insertValue = super.getInsertValue(schema, properties).get();
+    return handleDeleteOperation(insertValue);

Review comment:
       similarly, shall we make the deprecated methods call this version?

##########
File path: 
hudi-hadoop-mr/src/main/java/org/apache/hudi/hadoop/realtime/AbstractRealtimeRecordReader.java
##########
@@ -72,6 +75,9 @@ public AbstractRealtimeRecordReader(RealtimeSplit split, 
JobConf job) {
 
   private boolean usesCustomPayload() {
     HoodieTableMetaClient metaClient = 
HoodieTableMetaClient.builder().setConf(jobConf).setBasePath(split.getBasePath()).build();
+    if (metaClient.getTableConfig().getPreCombineField() != null) {
+      
this.payloadProps.setProperty(HoodiePayloadProps.PAYLOAD_ORDERING_FIELD_PROP_KEY,
 metaClient.getTableConfig().getPreCombineField());
+    }

Review comment:
       not a good pattern to insert this logic into `usesCustomPayload()` since 
it introduces side effect. we can create metaclient in the constructor and use 
it to init payload props, then keep this method only does what it claims.

##########
File path: 
hudi-client/hudi-client-common/src/main/java/org/apache/hudi/common/table/log/HoodieFileSliceReader.java
##########
@@ -53,10 +55,12 @@ public static HoodieFileSliceReader getFileSliceReader(
       return new HoodieFileSliceReader(scanner.iterator());
     } else {
       Iterable<HoodieRecord<? extends HoodieRecordPayload>> iterable = () -> 
scanner.iterator();
+      // todo : wire in event time field as well
+      HoodiePayloadConfig payloadConfig = 
HoodiePayloadConfig.newBuilder().withPayloadOrderingField(preCombineField).build();

Review comment:
       just to point out this won't give us event time since it only contains 
ordering field. guess in this class we can't get event time config from users?

##########
File path: 
hudi-common/src/main/java/org/apache/hudi/common/model/debezium/PostgresDebeziumAvroPayload.java
##########
@@ -71,6 +72,19 @@ protected boolean shouldPickCurrentRecord(IndexedRecord 
currentRecord, IndexedRe
     return insertSourceLSN < currentSourceLSN;
   }
 
+  @Override
+  public Option<IndexedRecord> combineAndGetUpdateValue(IndexedRecord 
currentValue, Schema schema, Properties properties) throws IOException {
+    // Specific to Postgres: If the updated record has TOASTED columns,
+    // we will need to keep the previous value for those columns

Review comment:
       @nsivabalan why not make L89 method call this one with empty properties 
? 




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