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