Re: On partitioning
Andres Freund <andres@2ndquadrant.com>
From: Andres Freund <andres@2ndquadrant.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Greg Stark <stark@mit.edu>, Alvaro Herrera <alvherre@2ndquadrant.com>,
Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2014-09-01T16:09:27Z
Lists: pgsql-hackers
On 2014-09-01 11:59:37 -0400, Tom Lane wrote: > Greg Stark <stark@mit.edu> writes: > > On Sun, Aug 31, 2014 at 9:03 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > >> Aside from costing planning time, most likely that would forever prevent > >> us from pushing some types of intelligence about partitioning into the > >> executor. > > > How would it affect this calculus if there were partitioned indexes > > which were created on the overall table and guaranteed to exist on > > each partition that the planner could use -- and then possibly also > > per-partition indexes that might exist in addition to those? > > That doesn't actually fix the planning-time issue at all. Either the > planner considers each partition individually to create a custom plan > for it, or it doesn't. We could have a information about the indexing situation in child partitions on the toplevel table. I.e. note whether child partitions have individual indexes. And possibly constraints. > The "push into executor" idea I was alluding to is that we might invent > plan constructs like a ModifyTable node that applies to a whole > inheritance^H^H^Hpartitioning tree and leaves the tuple routing to be > done at runtime. You're not going to get a plan structure like that > if the planner is building a separate plan subtree for each partition. It doesn't sound impossible to evaluate at plan time whether to use nodes covering several partitions or use a separate subplan for individual partitions. We're going to need information which partitions to scan in those nodes anyway. Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services