GinPageIs* don't actually return a boolean

From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-hackers(at)postgresql(dot)org
Cc: Teodor Sigaev <teodor(at)sigaev(dot)ru>
Subject: GinPageIs* don't actually return a boolean
Date: 2015-08-11 15:42:37
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers


#define GinPageIsLeaf(page) ( GinPageGetOpaque(page)->flags & GIN_LEAF )
#define GinPageIsData(page) ( GinPageGetOpaque(page)->flags & GIN_DATA )
#define GinPageIsList(page) ( GinPageGetOpaque(page)->flags & GIN_LIST )

These macros don't actually return a boolean that's comparable with our
true/false. That doesn't strike me as a good idea.

If there's actually a boolean type defined by some included header (in
which case we don't overwrite it in c.h!) this actually can lead to
tests failing. If e.g. stdbool.h is included in c.h the tests fail with

I think we should add a !! to these macros to make sure it's an actual

This has been the case since gin's initial commit in 8a3631f8d86cdd9b0 .


Andres Freund


Browse pgsql-hackers by date

  From Date Subject
Next Message Fabien COELHO 2015-08-11 15:44:01 pgbench bug in head
Previous Message Simon Riggs 2015-08-11 15:28:13 Re: 64-bit XIDs again