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/incubator-paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new 4efe2e5cf [core] compacted_full should never return null (#1517)
4efe2e5cf is described below

commit 4efe2e5cf99962159bdb687ac3f5e0e234b8c701
Author: Jingsong Lee <[email protected]>
AuthorDate: Fri Jul 7 19:30:59 2023 +0800

    [core] compacted_full should never return null (#1517)
---
 .../paimon/table/source/snapshot/CompactedStartingScanner.java   | 3 ++-
 .../table/source/snapshot/FullCompactedStartingScanner.java      | 2 +-
 .../src/main/java/org/apache/paimon/utils/SnapshotManager.java   | 9 ++-------
 .../apache/paimon/table/ChangelogWithKeyFileStoreTableTest.java  | 9 ++++++++-
 4 files changed, 13 insertions(+), 10 deletions(-)

diff --git 
a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/CompactedStartingScanner.java
 
b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/CompactedStartingScanner.java
index f4a1ccfc2..0f89c5b42 100644
--- 
a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/CompactedStartingScanner.java
+++ 
b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/CompactedStartingScanner.java
@@ -19,6 +19,7 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.utils.SnapshotManager;
 
@@ -53,6 +54,6 @@ public class CompactedStartingScanner implements 
StartingScanner {
 
     @Nullable
     protected Long pick(SnapshotManager snapshotManager) {
-        return snapshotManager.latestCompactedSnapshotId();
+        return snapshotManager.pickOrLatest(s -> s.commitKind() == 
Snapshot.CommitKind.COMPACT);
     }
 }
diff --git 
a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/FullCompactedStartingScanner.java
 
b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/FullCompactedStartingScanner.java
index 46b2f2453..31df3c8b9 100644
--- 
a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/FullCompactedStartingScanner.java
+++ 
b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/FullCompactedStartingScanner.java
@@ -40,7 +40,7 @@ public class FullCompactedStartingScanner extends 
CompactedStartingScanner {
     @Override
     @Nullable
     protected Long pick(SnapshotManager snapshotManager) {
-        return snapshotManager.pickFromLatest(this::picked);
+        return snapshotManager.pickOrLatest(this::picked);
     }
 
     private boolean picked(Snapshot snapshot) {
diff --git 
a/paimon-core/src/main/java/org/apache/paimon/utils/SnapshotManager.java 
b/paimon-core/src/main/java/org/apache/paimon/utils/SnapshotManager.java
index 05a18d8da..b44d61d12 100644
--- a/paimon-core/src/main/java/org/apache/paimon/utils/SnapshotManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/SnapshotManager.java
@@ -19,7 +19,6 @@
 package org.apache.paimon.utils;
 
 import org.apache.paimon.Snapshot;
-import org.apache.paimon.Snapshot.CommitKind;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
 
@@ -113,11 +112,7 @@ public class SnapshotManager implements Serializable {
         }
     }
 
-    public @Nullable Long latestCompactedSnapshotId() {
-        return pickFromLatest(s -> s.commitKind() == CommitKind.COMPACT);
-    }
-
-    public @Nullable Long pickFromLatest(Predicate<Snapshot> predicate) {
+    public @Nullable Long pickOrLatest(Predicate<Snapshot> predicate) {
         Long latestId = latestSnapshotId();
         Long earliestId = earliestSnapshotId();
         if (latestId == null || earliestId == null) {
@@ -133,7 +128,7 @@ public class SnapshotManager implements Serializable {
             }
         }
 
-        return null;
+        return latestId;
     }
 
     /**
diff --git 
a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileStoreTableTest.java
 
b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileStoreTableTest.java
index 2ced6f9e1..c76a6e15d 100644
--- 
a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileStoreTableTest.java
+++ 
b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileStoreTableTest.java
@@ -889,6 +889,14 @@ public class ChangelogWithKeyFileStoreTableTest extends 
FileStoreTableTestBase {
         write.write(rowData(1, 10, 100L));
         commit.commit(0, write.prepareCommit(true, 0));
 
+        ReadBuilder readBuilder = table.newReadBuilder();
+        assertThat(
+                        getResult(
+                                readBuilder.newRead(),
+                                readBuilder.newScan().plan().splits(),
+                                BATCH_ROW_TO_STRING))
+                
.containsExactly("1|10|100|binary|varbinary|mapKey:mapVal|multiset");
+
         write.write(rowData(1, 10, 200L));
         commit.commit(1, write.prepareCommit(true, 1));
 
@@ -901,7 +909,6 @@ public class ChangelogWithKeyFileStoreTableTest extends 
FileStoreTableTestBase {
 
         write.close();
 
-        ReadBuilder readBuilder = table.newReadBuilder();
         assertThat(
                         getResult(
                                 readBuilder.newRead(),

Reply via email to