Re: [HACKERS] path toward faster partition pruning

Jesper Pedersen <jesper.pedersen@redhat.com>

From: Jesper Pedersen <jesper.pedersen@redhat.com>
To: David Rowley <david.rowley@2ndquadrant.com>, Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>, Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Robert Haas <robertmhaas@gmail.com>, Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>, Rajkumar Raghuwanshi <rajkumar.raghuwanshi@enterprisedb.com>, Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>, Amit Langote <amitlangote09@gmail.com>, Dilip Kumar <dilipbalaut@gmail.com>, Beena Emerson <memissemerson@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2018-04-04T15:45:56Z
Lists: pgsql-hackers

Attachments

Hi,

On 04/04/2018 09:29 AM, David Rowley wrote:
> Thanks for updating. I've made a pass over v49 and I didn't find very
> much wrong with it.
> 
> The only real bug I found was a missing IsA(rinfo->clause, Const) in
> the pseudoconstant check inside
> generate_partition_pruning_steps_internal.
> 
> Most of the changes are comment fixes with a few stylistic changes
> thrown which are pretty much all there just to try to shrink the code
> a line or two or reduce indentation.
> 
> I feel pretty familiar with this code now and assuming the attached is
> included I'm happy for someone else, hopefully, a committer to take a
> look at it.
> 
> I'll leave the following notes:
> 
> 1. Still not sure about RelOptInfo->has_default_part. This flag is
> only looked at in generate_partition_pruning_steps. The RelOptInfo and
> the boundinfo is available to look at, it's just that the
> partition_bound_has_default macro is defined in partition.c rather
> than partition.h.
> 
> 2. Don't really like the new isopne variable name. It's not very
> simple to decode, perhaps something like is_not_eq is better?
> 
> 3. The part of the code I'm least familiar with is
> get_steps_using_prefix_recurse(). I admit to not having had time to
> fully understand that and consider ways to break it.
> 
> Marking as ready for committer.
> 

Passes check-world, and CommitFest app has been updated to reflect the 
current patch set. Trivial changes attached.

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.