Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit23b09e1

Browse files
committed
Adjust DatumGetBool macro, this time for sure.
Commit23a4157 attempted to fix the DatumGetBool macro to ignore bitsin a Datum that are to the left of the actual bool value. But it did thatby casting the Datum to bool; and on compilers that use C99 semantics forbool, that ends up being a whole-word test, not a 1-byte test. This seemsto be the true explanation for contrib/seg failing in VS2015. To fix, useGET_1_BYTE() explicitly. I think in the previous patch, I'd had some ideaof not having to commit to bool being exactly 1 byte wide, but regardlessof what the compiler's bool is, boolean columns and Datums are certainly1 byte wide.The previous fix was (eventually) back-patched into all active versions,so do likewise with this one.
1 parentf050423 commit23b09e1

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

‎src/include/postgres.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ typedef Datum *DatumPtr;
398398
* the left of the width of bool, per comment above.
399399
*/
400400

401-
#defineDatumGetBool(X) ((bool) (((bool) (X)) != 0))
401+
#defineDatumGetBool(X) ((bool) (GET_1_BYTE(X) != 0))
402402

403403
/*
404404
* BoolGetDatum

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp