Compare varnullingrels too in assign_param_for_var().
authorTom Lane
Fri, 26 Jan 2024 20:54:17 +0000 (15:54 -0500)
committerTom Lane
Fri, 26 Jan 2024 20:54:17 +0000 (15:54 -0500)
Oversight in 2489d76c4.  Preliminary analysis suggests that the
problem may be unreachable --- but if we did have instances of
the same column with different varnullingrels, we'd surely need
to treat them as different Params.

Discussion: https://postgr.es/m/412552.1706203379@sss.pgh.pa.us

src/backend/optimizer/util/paramassign.c

index d6a923b0b68d6c2c176a9a12cd2d0a3f27166a48..ecbf9d299f32bf9130dc53181abe7b0f3e44d114 100644 (file)
@@ -90,7 +90,8 @@ assign_param_for_var(PlannerInfo *root, Var *var)
                pvar->varattno == var->varattno &&
                pvar->vartype == var->vartype &&
                pvar->vartypmod == var->vartypmod &&
-               pvar->varcollid == var->varcollid)
+               pvar->varcollid == var->varcollid &&
+               bms_equal(pvar->varnullingrels, var->varnullingrels))
                return pitem->paramId;
        }
    }