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 7277b77b84 [flink] Fix decimal column analysis with null statistics 
(#9469)
7277b77b84 is described below

commit 7277b77b84795f003f430eb3a1bad637cb4d8e96
Author: Arnav Balyan <[email protected]>
AuthorDate: Sun Aug 30 12:47:28 2026 +0530

    [flink] Fix decimal column analysis with null statistics (#9469)
---
 .../java/org/apache/paimon/flink/utils/TableStatsUtil.java | 14 ++++++++++----
 .../org/apache/paimon/flink/FlinkAnalyzeTableITCase.java   | 11 +++++++++++
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/utils/TableStatsUtil.java
 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/utils/TableStatsUtil.java
index fe10fa63c0..aadcd0e30f 100644
--- 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/utils/TableStatsUtil.java
+++ 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/utils/TableStatsUtil.java
@@ -212,17 +212,23 @@ public class TableStatsUtil {
                         null,
                         null);
             } else if (typeRoot.equals(DataTypeRoot.DECIMAL)) {
-                BigDecimal max = 
BigDecimal.valueOf(doubleColumnStatsData.getMax());
-                BigDecimal min = 
BigDecimal.valueOf(doubleColumnStatsData.getMin());
+                BigDecimal max =
+                        doubleColumnStatsData.getMax() == null
+                                ? null
+                                : 
BigDecimal.valueOf(doubleColumnStatsData.getMax());
+                BigDecimal min =
+                        doubleColumnStatsData.getMin() == null
+                                ? null
+                                : 
BigDecimal.valueOf(doubleColumnStatsData.getMin());
                 return ColStats.newColStats(
                         field.id(),
                         null != doubleColumnStatsData.getNdv()
                                 ? doubleColumnStatsData.getNdv()
                                 : null,
-                        null != doubleColumnStatsData.getMin()
+                        min != null
                                 ? Decimal.fromBigDecimal(min, min.precision(), 
min.scale())
                                 : null,
-                        null != doubleColumnStatsData.getMax()
+                        max != null
                                 ? Decimal.fromBigDecimal(max, max.precision(), 
max.scale())
                                 : null,
                         null != doubleColumnStatsData.getNullCount()
diff --git 
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/FlinkAnalyzeTableITCase.java
 
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/FlinkAnalyzeTableITCase.java
index e186080d9f..5a99925de5 100644
--- 
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/FlinkAnalyzeTableITCase.java
+++ 
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/FlinkAnalyzeTableITCase.java
@@ -75,6 +75,17 @@ public class FlinkAnalyzeTableITCase extends 
CatalogITCaseBase {
         assertThat(newStats.get()).isSameAs(stats);
     }
 
+    @Test
+    public void testAnalyzeAllNullDecimalColumn() throws 
Catalog.TableNotExistException {
+        sql("CREATE TABLE T (id INT, amount DECIMAL(10, 2))");
+        sql("INSERT INTO T VALUES (1, CAST(NULL AS DECIMAL(10, 2)))");
+
+        sql("ANALYZE TABLE T COMPUTE STATISTICS FOR ALL COLUMNS");
+
+        ColStats<?> decimalStats = 
paimonTable("T").statistics().get().colStats().get("amount");
+        assertThat(decimalStats).isEqualTo(ColStats.newColStats(1, 0L, null, 
null, 1L, null, null));
+    }
+
     @Test
     public void testAnalyzeTableColumn() throws Catalog.TableNotExistException 
{
         sql(

Reply via email to