Re: Catalog domain not-null constraints - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Catalog domain not-null constraints
Date
Msg-id 789947.1711063048@sss.pgh.pa.us
Whole thread Raw
In response to Re: Catalog domain not-null constraints  (Vik Fearing <vik@postgresfriends.org>)
Responses Re: Catalog domain not-null constraints
List pgsql-hackers
Vik Fearing <vik@postgresfriends.org> writes:
> On 3/21/24 15:30, Tom Lane wrote:
>> The SQL spec's answer to that conundrum appears to be "NULL is
>> a valid value of every domain, and if you don't like it, tough".

> I don't see how you can infer this from the standard at all.

I believe where we got that from is 6.13 <cast specification>,
which quoth (general rule 2):

    c) If SV is the null value, then the result of CS is the null
    value and no further General Rules of this Subclause are applied.

In particular, that short-circuits application of the domain
constraints (GR 23), implying that CAST(NULL AS some_domain) is
always successful.  Now you could argue that there's some other
context that would reject nulls, but being inconsistent with
CAST would seem more like a bug than a feature.

> As also said somewhere in that thread, I think that <cast specification> 
> short-cutting a NULL input value without considering the constraints of 
> a domain is a bug that needs to be fixed in the standard.

I think it's probably intentional.  It certainly fits with the lack of
syntax for DOMAIN NOT NULL.  Also, it's been like that since SQL99;
do you think nobody's noticed it for 25 years?

            regards, tom lane



pgsql-hackers by date:

Previous
From: Melih Mutlu
Date:
Subject: Re: Flushing large data immediately in pqcomm
Next
From: Peter Geoghegan
Date:
Subject: Re: Optimizing nbtree ScalarArrayOp execution, allowing multi-column ordered scans, skip scan