You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by ru...@apache.org on 2026/08/13 21:24:41 UTC

(iceberg) branch main updated: Parquet: Fix notNaN for columns missing from files (#17633)

This is an automated email from the ASF dual-hosted git repository.

RussellSpitzer pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg.git


The following commit(s) were added to refs/heads/main by this push:
     new 7e56d30d30 Parquet: Fix notNaN for columns missing from files (#17633)
7e56d30d30 is described below

commit 7e56d30d30d203b5e07274dacc3f3f5a9ce277f5
Author: yangshangqing <50...@users.noreply.github.com>
AuthorDate: Thu Aug 13 17:24:35 2026 -0400

    Parquet: Fix notNaN for columns missing from files (#17633)
---
 .../iceberg/parquet/ParquetDictionaryRowGroupFilter.java    |  6 +++---
 .../iceberg/parquet/TestDictionaryRowGroupFilter.java       | 13 +++++++++----
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/parquet/src/main/java/org/apache/iceberg/parquet/ParquetDictionaryRowGroupFilter.java b/parquet/src/main/java/org/apache/iceberg/parquet/ParquetDictionaryRowGroupFilter.java
index 6906cc9cb8..5e7e36740a 100644
--- a/parquet/src/main/java/org/apache/iceberg/parquet/ParquetDictionaryRowGroupFilter.java
+++ b/parquet/src/main/java/org/apache/iceberg/parquet/ParquetDictionaryRowGroupFilter.java
@@ -175,12 +175,12 @@ public class ParquetDictionaryRowGroupFilter {
     public <T> Boolean notNaN(BoundReference<T> ref) {
       int id = ref.fieldId();
 
-      if (mayContainNulls.get(id)) {
+      Boolean hasNonDictPage = isFallback.get(id);
+      if (hasNonDictPage == null || hasNonDictPage) {
         return ROWS_MIGHT_MATCH;
       }
 
-      Boolean hasNonDictPage = isFallback.get(id);
-      if (hasNonDictPage == null || hasNonDictPage) {
+      if (mayContainNulls.get(id)) {
         return ROWS_MIGHT_MATCH;
       }
 
diff --git a/parquet/src/test/java/org/apache/iceberg/parquet/TestDictionaryRowGroupFilter.java b/parquet/src/test/java/org/apache/iceberg/parquet/TestDictionaryRowGroupFilter.java
index 22f8068c0f..fda6bcd826 100644
--- a/parquet/src/test/java/org/apache/iceberg/parquet/TestDictionaryRowGroupFilter.java
+++ b/parquet/src/test/java/org/apache/iceberg/parquet/TestDictionaryRowGroupFilter.java
@@ -484,10 +484,15 @@ public class TestDictionaryRowGroupFilter {
   public void testColumnNotInFile() {
     Expression[] exprs =
         new Expression[] {
-          lessThan("not_in_file", 1.0f), lessThanOrEqual("not_in_file", 1.0f),
-          equal("not_in_file", 1.0f), greaterThan("not_in_file", 1.0f),
-          greaterThanOrEqual("not_in_file", 1.0f), notNull("not_in_file"),
-          isNull("not_in_file"), notEqual("not_in_file", 1.0f)
+          lessThan("not_in_file", 1.0f),
+          lessThanOrEqual("not_in_file", 1.0f),
+          equal("not_in_file", 1.0f),
+          greaterThan("not_in_file", 1.0f),
+          greaterThanOrEqual("not_in_file", 1.0f),
+          notNull("not_in_file"),
+          isNull("not_in_file"),
+          notEqual("not_in_file", 1.0f),
+          notNaN("not_in_file")
         };
 
     for (Expression expr : exprs) {