On 2017-04-05 10:45:06 -0400, Tom Lane wrote:
> Andres Freund <and...@anarazel.de> writes:
> > On 2017-04-05 09:43:53 -0400, Tom Lane wrote:
> >> Yeah, I was just thinking about that.  The core problem though is that
> >> we need the "bool" fields in the system catalog structs (or anyplace
> >> else that it represents an on-disk bool datum) to be understood as
> >> being 1 byte wide. I do not think we can assume that that's true of
> >> every compiler's _Bool type.  So we'd need some workaround for that.
> >> There are probably other places such as isnull arrays where it'd be
> >> wise to force the width to be 1 byte.
> > I wonder if there's any compiler that has _Bool/stdbool.h where it's not
> > 1 byte sized. It's definitely not guaranteed by the standard.
> Hm.  I'd supposed that it'd be pretty common to make _Bool be int-sized.

I think nearly all x86 compilers use 1byte, but I assume there's some
architectures where that'd be expensive.

> If it is char-sized almost everywhere, we could create a policy of
> using stdbool.h unless configure sees that _Bool is not char-sized.
> OTOH, that doesn't improve our existing situation that we have
> platform-dependent semantics around "bool" (eg, what happens when
> a non-char-sized value is assigned).  It would just change which
> one is the majority case, and not in a very safe direction :-(

Yea, no, that doesn't like fun :(.

Might make sense to temporarily add a configure test checking for
_Bool/stdbool size, so we have some idea what we're talking about.


Andres Freund

Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:

Reply via email to