Fix pull_varnos to cope with translated PlaceHolderVars.
Tom Lane <tgl@sss.pgh.pa.us>
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
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/optimizer/util/var.c | modified | +38 −3 |
| src/test/regress/expected/join.out | modified | +28 −0 |
| src/test/regress/sql/join.sql | modified | +16 −0 |
Discussion
- right join with partitioned table crash 4 messages · 2021-09-15 → 2021-09-17