On 2017/10/27 13:57, Robert Haas wrote: > On Fri, Oct 27, 2017 at 3:17 AM, Amit Langote > <langote_amit...@lab.ntt.co.jp> wrote: >>> I don't think we really want to get into theorem-proving here, because >>> it's slow. >> >> Just to be clear, I'm saying we could use theorem-proving (if at all) just >> for the default partition. > > I don't really see why it should be needed there either. We've got > all the bounds in order, so we should know where there are any gaps > that are covered by the default partition in the range we care about.
Sorry, I forgot to add: "...just for the default partition, for cases like the one in Beena's example." In normal cases, default partition selection doesn't require any theorem-proving. It proceeds in a straightforward manner more or less like what you said it should. After thinking more on it, I think there is a rather straightforward trick to implement the idea you mentioned to get this working for the case presented in Beena's example, which works as follows: For any non-root partitioned tables, we add the list of its partition constraint clauses to the query-provided list of clauses and use the whole list to drive the partition-pruning algorithm. So, when partition-pruning runs for tprt_1, along with (< 10000) which the original query provides, we also have (>= 1) which comes from the partition constraint of tprt_1 (which is >= 1 and < 50000). Note that there exists a trick in the new code for the (< 50000) coming from the constraint to be overridden by the more restrictive (< 10000) coming from the original query. Thanks, Amit -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers