Fix failure to detect some cases of improperly-nested aggregates.
authorTom Lane <[email protected]>
Mon, 13 Mar 2023 16:40:28 +0000 (12:40 -0400)
committerTom Lane <[email protected]>
Mon, 13 Mar 2023 16:40:28 +0000 (12:40 -0400)
commit096e708056ead615f82a851d0825d9d6b40f7c96
treebfdf5c37f2718e004bf4bad3959fd2f970a7b173
parent7e319231c6bba7bad4a71a47ed0aefadf71e1103
Fix failure to detect some cases of improperly-nested aggregates.

check_agg_arguments_walker() supposed that it needn't descend into
the arguments of a lower-level aggregate function, but this is
just wrong in the presence of multiple levels of sub-select.  The
oversight would lead to executor failures on queries that should
be rejected.  (Prior to v11, they actually were rejected, thanks
to a "redundant" execution-time check.)

Per bug #17835 from Anban Company.  Back-patch to all supported
branches.

Discussion: https://postgr.es/m/17835-4f29f3098b2d0ba4@postgresql.org
src/backend/parser/parse_agg.c
src/test/regress/expected/aggregates.out
src/test/regress/sql/aggregates.sql