Re: path toward faster partition pruning

Jesper Pedersen <jesper.pedersen@redhat.com>

From: Jesper Pedersen <jesper.pedersen@redhat.com>
To: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
Cc: David Rowley <david.rowley@2ndquadrant.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2017-09-26T13:00:47Z
Lists: pgsql-hackers
Hi Amit,

On 09/15/2017 04:50 AM, Amit Langote wrote:
> On 2017/09/15 11:16, Amit Langote wrote:
>> I will post rebased patches later today, although I think the overall
>> design of the patch on the planner side of things is not quite there yet.
>> Of course, your and others' feedback is greatly welcome.
> 
> Rebased patches attached.  Because Dilip complained earlier today about
> clauses of the form (const op var) not causing partition-pruning, I've
> added code to commute the clause where it is required.  Some other
> previously mentioned limitations remain -- no handling of OR clauses, no
> elimination of redundant clauses for given partitioning column, etc.
> 
> A note about 0001: this patch overlaps with
> 0003-Canonical-partition-scheme.patch from the partitionwise-join patch
> series that Ashutosh Bapat posted yesterday [1].  Because I implemented
> the planner-portion of this patch based on what 0001 builds, I'm posting
> it here.  It might actually turn out that we will review and commit
> 0003-Canonical-partition-scheme.patch on that thread, but meanwhile apply
> 0001 if you want to play with the later patches.  I would certainly like
> to review  0003-Canonical-partition-scheme.patch myself, but won't be able
> to immediately (see below).
> 

Could you share your thoughts on the usage of PartitionAppendInfo's 
min_datum_idx / max_datum_idx ? Especially in relation to hash partitions.

I'm looking at get_partitions_for_keys.

Best regards,
  Jesper


Commits

  1. Fix assorted partition pruning bugs

  2. Make gen_partprune_steps static

  3. Remove useless 'default' clause

  4. Reorganize partitioning code

  5. Use custom hash opclass for hash partition pruning

  6. Blindly attempt to fix sepgsql tests broken due to 9fdb675fc5.

  7. Attempt to fix endianess issues in new hash partition test.

  8. Faster partition pruning

  9. For partitionwise join, match on partcollation, not parttypcoll.

  10. Revise API for partition bound search functions.

  11. Revise API for partition_rbound_cmp/partition_rbound_datum_cmp.

  12. Fix possible crash in partition-wise join.

  13. Refactor code for partition bound searching

  14. New C function: bms_add_range

  15. Add extensive tests for partition pruning.

  16. Add null test to partition constraint for default range partitions.

  17. Remove BufFile's isTemp flag.

  18. Make OWNER TO subcommand mention consistent

  19. Fix index matching for operators with mixed collatable/noncollatable inputs.