On 17 August 2017 at 10:59, Jeevan Ladhe <jeevan.la...@enterprisedb.com> wrote: > Hi, > > On Tue, Aug 15, 2017 at 7:20 PM, Robert Haas <robertmh...@gmail.com> wrote: >> >> On Wed, Jul 26, 2017 at 8:14 AM, Jeevan Ladhe >> <jeevan.la...@enterprisedb.com> wrote: >> > I have rebased the patches on the latest commit. >> >> This needs another rebase. > > > I have rebased the patch and addressed your and Ashutosh comments on last > set of patches. > > The current set of patches contains 6 patches as below: > > 0001: > Refactoring existing ATExecAttachPartition code so that it can be used for > default partitioning as well > > 0002: > This patch teaches the partitioning code to handle the NIL returned by > get_qual_for_list(). > This is needed because a default partition will not have any constraints in > case > it is the only partition of its parent. > > 0003: > Support for default partition with the restriction of preventing addition of > any > new partition after default partition. This is a merge of 0003 and 0004 in > V24 series. > > 0004: > Extend default partitioning support to allow addition of new partitions > after > default partition is created/attached. This patch is a merge of patches > 0005 and 0006 in V24 series to simplify the review process. The > commit message has more details regarding what all is included. > > 0005: > This patch introduces code to check if the scanning of default partition > child > can be skipped if it's constraints are proven. > > 0006: > Documentation. > > > PFA, and let me know in case of any comments.
Thanks. Applies fine, and I've been exercising the patch and it is doing everything it's supposed to do. I am, however, curious to know why the planner can't optimise the following: SELECT * FROM mystuff WHERE mystuff = (1::int,'JP'::text,'blue'::text); This exhaustively checks all partitions, but if I change it to: SELECT * FROM mystuff WHERE (id, country, content) = (1::int,'JP'::text,'blue'::text); It works fine. The former filters like so: ((mystuff_default_1.*)::mystuff = ROW(1, 'JP'::text, 'blue'::text)) Shouldn't it instead do: ((mystuff_default_1.id, mystuff_default_1.country, mystuff_default_1.content)::mystuff = ROW(1, 'JP'::text, 'blue'::text)) So it's not really to do with this patch; it's just something I noticed while testing. Thom -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers