]> granicus.if.org Git - postgresql/commit
Adjust DatumGetBool macro, this time for sure.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 28 Apr 2016 15:50:58 +0000 (11:50 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 28 Apr 2016 15:51:17 +0000 (11:51 -0400)
commit707c44fe257bc2a7be8acd2d9a072a83e21a60e3
treee2652c9d4a7b045777f2654dfadc74d29699c479
parent4f29edbb1603c552eade920ded85c0c6794a9063
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.
src/include/postgres.h