From: Andrew Dunstan Date: Fri, 27 Mar 2015 21:29:59 +0000 (-0400) Subject: Fix portability issues with stddev in pg_stat_statements X-Git-Tag: REL9_5_ALPHA1~543 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=735cd6128;p=postgresql Fix portability issues with stddev in pg_stat_statements Stddev is calculated on the fly, and the code in commit 717f70953264 was using Float8GetDatumFast() inappropriately to convert the result to a Datum. Mea culpa. It now uses Float8GetDatum(). --- diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib/pg_stat_statements/pg_stat_statements.c index ec0846d0a8..fee2aaacbe 100644 --- a/contrib/pg_stat_statements/pg_stat_statements.c +++ b/contrib/pg_stat_statements/pg_stat_statements.c @@ -1577,12 +1577,15 @@ pg_stat_statements_internal(FunctionCallInfo fcinfo, * sample variance, as we have data for the whole population, * so Bessel's correction is not used, and we don't divide by * tmp.calls - 1. + * + * We're calculating the stddev on the fly, so it's not in the tmp + * structure, so we can't use the Float8GetDatumFast macro here. */ if (tmp.calls > 1) values[i++] = - Float8GetDatumFast(sqrtd(tmp.sum_var_time / tmp.calls)); + Float8GetDatum(sqrtd(tmp.sum_var_time / tmp.calls)); else - values[i++] = Float8GetDatumFast(0.0); + values[i++] = Float8GetDatum(0.0); } values[i++] = Int64GetDatumFast(tmp.rows); values[i++] = Int64GetDatumFast(tmp.shared_blks_hit);