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. Greetings, Andres Freund -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers