Re: [HACKERS] path toward faster partition pruning

Amit Langote <langote_amit_f8@lab.ntt.co.jp>

From: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
To: Rajkumar Raghuwanshi <rajkumar.raghuwanshi@enterprisedb.com>
Cc: David Rowley <david.rowley@2ndquadrant.com>, Robert Haas <robertmhaas@gmail.com>, Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>, Jesper Pedersen <jesper.pedersen@redhat.com>, 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-02-20T08:21:22Z
Lists: pgsql-hackers

Attachments

Thanks Rajkumar for the test.

On 2018/02/20 16:56, Rajkumar Raghuwanshi wrote:
> I have applied v29 patch-set on head and  got "ERROR:  operator 1209 is not
> a member of opfamily 1994" with below test case. Please take a look.
> 
> CREATE TABLE part (c1 INT4, c2 TEXT, c3 INT4) PARTITION BY LIST (c2);
> CREATE TABLE part_p1 PARTITION OF part FOR VALUES IN('ABC');
> CREATE TABLE part_p2 PARTITION OF part FOR VALUES IN('DEF');
> CREATE TABLE part_p3 PARTITION OF part FOR VALUES IN('GHI');
> CREATE TABLE part_p4 PARTITION OF part FOR VALUES IN('JKL');
> 
> INSERT INTO part VALUES (100,'ABC',10);
> INSERT INTO part VALUES (110,'DEF',20);
> INSERT INTO part VALUES (120,'GHI',10);
> INSERT INTO part VALUES (130,'JKL',100);
> 
> explain (costs off) SELECT * FROM part WHERE c2 LIKE '%ABC%';
> *ERROR:  operator 1209 is not a member of opfamily 1994*

An oversight in the v28 patch seems to have caused this.  Fixed in the
attached.

Thanks,
Amit

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.