From: John Naylor Date: Thu, 2 Jul 2026 06:26:56 +0000 (+0700) Subject: Fix loss of precision in pg_stat_us_to_ms() X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3eca140531f1c8e58e9a59af827488616699a052;p=thirdparty%2Fpostgresql.git Fix loss of precision in pg_stat_us_to_ms() Multiplying by the constant 0.001 can produce trailing-digit noise in displayed values (for example 0.009000000000000001 instead of 0.009, with default extra_float_digits) because 0.001 cannot be represented exactly in binary floating point. Use division by 1000.0 instead, matching code elsewhere in the tree. Author: Bertrand Drouvot Discussion: https://postgr.es/m/akIYkMK4bHe9qX/N@bdtpg --- diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index 0c6a20843a5..b5f27b0463c 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -1457,7 +1457,7 @@ pgstat_get_io_time_index(IOOp io_op) static inline double pg_stat_us_to_ms(PgStat_Counter val_ms) { - return val_ms * (double) 0.001; + return (double) val_ms / 1000.0; } /*