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

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


The following commit(s) were added to refs/heads/master by this push:
     new 873db32ea [core] optimize the first row merge engine for high level 
record (#3262)
873db32ea is described below

commit 873db32ea7aa2c6a53c02d7ae12fafd0e804ca1d
Author: Aitozi <[email protected]>
AuthorDate: Thu Apr 25 19:14:21 2024 +0800

    [core] optimize the first row merge engine for high level record (#3262)
---
 .../org/apache/paimon/mergetree/compact/FirstRowMergeFunction.java   | 5 +++++
 .../paimon/mergetree/compact/FirstRowMergeFunctionWrapper.java       | 5 +++++
 2 files changed, 10 insertions(+)

diff --git 
a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FirstRowMergeFunction.java
 
b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FirstRowMergeFunction.java
index a00e09f02..526b7e6f3 100644
--- 
a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FirstRowMergeFunction.java
+++ 
b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FirstRowMergeFunction.java
@@ -34,6 +34,7 @@ public class FirstRowMergeFunction implements 
MergeFunction<KeyValue> {
     private final InternalRowSerializer keySerializer;
     private final InternalRowSerializer valueSerializer;
     private KeyValue first;
+    public boolean containsHighLevel;
 
     protected FirstRowMergeFunction(RowType keyType, RowType valueType) {
         this.keySerializer = new InternalRowSerializer(keyType);
@@ -43,6 +44,7 @@ public class FirstRowMergeFunction implements 
MergeFunction<KeyValue> {
     @Override
     public void reset() {
         this.first = null;
+        this.containsHighLevel = false;
     }
 
     @Override
@@ -54,6 +56,9 @@ public class FirstRowMergeFunction implements 
MergeFunction<KeyValue> {
         if (first == null) {
             this.first = kv.copy(keySerializer, valueSerializer);
         }
+        if (kv.level() > 0) {
+            containsHighLevel = true;
+        }
     }
 
     @Override
diff --git 
a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FirstRowMergeFunctionWrapper.java
 
b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FirstRowMergeFunctionWrapper.java
index fd77bdae0..d999afd79 100644
--- 
a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FirstRowMergeFunctionWrapper.java
+++ 
b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FirstRowMergeFunctionWrapper.java
@@ -56,6 +56,11 @@ public class FirstRowMergeFunctionWrapper implements 
MergeFunctionWrapper<Change
     public ChangelogResult getResult() {
         reusedResult.reset();
         KeyValue result = mergeFunction.getResult();
+        if (mergeFunction.containsHighLevel) {
+            reusedResult.setResult(result);
+            return reusedResult;
+        }
+
         if (contains.test(result.key())) {
             // empty
             return reusedResult;

Reply via email to