diff --git a/datafusion/functions-aggregate/src/variance.rs b/datafusion/functions-aggregate/src/variance.rs index 367a8669ab7d3..3648ec0d13127 100644 --- a/datafusion/functions-aggregate/src/variance.rs +++ b/datafusion/functions-aggregate/src/variance.rs @@ -470,7 +470,7 @@ impl VarianceGroupsAccumulator { if let StatsType::Sample = self.stats_type { counts.iter_mut().for_each(|count| { - *count -= 1; + *count = count.saturating_sub(1); }); } let nulls = NullBuffer::from_iter(counts.iter().map(|&count| count != 0)); diff --git a/datafusion/sqllogictest/test_files/aggregate.slt b/datafusion/sqllogictest/test_files/aggregate.slt index 576abe5c6f5a3..3ae109bc80a69 100644 --- a/datafusion/sqllogictest/test_files/aggregate.slt +++ b/datafusion/sqllogictest/test_files/aggregate.slt @@ -567,13 +567,13 @@ set datafusion.sql_parser.dialect = 'Postgres'; # csv_query_stddev_12 query IR -SELECT c2, var_samp(c12) FILTER (WHERE c12 > 0.90) FROM aggregate_test_100 GROUP BY c2 ORDER BY c2 +SELECT c2, var_samp(c12) FILTER (WHERE c12 > 0.95) FROM aggregate_test_100 GROUP BY c2 ORDER BY c2 ---- -1 0.000889240174 -2 0.000785878272 +1 0.000791243479 +2 0.000061521903 3 NULL 4 NULL -5 0.000269544643 +5 NULL # Restore the default dialect statement ok