diff options
author | David Rowley <drowley@postgresql.org> | 2023-01-09 17:15:08 +1300 |
---|---|---|
committer | David Rowley <drowley@postgresql.org> | 2023-01-09 17:15:08 +1300 |
commit | 3c569049b7b502bb4952483d19ce622ff0af5fd6 (patch) | |
tree | 7ce433043ae025e93ed62e5a763d1ed01942f0c4 /src/backend/utils/adt/selfuncs.c | |
parent | 216a784829c2c5f03ab0c43e009126cbb819e9b2 (diff) | |
download | postgresql-3c569049b7b502bb4952483d19ce622ff0af5fd6.tar.gz postgresql-3c569049b7b502bb4952483d19ce622ff0af5fd6.zip |
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/backend/utils/adt/selfuncs.c')
-rw-r--r-- | src/backend/utils/adt/selfuncs.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c index f50e58adbd6..57de51f0db2 100644 --- a/src/backend/utils/adt/selfuncs.c +++ b/src/backend/utils/adt/selfuncs.c @@ -5994,6 +5994,10 @@ get_actual_variable_range(PlannerInfo *root, VariableStatData *vardata, rte = root->simple_rte_array[rel->relid]; Assert(rte->rtekind == RTE_RELATION); + /* ignore partitioned tables. Any indexes here are not real indexes */ + if (rte->relkind == RELKIND_PARTITIONED_TABLE) + return false; + /* Search through the indexes to see if any match our problem */ foreach(lc, rel->indexlist) { |