BUG #18976: -0.0 with float8 will be transformed to 0 in prepare statement but not in normal execution
PG Bug reporting form <noreply@postgresql.org>
From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: 798604270@qq.com
Date: 2025-07-03T03:03:05Z
Lists: pgsql-bugs
The following bug has been logged on the website: Bug reference: 18976 Logged by: Chi Zhang Email address: 798604270@qq.com PostgreSQL version: 18beta1 Operating system: Ubuntu 24.04 and docker Description: The value -0.0 with float8 is transformed to 0 in prepared statements but remains -0 in normal execution. Although 0 and -0 are numerically equal, this discrepancy can lead to subtle bugs in certain cases—for example, when the value is cast to a VARCHAR, as illustrated below. ``` PREPARE prepare_query (float8) AS SELECT CAST($1 AS VARCHAR) = CAST(-0.0::float8 AS VARCHAR); EXECUTE prepare_query(-0.0); -- f ```