pgsql: Allow partitionwise joins in more cases.

Поиск
Список
Период
Сортировка
От Etsuro Fujita
Тема pgsql: Allow partitionwise joins in more cases.
Дата
Msg-id E1jLzUb-0002vp-Mt@gemulon.postgresql.org
обсуждение исходный текст
Ответы Re: pgsql: Allow partitionwise joins in more cases.  (Jeff Davis <pgsql@j-davis.com>)
Список pgsql-committers
Allow partitionwise joins in more cases.

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

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/c8434d64ce03c32e0029417a82ae937f2055268f

Modified Files
--------------
doc/src/sgml/config.sgml                     |    6 +-
src/backend/nodes/outfuncs.c                 |    2 +
src/backend/optimizer/README                 |   27 +
src/backend/optimizer/path/joinrels.c        |  263 ++-
src/backend/optimizer/util/inherit.c         |    2 +
src/backend/optimizer/util/relnode.c         |   45 +-
src/backend/partitioning/partbounds.c        | 1865 ++++++++++++++++++
src/include/nodes/pathnodes.h                |    9 +-
src/include/partitioning/partbounds.h        |    9 +
src/test/regress/expected/partition_join.out | 2608 +++++++++++++++++++++++++-
src/test/regress/sql/partition_join.sql      |  639 ++++++-
11 files changed, 5392 insertions(+), 83 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Fix circle_in to accept "(x,y),r" as it's advertised to do.
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Allow partitionwise join to handle nested FULL JOIN USING cases.