Re: Contradictory behavior of array_agg(distinct) aggregate. - Mailing list pgsql-hackers

From Konstantin Knizhnik
Subject Re: Contradictory behavior of array_agg(distinct) aggregate.
Date
Msg-id 048e476f-db33-4dd4-85e1-62b9cabed906@garret.ru
Whole thread Raw
In response to Re: Contradictory behavior of array_agg(distinct) aggregate.  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Contradictory behavior of array_agg(distinct) aggregate.
List pgsql-hackers
On 04/12/2024 9:03 am, Tom Lane wrote:
> Konstantin Knizhnik <knizhnik@garret.ru> writes:
>> postgres=# create table t(x integer unique);
>> CREATE TABLE
>> postgres=# insert into t values (null),(null);
>> INSERT 0 2
>> postgres=# select count(distinct x) from t;
>>    count
>> -------
>>        0
>> (1 row)
>> postgres=# select array_agg(distinct x) from t;
>>    array_agg
>> -----------
>>    {NULL}
>> (1 row)
>> postgres=# select array_agg(x) from t;
>>     array_agg
>> -------------
>>    {NULL,NULL}
>> (1 row)
> I see nothing contradictory here.  "array_agg(distinct x)"
> combines the two NULLs into one, which is the normal
> behavior of DISTINCT.


Sorry.
It is actually inconsistency in basic SQL model in interpretation of 
NULL by UNIQUE and DISTINCT, and array_agg just follows this rule.




pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Contradictory behavior of array_agg(distinct) aggregate.
Next
From: "David G. Johnston"
Date:
Subject: Re: Contradictory behavior of array_agg(distinct) aggregate.