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;