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) =

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,

So it's not really to do with this patch; it's just something I
noticed while testing.


Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:

Reply via email to