diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java index 61498806bf..46048cd690 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java @@ -1967,10 +1967,7 @@ public static void updateStats(Statistics stats, long newNumRows, if (useColStats) { List colStats = stats.getColumnStats(); for (ColStatistics cs : colStats) { - long oldNumNulls = cs.getNumNulls(); long oldDV = cs.getCountDistint(); - long newNumNulls = Math.round(ratio * oldNumNulls); - cs.setNumNulls(newNumNulls); if (affectedColumns.contains(cs.getColumnName())) { long newDV = oldDV; @@ -1987,6 +1984,8 @@ public static void updateStats(Statistics stats, long newNumRows, if (oldDV > newNumRows) { cs.setCountDistint(newNumRows); } + long newNumNulls = Math.round(ratio * cs.getNumNulls()); + cs.setNumNulls(newNumNulls > newNumRows ? newNumRows: newNumNulls); } stats.setColumnStats(colStats); long newDataSize = StatsUtils.getDataSizeFromColumnStats(newNumRows, colStats);