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

Reply via email to