mirror of
https://github.com/postgres/postgres.git
synced 2025-06-16 06:01:02 +03:00
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
This commit is contained in:
@ -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)
|
||||
{
|
||||
|
Reference in New Issue
Block a user