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 c777456be7 [core] fix in predict when value is empty (#6900)
c777456be7 is described below

commit c777456be70fc60c40b60bac41ad3beb6893dfd1
Author: Stefanietry <[email protected]>
AuthorDate: Thu Dec 25 23:25:55 2025 +0800

    [core] fix in predict when value is empty (#6900)
---
 .../java/org/apache/paimon/predicate/PredicateBuilder.java    |  2 +-
 .../org/apache/paimon/predicate/PredicateBuilderTest.java     | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git 
a/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateBuilder.java 
b/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateBuilder.java
index c8050efa16..3e88a58b17 100644
--- 
a/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateBuilder.java
+++ 
b/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateBuilder.java
@@ -197,7 +197,7 @@ public class PredicateBuilder {
     public Predicate in(int idx, List<Object> literals) {
         // In the IN predicate, 20 literals are critical for performance.
         // If there are more than 20 literals, the performance will decrease.
-        if (literals.size() > 20) {
+        if (literals.size() > 20 || literals.size() == 0) {
             DataField field = rowType.getFields().get(idx);
             return new LeafPredicate(In.INSTANCE, field.type(), idx, 
field.name(), literals);
         }
diff --git 
a/paimon-common/src/test/java/org/apache/paimon/predicate/PredicateBuilderTest.java
 
b/paimon-common/src/test/java/org/apache/paimon/predicate/PredicateBuilderTest.java
index 9e4c7bfc13..0cc9a90b00 100644
--- 
a/paimon-common/src/test/java/org/apache/paimon/predicate/PredicateBuilderTest.java
+++ 
b/paimon-common/src/test/java/org/apache/paimon/predicate/PredicateBuilderTest.java
@@ -25,6 +25,7 @@ import org.apache.paimon.types.RowType;
 
 import org.junit.jupiter.api.Test;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 
 import static org.apache.paimon.predicate.SimpleColStatsTestUtils.test;
@@ -107,4 +108,14 @@ public class PredicateBuilderTest {
                                 builder.isNull(5),
                                 child3));
     }
+
+    @Test
+    public void testIn() {
+        PredicateBuilder builder = new PredicateBuilder(RowType.of(new 
IntType()));
+        Predicate predicate = builder.in(0, new ArrayList<>());
+        assertThat(predicate.test(GenericRow.of(1))).isEqualTo(false);
+        predicate = builder.in(0, Arrays.asList(1, 2));
+        assertThat(predicate.test(GenericRow.of(1))).isEqualTo(true);
+        assertThat(predicate.test(GenericRow.of(10))).isEqualTo(false);
+    }
 }

Reply via email to