Allow left join removals and unique joins on partitioned tables
authorDavid Rowley <drowley@postgresql.org>
Mon, 9 Jan 2023 04:15:08 +0000 (17:15 +1300)
committerDavid Rowley <drowley@postgresql.org>
Mon, 9 Jan 2023 04:15:08 +0000 (17:15 +1300)
commit3c569049b7b502bb4952483d19ce622ff0af5fd6
tree7ce433043ae025e93ed62e5a763d1ed01942f0c4
parent216a784829c2c5f03ab0c43e009126cbb819e9b2
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
src/backend/optimizer/util/plancat.c
src/backend/utils/adt/selfuncs.c
src/include/nodes/pathnodes.h
src/test/regress/expected/join.out
src/test/regress/expected/partition_join.out
src/test/regress/sql/join.sql
src/test/regress/sql/partition_join.sql