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 49a5bd2d4c [core] SortLookupStoreWriter should support empty record
(#4777)
49a5bd2d4c is described below
commit 49a5bd2d4c4383e923750d5d46696e97bdad016d
Author: Jingsong Lee <[email protected]>
AuthorDate: Wed Dec 25 17:44:00 2024 +0800
[core] SortLookupStoreWriter should support empty record (#4777)
---
.../org/apache/paimon/lookup/sort/BlockWriter.java | 5 ++++-
.../paimon/lookup/sort/SortLookupStoreFactoryTest.java | 18 ++++++++++++++++++
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git
a/paimon-common/src/main/java/org/apache/paimon/lookup/sort/BlockWriter.java
b/paimon-common/src/main/java/org/apache/paimon/lookup/sort/BlockWriter.java
index d4f48e9c79..340abac862 100644
--- a/paimon-common/src/main/java/org/apache/paimon/lookup/sort/BlockWriter.java
+++ b/paimon-common/src/main/java/org/apache/paimon/lookup/sort/BlockWriter.java
@@ -83,8 +83,11 @@ public class BlockWriter {
public MemorySlice finish() throws IOException {
if (positions.isEmpty()) {
- throw new IllegalStateException();
+ // Do not use alignment mode, as it is impossible to calculate how
many records are
+ // inside when reading
+ aligned = false;
}
+
if (aligned) {
block.writeInt(alignedSize);
} else {
diff --git
a/paimon-common/src/test/java/org/apache/paimon/lookup/sort/SortLookupStoreFactoryTest.java
b/paimon-common/src/test/java/org/apache/paimon/lookup/sort/SortLookupStoreFactoryTest.java
index 7ba3f8283a..354283a1d4 100644
---
a/paimon-common/src/test/java/org/apache/paimon/lookup/sort/SortLookupStoreFactoryTest.java
+++
b/paimon-common/src/test/java/org/apache/paimon/lookup/sort/SortLookupStoreFactoryTest.java
@@ -114,6 +114,24 @@ public class SortLookupStoreFactoryTest {
assertThat(cacheManager.indexCache().asMap()).isEmpty();
}
+ @TestTemplate
+ public void testEmpty() throws IOException {
+ CacheManager cacheManager = new
CacheManager(MemorySize.ofMebiBytes(1));
+ SortLookupStoreFactory factory =
+ new SortLookupStoreFactory(Comparator.naturalOrder(),
cacheManager, 1024, compress);
+
+ SortLookupStoreWriter writer =
+ factory.createWriter(file,
createBloomFiler(bloomFilterEnabled));
+ Context context = writer.close();
+
+ SortLookupStoreReader reader = factory.createReader(file, context);
+ byte[] bytes = toBytes(rnd.nextInt(VALUE_COUNT));
+ assertThat(reader.lookup(bytes)).isNull();
+ reader.close();
+ assertThat(cacheManager.dataCache().asMap()).isEmpty();
+ assertThat(cacheManager.indexCache().asMap()).isEmpty();
+ }
+
@TestTemplate
public void testIntKey() throws IOException {
RowCompactedSerializer keySerializer =