On Wed, Dec 3, 2014 at 10:56 AM, Andres Freund <and...@2ndquadrant.com> wrote: > On 2014-12-03 10:51:19 -0500, Robert Haas wrote: >> On Wed, Dec 3, 2014 at 4:29 AM, David Rowley <dgrowle...@gmail.com> wrote: >> > *** Method 1: Removing Inner Joins at planning time: >> > >> > *** Method 2: Marking scans as possibly skippable during planning, and >> > skipping joins at execution (Andres' method) >> > >> > *** Method 3: Marking scans as possibly skippable during planning and >> > removing redundant join nodes at executor startup (Simon's method) >> [....] >> > a. can we invoke the planner during executor init? >> >> I'm pretty sure that we can't safely invoke the planner during >> executor startup, and that doing surgery on the plan tree (option #3) >> is unsafe also. I'm pretty clear why the latter is unsafe: it might >> be a copy of a data structure that's going to be reused. > > We already have a transformation between the plan and execution > tree.
We do? I think what we have is a plan tree, which is potentially stored in a plan cache someplace and thus must be read-only, and a planstate tree, which contains the stuff that is for this specific execution. There's probably some freedom to do exciting things in the planstate nodes, but I don't think you can tinker with the plan itself. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers