Clarify note about DISTINCT and ORDER BY in aggregates

Started by Vik Fearingover 3 years ago2 messagesdocs
Jump to latest
#1Vik Fearing
vik@postgresfriends.org

The current docs can be read as using DISTINCT in an aggregate
(count(distinct col)) and ORDER BY (array_agg(col ORDER BY col)) are
both extensions to the standard.

The actual truth is that our extension to the standard is to allow both
at the same time.

Attached is a trivial patch to make that more clear. I don't know if
pgindent works on the docs so I made this so as to show what is
changing. I can submit a properly formatted patch, or let the eventual
committer make that change if necessary.
--
Vik Fearing

Attachments:

clarify-aggregate-distinct-orderby.difftext/x-patch; charset=UTF-8; name=clarify-aggregate-distinct-orderby.diffDownload+1-0
#2David G. Johnston
david.g.johnston@gmail.com
In reply to: Vik Fearing (#1)
Re: Clarify note about DISTINCT and ORDER BY in aggregates

On Thu, Dec 8, 2022 at 5:31 AM Vik Fearing <vik@postgresfriends.org> wrote:

The current docs can be read as using DISTINCT in an aggregate
(count(distinct col)) and ORDER BY (array_agg(col ORDER BY col)) are
both extensions to the standard.

The actual truth is that our extension to the standard is to allow both
at the same time.

Attached is a trivial patch to make that more clear. I don't know if
pgindent works on the docs so I made this so as to show what is
changing. I can submit a properly formatted patch, or let the eventual
committer make that change if necessary.

From the other thread this still is off compared to reality, which you
described as:

"The SQL Standard defines whether DISTINCT or ORDER BY are accepted on a
per-aggregate basis. It is a PostgreSQL extension that any aggregate can
specify these clauses."

The fact that no SQL Standard aggregate happens to specify both DISTINCT
and ORDER BY at the same time is a detail we don't need to cover. We
aren't documenting the per-aggregate variances.

David J.