Thread: pgsql: Consider only relations part of partition trees in partitionfun

pgsql: Consider only relations part of partition trees in partitionfun

From
Michael Paquier
Date:
Consider only relations part of partition trees in partition functions

This changes the partition functions so as tables and indexes which are
not part of partition trees are handled the same way as what is done for
undefined objects and unsupported relkinds: pg_partition_tree() returns
no rows and pg_partition_root() returns a NULL result.  Hence,
partitioned tables, partitioned indexes and relations whose flag
pg_class.relispartition is set are considered as valid objects to
process.

Previously, tables and indexes not included in a partition tree were
processed the same way as a partition or a partitioned table, which
caused the functions to return inconsistent results for inherited
tables, especially when inheriting from multiple tables.

Reported-by: Álvaro Herrera
Author: Amit Langote, Michael Paquier
Reviewed-by: Tom Lane
Discussion: https://postgr.es/m/20190228193203.GA26151@alvherre.pgsql

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/3422955735d9b2623532c60c53cb885c9cb6e3b1

Modified Files
--------------
src/backend/utils/adt/partitionfuncs.c       | 13 ++------
src/test/regress/expected/partition_info.out | 48 +++++++++++++++++++++-------
src/test/regress/sql/partition_info.sql      | 17 ++++++++--
3 files changed, 55 insertions(+), 23 deletions(-)