Re: BUG #17128: minimum numeric 'integer' is -2147483647 not -2147483648 as documented

John Naylor <john.naylor@enterprisedb.com>

From: John Naylor <john.naylor@enterprisedb.com>
To: kjs@teews.com, pgsql-bugs@lists.postgresql.org
Date: 2021-07-30T15:05:14Z
Lists: pgsql-bugs
On Fri, Jul 30, 2021 at 7:53 AM PG Bug reporting form <
noreply@postgresql.org> wrote:

> The PGTYPESnumeric_to_int function deems -2147483648 to be invalid even
> though it is a perfectly valid 32-bit integer because the code compares to
> -INT_MAX which resolves to -2147483647 on the Fedora/Red Hat and Solaris
> versions I have available to check against.

> -   if (l < -INT_MAX || l > INT_MAX)
> +   if (l < (-INT_MAX - 1) || l > INT_MAX)

Yeah, that looks like it should be INT_MIN instead. I'll see about making
that happen. Thanks for the report!

--
John Naylor
EDB: http://www.enterprisedb.com

Commits

  1. Fix range check in ECPG numeric to int conversion