aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/transam/xlog.c
diff options
context:
space:
mode:
authorDavid Rowley <drowley@postgresql.org>2023-06-19 13:00:42 +1200
committerDavid Rowley <drowley@postgresql.org>2023-06-19 13:00:42 +1200
commit7fcd7ef2a9c372b789f95b40043edffdc611c566 (patch)
treee69ff98cb764a3c9b138cefc57414f4ebf15c5ca /src/backend/access/transam/xlog.c
parenta14e75eb0b6a73821e0d66c0d407372ec8376105 (diff)
downloadpostgresql-7fcd7ef2a9c372b789f95b40043edffdc611c566.tar.gz
postgresql-7fcd7ef2a9c372b789f95b40043edffdc611c566.zip
Don't use partial unique indexes for unique proofs in the planner
Here we adjust relation_has_unique_index_for() so that it no longer makes use of partial unique indexes as uniqueness proofs. It is incorrect to use these as the predicates used by check_index_predicates() to set predOK makes use of not only baserestrictinfo quals as proofs, but also qual from join conditions. For relation_has_unique_index_for()'s case, we need to know the relation is unique for a given set of columns before any joins are evaluated, so if predOK was only set to true due to some join qual, then it's unsafe to use such indexes in relation_has_unique_index_for(). The final plan may not even make use of that index, which could result in reading tuples that are not as unique as the planner previously expected them to be. Bug: #17975 Reported-by: Tor Erik Linnerud Backpatch-through: 11, all supported versions Discussion: https://postgr.es/m/17975-98a90c156f25c952%40postgresql.org
Diffstat (limited to 'src/backend/access/transam/xlog.c')
0 files changed, 0 insertions, 0 deletions