pgsql: Adjust DatumGetBool macro, this time for sure. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Adjust DatumGetBool macro, this time for sure.
Date
Msg-id E1avoE8-0007v6-5k@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Adjust DatumGetBool macro, this time for sure.

Commit 23a41573c attempted to fix the DatumGetBool macro to ignore bits
in a Datum that are to the left of the actual bool value.  But it did that
by casting the Datum to bool; and on compilers that use C99 semantics for
bool, that ends up being a whole-word test, not a 1-byte test.  This seems
to be the true explanation for contrib/seg failing in VS2015.  To fix, use
GET_1_BYTE() explicitly.  I think in the previous patch, I'd had some idea
of not having to commit to bool being exactly 1 byte wide, but regardless
of what the compiler's bool is, boolean columns and Datums are certainly
1 byte wide.

The previous fix was (eventually) back-patched into all active versions,
so do likewise with this one.

Branch
------
REL9_2_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/c563d97c6bfd63e4d533bf01d0074d3a47e7a12c

Modified Files
--------------
src/include/postgres.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Revert "Convert contrib/seg's bool-returning SQL functions to V1
Next
From: Tom Lane
Date:
Subject: pgsql: Adjust DatumGetBool macro, this time for sure.