Re: Add Boolean node

Peter Eisentraut <peter.eisentraut@enterprisedb.com>

From: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-01-03T11:04:52Z
Lists: pgsql-hackers

Attachments

On 27.12.21 10:02, Peter Eisentraut wrote:
> This patch adds a new node type Boolean, to go alongside the "value" 
> nodes Integer, Float, String, etc.  This seems appropriate given that 
> Boolean values are a fundamental part of the system and are used a lot.
> 
> Before, SQL-level Boolean constants were represented by a string with
> a cast, and internal Boolean values in DDL commands were usually 
> represented by Integer nodes.  This takes the place of both of these 
> uses, making the intent clearer and having some amount of type safety.

Here is an update of this patch set based on the feedback.  First, I 
added a patch that makes some changes in AlterRole() that my original 
patch might have broken or at least made more confusing.  Unlike in 
CreateRole(), we use three-valued logic here, so that a variable like 
issuper would have 0 = no, 1 = yes, -1 = not specified, keep previous 
value.  I'm simplifying this, by instead using the dissuper etc. 
variables to track whether a setting was specified.  This makes 
everything a bit simpler and makes the subsequent patch easier.

Second, I added the suggest by Tom Lane to rename to fields in the 
used-to-be-Value nodes to be different in each node type (ival, fval, 
etc.).  I agree that this makes things a bit cleaner and reduces the 
changes of mixups.

And third, the original patch that introduces the Boolean node with some 
small changes based on the feedback.

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Add Boolean node

  2. Rename value node fields

  3. Refactor AlterRole()