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);
+ }
}