Re: [HACKERS] taking stdbool.h into use

From: Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>
To: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com>
Subject: Re: [HACKERS] taking stdbool.h into use
Date: 2017-12-26 19:00:47
Message-ID: 49994854-1fdb-6eba-fc5b-c3d401934607@2ndquadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 12/25/17 00:32, Michael Paquier wrote:
>> So here is a minimal patch set to perhaps wrap this up for the time
>> being. I have added static assertions that check the sizes of
>> GinNullCategory and GinTernaryValue, which I think are the two critical
>> places that require compatibility with bool. And then we include
>> <stdbool.h> only if its bool has size 1.
>
> + /*
> + * now we can use the nullFlags as category codes
> + */
> + StaticAssertStmt(sizeof(GinNullCategory) == sizeof(bool),
> + "sizes of GinNullCategory and bool are not equal");
> *categories = (GinNullCategory *) nullFlags;
>
> Hm. So on powerpc compilation is going to fail with this patch as
> sizeof(char) is 1, no?

Yes, but right now it would (probably) just fail in mysterious ways, so
the static assertion adds safety.

> Wouldn't it be better to just allocate an array
> for GinNullCategory entries and then just fill in the values one by
> one with GIN_CAT_NORM_KEY or GIN_CAT_NULL_KEY by scanning nullFlags?

Yeah, initially I though making another loop through the array would be
adding more overhead. But reading the code again, we already loop
through the array anyway to set the nullFlags to the right bit patterns.
So I think we can just drop that and build a proper GinNullCategory
array instead. I think that would be much cleaner. Patch attached.

--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Attachment Content-Type Size
0001-Don-t-cast-between-GinNullCategory-and-bool.patch text/plain 5.0 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Eisentraut 2017-12-26 19:15:18 Re: [HACKERS] replace GrantObjectType with ObjectType
Previous Message Alvaro Herrera 2017-12-26 18:58:53 Re: [PROPOSAL] Shared Ispell dictionaries