From 30dbdbe75384bcb034172c781b24bc982434a967 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 13 Mar 2023 12:40:28 -0400 Subject: 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/test/regress/expected/aggregates.out | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/test/regress/expected/aggregates.out') diff --git a/src/test/regress/expected/aggregates.out b/src/test/regress/expected/aggregates.out index e074cb71bf6..f0517f95b60 100644 --- a/src/test/regress/expected/aggregates.out +++ b/src/test/regress/expected/aggregates.out @@ -1282,6 +1282,12 @@ select (select max(min(unique1)) from int8_tbl) from tenk1; ERROR: aggregate function calls cannot be nested LINE 1: select (select max(min(unique1)) from int8_tbl) from tenk1; ^ +select avg((select avg(a1.col1 order by (select avg(a2.col2) from tenk1 a3)) + from tenk1 a1(col1))) +from tenk1 a2(col2); +ERROR: aggregate function calls cannot be nested +LINE 1: select avg((select avg(a1.col1 order by (select avg(a2.col2)... + ^ -- -- Test removal of redundant GROUP BY columns -- -- cgit v1.2.3