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 ed8ecdc231 [spark] Convert EqualNullSafe with NaN to IsNaN in 
SparkFilterConverter (#10826)
ed8ecdc231 is described below

commit ed8ecdc23177606a57d7d21a81ee12b4512038f0
Author: chenjian2664 <[email protected]>
AuthorDate: Tue Oct 27 14:16:32 2026 +0800

    [spark] Convert EqualNullSafe with NaN to IsNaN in SparkFilterConverter 
(#10826)
---
 .../org/apache/paimon/spark/SparkFilterConverter.java   |  2 ++
 .../apache/paimon/spark/SparkFilterConverterTest.java   | 17 +++++++++++++++++
 2 files changed, 19 insertions(+)

diff --git 
a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkFilterConverter.java
 
b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkFilterConverter.java
index 31e4c8aec9..8c1a925285 100644
--- 
a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkFilterConverter.java
+++ 
b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkFilterConverter.java
@@ -118,6 +118,8 @@ public class SparkFilterConverter {
             int index = fieldIndex(eq.attribute());
             if (eq.value() == null) {
                 return builder.isNull(index);
+            } else if (isNaN(eq.value())) {
+                return builder.isNaN(index);
             } else {
                 Object literal = convertLiteral(index, eq.value());
                 return builder.equal(index, literal);
diff --git 
a/paimon-spark/paimon-spark-ut/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java
 
b/paimon-spark/paimon-spark-ut/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java
index 2e5cec362e..674d9baee6 100644
--- 
a/paimon-spark/paimon-spark-ut/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java
+++ 
b/paimon-spark/paimon-spark-ut/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java
@@ -263,6 +263,23 @@ public class SparkFilterConverterTest {
         assertThat(converter.convert(eqFloat)).isEqualTo(builder.equal(0, 
1.0f));
     }
 
+    @Test
+    public void testEqualNullSafeNaN() {
+        RowType rowType =
+                new RowType(
+                        Arrays.asList(
+                                new DataField(0, "f", new FloatType()),
+                                new DataField(1, "d", new DoubleType())));
+        SparkFilterConverter converter = new SparkFilterConverter(rowType);
+        PredicateBuilder builder = new PredicateBuilder(rowType);
+
+        EqualNullSafe eqNaNFloat = EqualNullSafe.apply("f", Float.NaN);
+        assertThat(converter.convert(eqNaNFloat)).isEqualTo(builder.isNaN(0));
+
+        EqualNullSafe eqNaNDouble = EqualNullSafe.apply("d", Double.NaN);
+        assertThat(converter.convert(eqNaNDouble)).isEqualTo(builder.isNaN(1));
+    }
+
     @Test
     public void testIgnoreFailure() {
         List<DataField> dataFields = new ArrayList<>();

Reply via email to