Since commite28cf96e9, the copies of a query level's PlaceHolderVars that were pushed down into its subqueries are preprocessed by that level before its SubLinks are turned into SubPlans, so such a copy may already contain SubPlans by the time the subquery is planned. That commit taught build_subplan not to process the SubLinks of a PHV that is passed down as a SubPlan argument, but overlooked that such a copy can also appear within the arguments of an outer-level Aggref, GroupingFunc, or ReturningExpr. The SubLinks in those arguments are still processed when build_subplan collects the node, and that processing descended into the already-preprocessed PHV and tripped the no-SubPlan assertion in process_sublinks_mutator. To fix, don't descend into PHVs when processing the SubLinks in such a node's arguments. Any PHV found there is a pushed-down copy that its owning level has already preprocessed. Back-patch to v16, as with commite28cf96e9. Author: Ayush Tiwari <ayushtiwari.slg01@gmail.com> Reviewed-by: Richard Guo <guofenglinux@gmail.com> Discussion: https://postgr.es/m/CAJTYsWW8THbrnsmYnDqnUgg0PjGrqw2vNOWb8qx7eu191KPW3g@mail.gmail.com Backpatch-through: 16
PostgreSQL Database Management System
This directory contains the source code distribution of the PostgreSQL database management system.
PostgreSQL is an advanced object-relational database management system that supports an extended subset of the SQL standard, including transactions, foreign keys, subqueries, triggers, user-defined types and functions. This distribution also contains C language bindings.
Copyright and license information can be found in the file COPYRIGHT.
General documentation about this version of PostgreSQL can be found at https://www.postgresql.org/docs/devel/. In particular, information about building PostgreSQL from the source code can be found at https://www.postgresql.org/docs/devel/installation.html.
The latest version of this software, and related software, may be obtained at https://www.postgresql.org/download/. For more information look at our web site located at https://www.postgresql.org/.