diff options
| author | David Rowley | 2023-01-09 04:15:08 +0000 |
|---|---|---|
| committer | David Rowley | 2023-01-09 04:15:08 +0000 |
| commit | 3c569049b7b502bb4952483d19ce622ff0af5fd6 (patch) | |
| tree | 7ce433043ae025e93ed62e5a763d1ed01942f0c4 /src/include | |
| parent | 216a784829c2c5f03ab0c43e009126cbb819e9b2 (diff) | |
Allow left join removals and unique joins on partitioned tables
This allows left join removals and unique joins to work with partitioned
tables. The planner just lacked sufficient proofs that a given join
would not cause any row duplication. Unique indexes currently serve as
that proof, so have get_relation_info() populate the indexlist for
partitioned tables too.
Author: Arne Roland
Reviewed-by: Alvaro Herrera, Zhihong Yu, Amit Langote, David Rowley
Discussion: https://postgr.es/m/c3b2408b7a39433b8230bbcd02e9f302@index.de
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/nodes/pathnodes.h | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/include/nodes/pathnodes.h b/src/include/nodes/pathnodes.h index 1827e50647..c20b7298a3 100644 --- a/src/include/nodes/pathnodes.h +++ b/src/include/nodes/pathnodes.h @@ -653,7 +653,7 @@ typedef struct PartitionSchemeData *PartitionScheme; * lateral_referencers - relids of rels that reference this one laterally * (includes both direct and indirect lateral references) * indexlist - list of IndexOptInfo nodes for relation's indexes - * (always NIL if it's not a table) + * (always NIL if it's not a table or partitioned table) * pages - number of disk pages in relation (zero if not a table) * tuples - number of tuples in relation (not considering restrictions) * allvisfrac - fraction of disk pages that are marked all-visible @@ -1097,11 +1097,11 @@ struct IndexOptInfo Oid *opfamily pg_node_attr(array_size(nkeycolumns)); /* OIDs of opclass declared input data types */ Oid *opcintype pg_node_attr(array_size(nkeycolumns)); - /* OIDs of btree opfamilies, if orderable */ + /* OIDs of btree opfamilies, if orderable. NULL if partitioned index */ Oid *sortopfamily pg_node_attr(array_size(nkeycolumns)); - /* is sort order descending? */ + /* is sort order descending? or NULL if partitioned index */ bool *reverse_sort pg_node_attr(array_size(nkeycolumns)); - /* do NULLs come first in the sort order? */ + /* do NULLs come first in the sort order? or NULL if partitioned index */ bool *nulls_first pg_node_attr(array_size(nkeycolumns)); /* opclass-specific options for columns */ bytea **opclassoptions pg_node_attr(read_write_ignore); @@ -1139,7 +1139,7 @@ struct IndexOptInfo /* * Remaining fields are copied from the index AM's API struct - * (IndexAmRoutine). + * (IndexAmRoutine). These fields are not set for partitioned indexes. */ bool amcanorderbyop; bool amoptionalkey; |
