diff options
Diffstat (limited to 'src/backend/optimizer/path/joinpath.c')
-rw-r--r-- | src/backend/optimizer/path/joinpath.c | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c index 5ba266fdb6c..c2f211a60d1 100644 --- a/src/backend/optimizer/path/joinpath.c +++ b/src/backend/optimizer/path/joinpath.c @@ -430,24 +430,6 @@ have_unsafe_outer_join_ref(PlannerInfo *root, * These are returned in parallel lists in *param_exprs and *operators. * We also set *binary_mode to indicate whether strict binary matching is * required. - * - * A complication is that innerrel's lateral_vars may contain nullingrel - * markers that need adjustment. This occurs if we have applied outer join - * identity 3, - * (A leftjoin B on (Pab)) leftjoin C on (Pb*c) - * = A leftjoin (B leftjoin C on (Pbc)) on (Pab) - * and C contains lateral references to B. It's still safe to apply the - * identity, but the parser will have created those references in the form - * "b*" (i.e., with varnullingrels listing the A/B join), while what we will - * have available from the nestloop's outer side is just "b". We deal with - * that here by stripping the nullingrels down to what is available from the - * outer side according to outerrel->relids. - * That fixes matters for the case of forward application of identity 3. - * If the identity was applied in the reverse direction, we will have - * innerrel's lateral_vars containing too few nullingrel bits rather than - * too many. Currently, that causes no problems because setrefs.c applies - * only a subset check to nullingrels in NestLoopParams, but we'd have to - * work harder if we ever want to tighten that check. */ static bool paraminfo_get_equal_hashops(PlannerInfo *root, ParamPathInfo *param_info, @@ -551,25 +533,6 @@ paraminfo_get_equal_hashops(PlannerInfo *root, ParamPathInfo *param_info, return false; } - /* OK, but adjust its nullingrels before adding it to result */ - expr = copyObject(expr); - if (IsA(expr, Var)) - { - Var *var = (Var *) expr; - - var->varnullingrels = bms_intersect(var->varnullingrels, - outerrel->relids); - } - else if (IsA(expr, PlaceHolderVar)) - { - PlaceHolderVar *phv = (PlaceHolderVar *) expr; - - phv->phnullingrels = bms_intersect(phv->phnullingrels, - outerrel->relids); - } - else - Assert(false); - *operators = lappend_oid(*operators, typentry->eq_opr); *param_exprs = lappend(*param_exprs, expr); |