When working on the improper qual pushdown issue [1], there is a need in the proposed fix to avoid scanning all the SpecialJoinInfos, since that is too expensive. I think this might be a common requirement. In the current codes there are several places where we need to scan all the SpecialJoinInfos in join_info_list looking for SpecialJoinInfos that belong to a given outer join relid set, which is an O(n) operation. So start a new thread for this requirement.
To improve the O(n) operation, introduce join_info_array to allow direct lookups of SpecialJoinInfo by ojrelid. This is doable because for each non-zero ojrelid there can only be one SpecialJoinInfo. This can benefit clause_is_computable_at() and have_unsafe_outer_join_ref(), as the patch does, and more future usages such as add_outer_joins_to_relids() in the proposed patch for issue [1]. [1] https://www.postgresql.org/message-id/flat/0b819232-4b50-f245-1c7d-c8c61bf41827%40postgrespro.ru Thanks Richard
v1-0001-Allow-direct-lookups-of-SpecialJoinInfo-by-ojrelid.patch
Description: Binary data