I can't find any good documentation of this in the source tree
anywhere. placeholder.c just says:
* PlaceHolderVar and PlaceHolderInfo manipulation routines
and placeholder.h says:
* prototypes for optimizer/util/placeholder.c.
...which is less than informative. The commit message that introduced
them has a few details:
Add a concept of "placeholder" variables to the planner. These
are variables that represent some expression that we desire to compute below the top level of the plan, and then
letthat value "bubble up" as though it were a plain Var (ie, a column value).
...but I'm still having a hard time wrapping my head around it.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company