• Etsuro Fujita's avatar
    Allow partitionwise joins in more cases. · c8434d64
    Etsuro Fujita authored
    Previously, the partitionwise join technique only allowed partitionwise
    join when input partitioned tables had exactly the same partition
    bounds.  This commit extends the technique to some cases when the tables
    have different partition bounds, by using an advanced partition-matching
    algorithm introduced by this commit.  For both the input partitioned
    tables, the algorithm checks whether every partition of one input
    partitioned table only matches one partition of the other input
    partitioned table at most, and vice versa.  In such a case the join
    between the tables can be broken down into joins between the matching
    partitions, so the algorithm produces the pairs of the matching
    partitions, plus the partition bounds for the join relation, to allow
    partitionwise join for computing the join.  Currently, the algorithm
    works for list-partitioned and range-partitioned tables, but not
    hash-partitioned tables.  See comments in partition_bounds_merge().
    
    Ashutosh Bapat and Etsuro Fujita, most of regression tests by Rajkumar
    Raghuwanshi, some of the tests by Mark Dilger and Amul Sul, reviewed by
    Dmitry Dolgov and Amul Sul, with additional review at various points by
    Ashutosh Bapat, Mark Dilger, Robert Haas, Antonin Houska, Amit Langote,
    Justin Pryzby, and Tomas Vondra
    
    Discussion: https://postgr.es/m/CAFjFpRdjQvaUEV5DJX3TW6pU5eq54NCkadtxHX2JiJG_GvbrCA@mail.gmail.com
    c8434d64
outfuncs.c 103 KB