pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Peter Eisentraut <peter@eisentraut.org>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Fix ALTER DOMAIN NOT NULL syntax
Date: Mon, 15 Apr 2024 06:39:19 +0000
Message-ID: <E1rwFzr-0027bD-Bj@gemulon.postgresql.org> (raw)

Fix ALTER DOMAIN NOT NULL syntax

This addresses a few problems with commit e5da0fe3c22 ("Catalog domain
not-null constraints").

In CREATE DOMAIN, a NOT NULL constraint looks like

    CREATE DOMAIN d1 AS int [ CONSTRAINT conname ] NOT NULL

(Before e5da0fe3c22, the constraint name was accepted but ignored.)

But in ALTER DOMAIN, a NOT NULL constraint looks like

    ALTER DOMAIN d1 ADD [ CONSTRAINT conname ] NOT NULL VALUE

where VALUE is where for a table constraint the column name would be.
(This works as of e5da0fe3c22.  Before e5da0fe3c22, this syntax
resulted in an internal error.)

But for domains, this latter syntax is confusing and needlessly
inconsistent between CREATE and ALTER.  So this changes it to just

    ALTER DOMAIN d1 ADD [ CONSTRAINT conname ] NOT NULL

(None of these syntaxes are per SQL standard; we are just living with
the bits of inconsistency that have built up over time.)

In passing, this also changes the psql \dD output to not show not-null
constraints in the column "Check", since it's already shown in the
column "Nullable".  This has also been off since e5da0fe3c22.

Reviewed-by: jian he <jian.universality@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/9ec24d7b-633d-463a-84c6-7acff769c9e8%40eisentraut.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/9895b35cb88edc30b836661dbc26d7665716b5a0

Modified Files
--------------
doc/src/sgml/ref/create_domain.sgml  | 17 ++++++++--
src/backend/parser/gram.y            | 60 ++++++++++++++++++++++++++++++++++--
src/backend/utils/adt/ruleutils.c    |  2 +-
src/bin/psql/describe.c              |  2 +-
src/test/regress/expected/domain.out | 22 ++++++++++---
src/test/regress/sql/domain.sql      | 12 +++++---
6 files changed, 99 insertions(+), 16 deletions(-)



view thread (2+ messages)

Message-ID: <E1rwFzr-0027bD-Bj@gemulon.postgresql.org>
Permalink:  ../E1rwFzr-0027bD-Bj@gemulon.postgresql.org/
Also on:    postgresql.org/message-id/E1rwFzr-0027bD-Bj@gemulon.postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-committers@postgresql.org
  Cc: peter@eisentraut.org, pgsql-committers@lists.postgresql.org
  Subject: Re: pgsql: Fix ALTER DOMAIN NOT NULL syntax
  In-Reply-To: <E1rwFzr-0027bD-Bj@gemulon.postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox