This is an automated email from the ASF dual-hosted git repository.
JingsongLi 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 19a4942f40 [core] Fix null handling in ArrayContains (#9354)
19a4942f40 is described below
commit 19a4942f408cf2b5fa64e7fd9401d3f6f3f58e3b
Author: QuakeWang <[email protected]>
AuthorDate: Sun Aug 23 23:19:57 2026 +0800
[core] Fix null handling in ArrayContains (#9354)
---
.../src/main/java/org/apache/paimon/predicate/ArrayContains.java | 3 +++
.../java/org/apache/paimon/predicate/PredicateBuilderTest.java | 8 ++++++++
2 files changed, 11 insertions(+)
diff --git
a/paimon-common/src/main/java/org/apache/paimon/predicate/ArrayContains.java
b/paimon-common/src/main/java/org/apache/paimon/predicate/ArrayContains.java
index 92f7f7b34a..cb9686aaa6 100644
--- a/paimon-common/src/main/java/org/apache/paimon/predicate/ArrayContains.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/ArrayContains.java
@@ -47,6 +47,9 @@ public class ArrayContains extends LeafBinaryFunction {
@Override
public boolean test(DataType type, Object field, Object literal) {
+ if (field == null || literal == null) {
+ return false;
+ }
DataType elementType = elementType(type);
InternalArray array = (InternalArray) field;
InternalArray.ElementGetter getter =
InternalArray.createElementGetter(elementType);
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 92250b8746..5ee46d640d 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
@@ -247,6 +247,14 @@ public class PredicateBuilderTest {
builder.arrayContains(0, null)
.test(GenericRow.of(new GenericArray(new
Integer[] {1, null}))))
.isFalse();
+ DataType arrayType = DataTypes.ARRAY(DataTypes.INT());
+ assertThat(ArrayContains.INSTANCE.test(arrayType, null, 2)).isFalse();
+ assertThat(
+ ArrayContains.INSTANCE.test(
+ arrayType,
+ new GenericArray(new Integer[] {1, null}),
+ (Object) null))
+ .isFalse();
assertThat(containsTwo.negate()).isEmpty();
}