]> granicus.if.org Git - postgresql/commit
Improve handling of pathtargets in planner.c.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 9 Mar 2016 06:12:16 +0000 (01:12 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 9 Mar 2016 06:12:16 +0000 (01:12 -0500)
commit51c0f63e4d76a86b44e87876a6addcfffb01ec28
tree374c1c1c14b31d20b65785c6264a9fad6c1a0c86
parent2f1f4439306d2793492e49366d5911e48aa2c4b1
Improve handling of pathtargets in planner.c.

Refactor so that the internal APIs in planner.c deal in PathTargets not
targetlists, and establish a more regular structure for deriving the
targets needed for successive steps.

There is more that could be done here; calculating the eval costs of each
successive target independently is both inefficient and wrong in detail,
since we won't actually recompute values available from the input node's
tlist.  But it's no worse than what happened before the pathification
rewrite.  In any case this seems like a good starting point for considering
how to handle Konstantin Knizhnik's function-evaluation-postponement patch.
src/backend/optimizer/plan/planner.c
src/backend/optimizer/util/clauses.c
src/backend/optimizer/util/tlist.c
src/include/optimizer/tlist.h