On Mon, Sep 21, 2009 at 12:31 PM, Bruce Momjian <br...@momjian.us> wrote:
> Sam Mason wrote:
>> On Mon, Sep 14, 2009 at 10:54:07AM -0500, Kevin Grittner wrote:
>> > Sam Mason <s...@samason.me.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

-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to