fix_eval_expr_once.patch
application/octet-stream
Filename: fix_eval_expr_once.patch
Type: application/octet-stream
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/executor/execExpr.c | 7 | 4 |
diff --git a/src/backend/executor/execExpr.c b/src/backend/executor/execExpr.c
index 81b9d87bad..e9b9239283 100644
--- a/src/backend/executor/execExpr.c
+++ b/src/backend/executor/execExpr.c
@@ -3129,6 +3129,8 @@ ExecInitCoerceToDomain(ExprEvalStep *scratch, CoerceToDomain *ctest,
{
DomainConstraintRef *constraint_ref;
ListCell *l;
+ Datum *domainval = NULL;
+ bool *domainnull = NULL;
scratch->d.domaincheck.resulttype = ctest->resulttype;
/* we'll allocate workspace only if needed */
@@ -3174,10 +3176,6 @@ ExecInitCoerceToDomain(ExprEvalStep *scratch, CoerceToDomain *ctest,
foreach(l, constraint_ref->constraints)
{
DomainConstraintState *con = (DomainConstraintState *) lfirst(l);
- Datum *domainval = NULL;
- bool *domainnull = NULL;
- Datum *save_innermost_domainval;
- bool *save_innermost_domainnull;
scratch->d.domaincheck.constraintname = con->name;
@@ -3188,6 +3186,10 @@ ExecInitCoerceToDomain(ExprEvalStep *scratch, CoerceToDomain *ctest,
ExprEvalPushStep(state, scratch);
break;
case DOM_CONSTRAINT_CHECK:
+ {
+ Datum *save_innermost_domainval;
+ bool *save_innermost_domainnull;
+
/* Allocate workspace for CHECK output if we didn't yet */
if (scratch->d.domaincheck.checkvalue == NULL)
{
@@ -3255,6 +3257,7 @@ ExecInitCoerceToDomain(ExprEvalStep *scratch, CoerceToDomain *ctest,
ExprEvalPushStep(state, scratch);
break;
+ }
default:
elog(ERROR, "unrecognized constraint type: %d",
(int) con->constrainttype);