diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/nodes/pathnodes.h | 9 | ||||
-rw-r--r-- | src/include/partitioning/partbounds.h | 9 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/include/nodes/pathnodes.h b/src/include/nodes/pathnodes.h index d76f88001b2..2dbd928d356 100644 --- a/src/include/nodes/pathnodes.h +++ b/src/include/nodes/pathnodes.h @@ -597,8 +597,10 @@ typedef struct PartitionSchemeData *PartitionScheme; * part_scheme - Partitioning scheme of the relation * nparts - Number of partitions * boundinfo - Partition bounds + * partbounds_merged - true if partition bounds are merged ones * partition_qual - Partition constraint if not the root * part_rels - RelOptInfos for each partition + * all_partrels - Relids set of all partition relids * partexprs, nullable_partexprs - Partition key expressions * partitioned_child_rels - RT indexes of unpruned partitions of * this relation that are partitioned tables @@ -735,11 +737,16 @@ typedef struct RelOptInfo /* used for partitioned relations: */ PartitionScheme part_scheme; /* Partitioning scheme */ - int nparts; /* Number of partitions */ + int nparts; /* Number of partitions; -1 if not yet set; + * in case of a join relation 0 means it's + * considered unpartitioned */ struct PartitionBoundInfoData *boundinfo; /* Partition bounds */ + bool partbounds_merged; /* True if partition bounds were created + * by partition_bounds_merge() */ List *partition_qual; /* Partition constraint, if not the root */ struct RelOptInfo **part_rels; /* Array of RelOptInfos of partitions, * stored in the same order as bounds */ + Relids all_partrels; /* Relids set of all partition relids */ List **partexprs; /* Non-nullable partition key expressions */ List **nullable_partexprs; /* Nullable partition key expressions */ List *partitioned_child_rels; /* List of RT indexes */ diff --git a/src/include/partitioning/partbounds.h b/src/include/partitioning/partbounds.h index be940b51927..dfc720720b9 100644 --- a/src/include/partitioning/partbounds.h +++ b/src/include/partitioning/partbounds.h @@ -16,6 +16,7 @@ #include "nodes/pg_list.h" #include "partitioning/partdefs.h" #include "utils/relcache.h" +struct RelOptInfo; /* avoid including pathnodes.h here */ /* @@ -87,6 +88,14 @@ extern bool partition_bounds_equal(int partnatts, int16 *parttyplen, PartitionBoundInfo b2); extern PartitionBoundInfo partition_bounds_copy(PartitionBoundInfo src, PartitionKey key); +extern PartitionBoundInfo partition_bounds_merge(int partnatts, + FmgrInfo *partsupfunc, + Oid *partcollation, + struct RelOptInfo *outer_rel, + struct RelOptInfo *inner_rel, + JoinType jointype, + List **outer_parts, + List **inner_parts); extern bool partitions_are_ordered(PartitionBoundInfo boundinfo, int nparts); extern void check_new_partition_bound(char *relname, Relation parent, PartitionBoundSpec *spec); |