On Fri, Oct 25, 2019 at 1:30 PM Andrew Gierth <[email protected]> wrote: > > >>>>> "Amit" == Amit Kapila <[email protected]> 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
