diff --git a/paimon-common/src/main/java/org/apache/paimon/format/SimpleColStats.java b/paimon-common/src/main/java/org/apache/paimon/format/SimpleColStats.java
index 0b0062b7568f..368e14d13e46 100644
--- a/paimon-common/src/main/java/org/apache/paimon/format/SimpleColStats.java
+++ b/paimon-common/src/main/java/org/apache/paimon/format/SimpleColStats.java
@@ -29,6 +29,7 @@
*
min: the minimum value of the column
* max: the maximum value of the column
* nullCount: the number of nulls
+ * nanCount: the number of NaN values for FLOAT/DOUBLE columns, null if unknown
*
*/
public class SimpleColStats {
@@ -38,11 +39,21 @@ public class SimpleColStats {
@Nullable private final Object min;
@Nullable private final Object max;
private final Long nullCount;
+ @Nullable private final Long nanCount;
public SimpleColStats(@Nullable Object min, @Nullable Object max, @Nullable Long nullCount) {
+ this(min, max, nullCount, null);
+ }
+
+ public SimpleColStats(
+ @Nullable Object min,
+ @Nullable Object max,
+ @Nullable Long nullCount,
+ @Nullable Long nanCount) {
this.min = min;
this.max = max;
this.nullCount = nullCount;
+ this.nanCount = nanCount;
}
@Nullable
@@ -60,6 +71,11 @@ public Long nullCount() {
return nullCount;
}
+ @Nullable
+ public Long nanCount() {
+ return nanCount;
+ }
+
public boolean isNone() {
return min == null && max == null && nullCount == null;
}
@@ -72,16 +88,17 @@ public boolean equals(Object o) {
SimpleColStats that = (SimpleColStats) o;
return Objects.equals(min, that.min)
&& Objects.equals(max, that.max)
- && Objects.equals(nullCount, that.nullCount);
+ && Objects.equals(nullCount, that.nullCount)
+ && Objects.equals(nanCount, that.nanCount);
}
@Override
public int hashCode() {
- return Objects.hash(min, max, nullCount);
+ return Objects.hash(min, max, nullCount, nanCount);
}
@Override
public String toString() {
- return String.format("{%s, %s, %d}", min, max, nullCount);
+ return String.format("{%s, %s, %d, %s}", min, max, nullCount, nanCount);
}
}
diff --git a/paimon-common/src/main/java/org/apache/paimon/statistics/AbstractSimpleColStatsCollector.java b/paimon-common/src/main/java/org/apache/paimon/statistics/AbstractSimpleColStatsCollector.java
index ed2d75efa06b..f4a50768b0b0 100644
--- a/paimon-common/src/main/java/org/apache/paimon/statistics/AbstractSimpleColStatsCollector.java
+++ b/paimon-common/src/main/java/org/apache/paimon/statistics/AbstractSimpleColStatsCollector.java
@@ -29,8 +29,10 @@ public abstract class AbstractSimpleColStatsCollector implements SimpleColStatsC
protected long nullCount;
+ protected long nanCount;
+
@Override
public SimpleColStats result() {
- return new SimpleColStats(minValue, maxValue, nullCount);
+ return new SimpleColStats(minValue, maxValue, nullCount, nanCount);
}
}
diff --git a/paimon-common/src/main/java/org/apache/paimon/statistics/CountsSimpleColStatsCollector.java b/paimon-common/src/main/java/org/apache/paimon/statistics/CountsSimpleColStatsCollector.java
index 7933cef46475..c80d25dceeb0 100644
--- a/paimon-common/src/main/java/org/apache/paimon/statistics/CountsSimpleColStatsCollector.java
+++ b/paimon-common/src/main/java/org/apache/paimon/statistics/CountsSimpleColStatsCollector.java
@@ -28,11 +28,17 @@ public class CountsSimpleColStatsCollector extends AbstractSimpleColStatsCollect
public void collect(Object field, Serializer