aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/execQual.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor/execQual.c')
-rw-r--r--src/backend/executor/execQual.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c
index fec76d4f1b7..d94fe581df3 100644
--- a/src/backend/executor/execQual.c
+++ b/src/backend/executor/execQual.c
@@ -41,7 +41,6 @@
#include "access/tupconvert.h"
#include "catalog/objectaccess.h"
#include "catalog/pg_type.h"
-#include "commands/typecmds.h"
#include "executor/execdebug.h"
#include "executor/nodeSubplan.h"
#include "funcapi.h"
@@ -3929,7 +3928,10 @@ ExecEvalCoerceToDomain(CoerceToDomainState *cstate, ExprContext *econtext,
if (isDone && *isDone == ExprEndResult)
return result; /* nothing to check */
- foreach(l, cstate->constraints)
+ /* Make sure we have up-to-date constraints */
+ UpdateDomainConstraintRef(cstate->constraint_ref);
+
+ foreach(l, cstate->constraint_ref->constraints)
{
DomainConstraintState *con = (DomainConstraintState *) lfirst(l);
@@ -5050,7 +5052,12 @@ ExecInitExpr(Expr *node, PlanState *parent)
cstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalCoerceToDomain;
cstate->arg = ExecInitExpr(ctest->arg, parent);
- cstate->constraints = GetDomainConstraints(ctest->resulttype);
+ /* We spend an extra palloc to reduce header inclusions */
+ cstate->constraint_ref = (DomainConstraintRef *)
+ palloc(sizeof(DomainConstraintRef));
+ InitDomainConstraintRef(ctest->resulttype,
+ cstate->constraint_ref,
+ CurrentMemoryContext);
state = (ExprState *) cstate;
}
break;