Re: BUG #5053: domain constraints still leak

From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Bruce Momjian <bruce(at)momjian(dot)us>
Cc: Sam Mason <sam(at)samason(dot)me(dot)uk>, pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #5053: domain constraints still leak
Date: 2009-09-21 17:22:29
Message-ID: 603c8f070909211022k9126186ifac452e8c95345fb@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers

On Mon, Sep 21, 2009 at 12:31 PM, Bruce Momjian <bruce(at)momjian(dot)us> wrote:
> Sam Mason wrote:
>> On Mon, Sep 14, 2009 at 10:54:07AM -0500, Kevin Grittner wrote:
>> > Sam Mason <sam(at)samason(dot)me(dot)uk> wrote:
>> > > the deeper problem seems to be that the table was created as:
>> > >
>> > >   create table test (a tstdom);
>> > >
>> > > and not as:
>> > >
>> > >   create table test (a tstdom not null);
>> >
>> > Given that tstdom is declared as NOT NULL, is this difference
>> > considered a *feature* or is it an implementation quirk?
>>
>> That's why I pointed it out!
>>
>> Based on my reading of the SQL spec (and reading about Codd's
>> descriptions of domains) I'd say it was a bug/implementation quirk.
>
> Do we need a TODO for this item?  Also, I see this odd behavior even
> without domains:
>
>        test=> CREATE TYPE xx AS (x INT);
>        CREATE TYPE
>        test=> CREATE TABLE test4(col1 xx NOT NULL);
>        CREATE TABLE
>        test=> INSERT INTO test4 VALUES (ROW(NULL));
>        INSERT 0 1
>        test=> SELECT * FROM test4 WHERE col1 IS NULL;
>         col1
>        ------
>         ()
>        (1 row)
>
> Here I am illustrating that NOT NULL and IS NULL have different ideas of
> what a NULL is?  That seems odd too.

I think what you're demonstrating is that there is a difference
between a NULL, and a row consisting of a single NULL. We've had some
dispute (on this thread) about whether that ought to be the case, but
this is certainly a lot less weird and more debatable than the domain
example, at least IMO.

...Robert

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message David Fetter 2009-09-21 18:17:13 Re: BUG #5066: plperl issues with perl_destruct() and END blocks
Previous Message Robert Haas 2009-09-21 17:19:59 Re: BUG #5066: plperl issues with perl_destruct() and END blocks

Browse pgsql-hackers by date

  From Date Subject
Next Message Josh Berkus 2009-09-21 17:32:27 Re: SELECT ... FOR UPDATE [WAIT integer | NOWAIT] for 8.5
Previous Message Bruce Momjian 2009-09-21 16:31:31 Re: BUG #5053: domain constraints still leak