mirror of
https://github.com/postgres/postgres.git
synced 2025-12-19 17:02:53 +03:00
Fix misuse of RelOptInfo.unique_for_rels cache by SJE
When SJE uses RelOptInfo.unique_for_rels cache, it passes filtered quals to innerrel_is_unique_ext(). That might lead to an invalid match to cache entries made by previous non self-join checking calls. Add UniqueRelInfo.self_join flag to prevent such cases. Also, fix that SJE should require a strict match of outerrelids to make sure UniqueRelInfo.extra_clauses are valid. Reported-by: Alexander Lakhin Discussion: https://postgr.es/m/4788f781-31bd-9796-d7d6-588a751c8787%40gmail.com
This commit is contained in:
@@ -3407,6 +3407,12 @@ typedef struct UniqueRelInfo
|
||||
*/
|
||||
Relids outerrelids;
|
||||
|
||||
/*
|
||||
* The relation in consideration is unique when considering only clauses
|
||||
* suitable for self-join (passed split_selfjoin_quals()).
|
||||
*/
|
||||
bool self_join;
|
||||
|
||||
/*
|
||||
* Additional clauses from a baserestrictinfo list that were used to prove
|
||||
* the uniqueness. We cache it for the self-join checking procedure: a
|
||||
|
||||
Reference in New Issue
Block a user