Re: Strange primary key constraint influence to grouping - Mailing list pgsql-hackers

From Kevin Grittner
Subject Re: Strange primary key constraint influence to grouping
Date
Msg-id 4F1747E5020000250004499B@gw.wicourts.gov
Whole thread Raw
Responses Re: Strange primary key constraint influence to grouping  (Gražvydas Valeika <gvaleika@gmail.com>)
List pgsql-hackers
Gra*vydas Valeika wrote:
>> This is because PostgreSQL 9.1 added the feature of simple
>> checking of functional dependencies for GROUP BY. The manual of
>> 9.1 explains quite well when PostgreSQL considers there to be a
>> functional dependency.
>>
>> "When GROUP BY is present, it is not valid for the SELECT list
>> expressions to refer to ungrouped columns except within aggregate
>> functions or if the ungrouped column is functionally dependent on
>> the grouped columns, since there would otherwise be more than one
>> possible value to return for an ungrouped column. A functional
>> dependency exists if the grouped columns (or a subset thereof) are
>> the primary key of the table containing the ungrouped column."
>>
>> I completely agree with documentation.
>
> But my case shows that "not valid" expression which refers to
> column which is ungrouped still works in 9.1.
It is not an invalid expression in the SELECT list, because it is
functionally dependent on the primary key -- that is, given a
particular primary key, there is only one value the expression can
have.  Because of this, adding the expression to the GROUP BY list
cannot change the set of rows returned by the query.  It is pointless
to include the expression in the GROUP BY clause, so it is not
required.  This allows faster query execution.
This is a new feature, not a bug.
-Kevin


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: age(xid) on hot standby
Next
From: Kohei KaiGai
Date:
Subject: Re: [v9.2] sepgsql's DROP Permission checks