On Thu, May 4, 2023 at 4:07 PM Richard Guo <guofengli...@gmail.com> wrote:
> 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]. > BTW, I just noticed that the introduction of join_info_array can also benefit make_outerjoininfo(), check_redundant_nullability_qual() and get_join_domain_min_rels(). So update the patch to do the changes. I'd like to devise a test query that shows performance gain from this patch, but I'm not sure how to do that. May need help here. Any thoughts on this patch? Thanks Richard
v2-0001-Allow-direct-lookups-of-SpecialJoinInfo-by-ojrelid.patch
Description: Binary data