Re: Missing SIZE_MAX

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Alvaro Herrera <alvherre@alvh.no-ip.org>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2017-09-01T18:25:32Z
Lists: pgsql-hackers

Attachments

I wrote:
> Robert Haas <robertmhaas@gmail.com> writes:
>> It might be worth the effort to clean all of this up, just because the
>> next person who gets bitten by it may not be as smart as you are.

> Yeah.  I was just thinking that maybe the appropriate investment of
> effort is to make [U]INT64CONST smarter, so that it results in a
> properly-suffixed constant and doesn't need a cast.  Then it'd be a
> lot easier to make these other macros be #if-safe.

Actually, that looks easier than I thought.  The current approach to
[U]INT64CONST dates to before we were willing to require the compiler
to have working 64-bit support.  I think that now we can just assume
that either an L/UL or LL/ULL suffix will work, as in the attached
draft.  (This'd allow dropping configure's HAVE_LL_CONSTANTS probe
entirely, but I didn't do that yet.)

			regards, tom lane

Commits

  1. Make [U]INT64CONST safe for use in #if conditions.

  2. Ensure SIZE_MAX can be used throughout our code.

  3. Teach libpq to detect integer overflow in the row count of a PGresult.