Re: BUG #6669: unique index w/ multiple columns and NULLs - Mailing list pgsql-bugs

From Bruce Momjian
Subject Re: BUG #6669: unique index w/ multiple columns and NULLs
Date
Msg-id 20120604150552.GB2352@momjian.us
Whole thread Raw
In response to Re: BUG #6669: unique index w/ multiple columns and NULLs  (jo <jose.soares@sferacarta.com>)
Responses Re: BUG #6669: unique index w/ multiple columns and NULLs
List pgsql-bugs
On Fri, Jun 01, 2012 at 08:58:32AM +0200, jo wrote:
> Hi Tom,
>
> Thanks for the explanation about standard sql.
> The goodness of it must be accepted by faith. :-)
> I still have a doubt about the result of the GROUP BY clause.
> It seems to me that there's an inconsistence between the GROUP BY
> clause and the unique index.
> The GROUP BY clause, consider NULLs as known and equal values
> while the index unique constraint consider NULLs as unknown values
> and not equals between them.
> Don't you think, there's an inconsistence here?

Yes, I can see your point.  I think GROUP BY is doing the best it can
with the NULL;  having it consider them as different would lead to long
output.  Also consider that COUNT(*) counts nulls, while COUNT(col) does
not:

    WITH null_test (col) AS
    (
       SELECT 8
       UNION ALL
       SELECT NULL
    )
    SELECT COUNT(*) FROM null_test
    UNION ALL
    SELECT COUNT(col) FROM null_test;

     count
    -------
         2
         1
    (2 rows)

COUNT(*) can't skip nulls because there is no specified column, but why
does COUNT(col) skip nulls --- again, inconsistent.

I think NULL is helpful for unknown values, and required as the output
of missing INSERT columns and unjoined outer join columns.  I think the
aggregates then did the best they could.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +

pgsql-bugs by date:

Previous
From:
Date:
Subject: Re: Calling xlst_process with certain arguments causes server crash
Next
From: "Kevin Grittner"
Date:
Subject: Re: BUG #6669: unique index w/ multiple columns and NULLs