Re: define bool in pgtypeslib_extern.h - Mailing list pgsql-hackers

From Amit Kapila
Subject Re: define bool in pgtypeslib_extern.h
Date
Msg-id CAA4eK1KVH+fP8ry7fJjVQP7wSnexXcU-D9BJYjsrabXeBuwd-g@mail.gmail.com
Whole thread Raw
In response to Re: define bool in pgtypeslib_extern.h  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: define bool in pgtypeslib_extern.h  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
On Mon, Oct 28, 2019 at 11:27 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> Amit Kapila <amit.kapila16@gmail.com> writes:
> > On Sat, Oct 26, 2019 at 10:49 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
> >> I'm inclined to think that we need to make ecpglib.h's bool-related
> >> definitions exactly match c.h, which will mean that it has to pull in
> >> <stdbool.h> on most platforms, which will mean adding a control symbol
> >> for that to ecpg_config.h.  I do not think we should export
> >> HAVE_STDBOOL_H and SIZEOF_BOOL there though; probably better to have
> >> configure make the choice and export something named like PG_USE_STDBOOL.
>
> > This sounds reasonable to me, but we also might want to do something
> > for probes.d.  To be clear, I am not immediately planning to write a
> > patch for this.
>
> As far as probes.d goes, it seems to work to do
>
> @@ -20,7 +20,7 @@
>  #define BlockNumber unsigned int
>  #define Oid unsigned int
>  #define ForkNumber int
> -#define bool char
> +#define bool _Bool
>
>  provider postgresql {
>
> although removing the macro altogether leads to compilation failures.
> I surmise that dtrace is trying to compile the generated code without
> any #include's, so that only compiler built-in types will do.
>
> (I tried this on macOS, FreeBSD, and NetBSD, to the extent of seeing
> whether a build with --enable-dtrace goes through.  I don't know
> enough about dtrace to test the results easily, but I suppose that
> if it compiles then this is OK.)
>
> This would, of course, not work on any platform where we're not
> using <stdbool.h>, but I doubt that the set of platforms where
> dtrace works includes any such.
>
> A plausible alternative is to do
>
> -#define bool char
> +#define bool unsigned char
>
> which is correct on platforms where we don't use <stdbool.h>,
> and is at least no worse than now on those where we do.  In
> practice, since we know sizeof(_Bool) == 1 on platforms where
> we use it, this is probably just fine for dtrace's purposes.
>
> Anyone have a preference?
>

+1 for the second alternative as it will make it similar to c.h.


-- 
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com



pgsql-hackers by date:

Previous
From: Grigory Smolkin
Date:
Subject: Re: [proposal] recovery_target "latest"
Next
From: Amit Langote
Date:
Subject: Re: d25ea01275 and partitionwise join