summaryrefslogtreecommitdiff
path: root/src/backend/optimizer/plan/setrefs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/optimizer/plan/setrefs.c')
-rw-r--r--src/backend/optimizer/plan/setrefs.c34
1 files changed, 21 insertions, 13 deletions
diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c
index f6f8a79354..a154c71a48 100644
--- a/src/backend/optimizer/plan/setrefs.c
+++ b/src/backend/optimizer/plan/setrefs.c
@@ -2786,7 +2786,7 @@ search_indexed_tlist_for_var(Var *var, indexed_tlist *itlist,
Var *newvar = copyVar(var);
/*
- * Assert that we kept all the nullingrels machinations straight.
+ * Verify that we kept all the nullingrels machinations straight.
*
* XXX we skip the check for system columns and whole-row Vars.
* That's because such Vars might be row identity Vars, which are
@@ -2799,12 +2799,16 @@ search_indexed_tlist_for_var(Var *var, indexed_tlist *itlist,
* columns, it seems unlikely that a bug in nullingrels logic
* would affect only system columns.)
*/
- Assert(varattno <= 0 ||
- (nrm_match == NRM_SUBSET ?
- bms_is_subset(var->varnullingrels, vinfo->varnullingrels) :
- nrm_match == NRM_SUPERSET ?
- bms_is_subset(vinfo->varnullingrels, var->varnullingrels) :
- bms_equal(vinfo->varnullingrels, var->varnullingrels)));
+ if (!(varattno <= 0 ||
+ (nrm_match == NRM_SUBSET ?
+ bms_is_subset(var->varnullingrels, vinfo->varnullingrels) :
+ nrm_match == NRM_SUPERSET ?
+ bms_is_subset(vinfo->varnullingrels, var->varnullingrels) :
+ bms_equal(vinfo->varnullingrels, var->varnullingrels))))
+ elog(ERROR, "wrong varnullingrels %s (expected %s) for Var %d/%d",
+ bmsToString(var->varnullingrels),
+ bmsToString(vinfo->varnullingrels),
+ varno, varattno);
newvar->varno = newvarno;
newvar->varattno = vinfo->resno;
@@ -2851,12 +2855,16 @@ search_indexed_tlist_for_phv(PlaceHolderVar *phv,
if (phv->phid != subphv->phid)
continue;
- /* Assert that we kept all the nullingrels machinations straight */
- Assert(nrm_match == NRM_SUBSET ?
- bms_is_subset(phv->phnullingrels, subphv->phnullingrels) :
- nrm_match == NRM_SUPERSET ?
- bms_is_subset(subphv->phnullingrels, phv->phnullingrels) :
- bms_equal(subphv->phnullingrels, phv->phnullingrels));
+ /* Verify that we kept all the nullingrels machinations straight */
+ if (!(nrm_match == NRM_SUBSET ?
+ bms_is_subset(phv->phnullingrels, subphv->phnullingrels) :
+ nrm_match == NRM_SUPERSET ?
+ bms_is_subset(subphv->phnullingrels, phv->phnullingrels) :
+ bms_equal(subphv->phnullingrels, phv->phnullingrels)))
+ elog(ERROR, "wrong phnullingrels %s (expected %s) for PlaceHolderVar %d",
+ bmsToString(phv->phnullingrels),
+ bmsToString(subphv->phnullingrels),
+ phv->phid);
/* Found a matching subplan output expression */
newvar = makeVarFromTargetEntry(newvarno, tle);