]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix pull_varnos to cope with translated PlaceHolderVars.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 17 Sep 2021 19:41:16 +0000 (15:41 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 17 Sep 2021 19:41:16 +0000 (15:41 -0400)
commitfebe013cad5992ba8994db309cd1b7d85062c6d3
tree39c9abdba69286e1a50af5c8cc31c6509bb09914
parent24c57aa62937d2dc8b5e91c1ec95e0f8966fb0c4
Fix pull_varnos to cope with translated PlaceHolderVars.

Commit 55dc86eca changed pull_varnos to use (if possible) the associated
ph_eval_at for a PlaceHolderVar.  I missed a fine point though: we might
be looking at a PHV in the quals or tlist of a child appendrel, in which
case we need to compute a ph_eval_at value that's been translated in the
same way that the PHV itself has been (cf. adjust_appendrel_attrs).
Fortunately, enough info is available in the PlaceHolderInfo to make
such translation possible without additional outside data, so we don't
need another round of uglification of planner APIs.  This is a little
bit complicated, but since it's a hard-to-hit corner case, I'm not much
worried about adding cycles here.

Per report from Jaime Casanova.  Back-patch to v12, like the previous
commit.

Discussion: https://postgr.es/m/20210915230959.GB17635@ahch-to
src/backend/optimizer/util/var.c
src/test/regress/expected/join.out
src/test/regress/sql/join.sql