Re: [HACKERS] path toward faster partition pruning

Alvaro Herrera <alvherre@alvh.no-ip.org>

From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
Cc: David Rowley <david.rowley@2ndquadrant.com>, Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>, Rajkumar Raghuwanshi <rajkumar.raghuwanshi@enterprisedb.com>, Robert Haas <robertmhaas@gmail.com>, Dilip Kumar <dilipbalaut@gmail.com>, Beena Emerson <memissemerson@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>, Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
Date: 2017-12-29T13:02:13Z
Lists: pgsql-hackers
I happened to notice that Ashutosh's patch series at
https://www.postgresql.org/message-id/CAFjFpReJhFSoy6DqH0ipFSHd=sLNEkSzAtz4VWCaS-w2jZL=uw@mail.gmail.com
has a 0001 patch that modifies the partition_bound_cmp stuff too.
Are those conflicting?

Ashutosh's commit message:
	Modify bound comparision functions to accept members of PartitionKey

	Functions partition_bound_cmp(), partition_rbound_cmp() and
	partition_rbound_datum_cmp() are required to merge partition bounds
	from joining relations. While doing so, we do not have access to the
	PartitionKey of either relations. So, modify these functions to accept
	only required members of PartitionKey so that the functions can be
	reused for merging bounds.

Amit's:
	Some interface changes for partition_bound_{cmp/bsearch}

	Introduces a notion of PartitionBoundCmpArg, which replaces the set
	of arguments void *probe and bool probe_is_bound of both
	partition_bound_cmp and partition_bound_bsearch.  It wasn't possible
	before to specify the number of datums when a non-bound type of
	probe is passed.  Slightly tweaking the existing interface to allow
	specifying the same seems awkward.  So, instead encapsulate that
	into PartitionBoundCmpArg.  Also, modify partition_rbound_datum_cmp
	to compare caller-specifed number of datums, instead of
	key->partnatts datums.


-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


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.