Compare varnullingrels too in assign_param_for_var().
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 26 Jan 2024 20:54:17 +0000 (15:54 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
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 a711003a3a4ee2a2df9f594706612b205bae8fd3..a58da7c57eac10dd82897249cdfaf7cb90557901 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;
                }
        }