On Fri, Oct 25, 2019 at 1:30 PM Andrew Gierth
<andrew@tao11.riddles.org.uk> wrote:
>
> >>>>> "Amit" == Amit Kapila <amit.kapila16@gmail.com> writes:
>
> Amit> BTW, prairiedog is also show similar failure and both seems to
> Amit> have similar OS except for versions.
>
> Be aware that prairiedog and locust (unlike the rest of the buildfarm)
> have compilers whose "bool" type is not 1 byte long; PG can't use that,
> so we don't include <stdbool.h> on those platforms.
>
> Looking at c.h, the problem seems to be that when we define our own bool
> in the absence of a usable stdbool.h, we do so as a typedef and not a
> macro. So pgtypeslib_extern.h ends up redefining it in that case, and
> (this bit may be my fault: see d26a810eb) uses a different type to c.h
> (char vs. unsigned char).
>
> (stdbool.h is required by spec to do #define bool _Bool rather than a
> typedef, hence the difference in behavior)
>
> I'm no expert on the ECPG internals, but this doesn't look like an
> exposed interface, so maybe it just shouldn't be trying to #define bool
> at all and just rely on c.h (from postgres_fe.h) to declare the type?
>
+1. I think we can discuss this on hackers, so started a thread [1].
[1] - https://www.postgresql.org/message-id/CAA4eK1LmaKO7Du9M9Lo%3DkxGU8sB6aL8fa3sF6z6d5yYYVe3BuQ%40mail.gmail.com
--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com