fix_ExecEvalJsonExprPath.patch
text/x-patch
Filename: fix_ExecEvalJsonExprPath.patch
Type: text/x-patch
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/executor/execExprInterp.c | 5 | 2 |
diff --git a/src/backend/executor/execExprInterp.c b/src/backend/executor/execExprInterp.c
index d8735286c4..387311fdfb 100644
--- a/src/backend/executor/execExprInterp.c
+++ b/src/backend/executor/execExprInterp.c
@@ -4381,6 +4381,7 @@ ExecEvalJsonExprPath(ExprState *state, ExprEvalStep *op,
if (!*op->resnull && jsexpr->use_io_coercion)
{
FunctionCallInfo fcinfo;
+ Node *node;
Assert(jump_eval_coercion == -1);
fcinfo = jsestate->input_fcinfo;
@@ -4396,7 +4397,8 @@ ExecEvalJsonExprPath(ExprState *state, ExprEvalStep *op,
fcinfo->isnull = false;
*op->resvalue = FunctionCallInvoke(fcinfo);
- if (SOFT_ERROR_OCCURRED(&jsestate->escontext))
+ node = (Node *) &jsestate->escontext;
+ if (SOFT_ERROR_OCCURRED(node))
error = true;
}
@@ -4552,8 +4554,9 @@ void
ExecEvalJsonCoercionFinish(ExprState *state, ExprEvalStep *op)
{
JsonExprState *jsestate = op->d.jsonexpr.jsestate;
+ Node *node = (Node *) &jsestate->escontext;
- if (SOFT_ERROR_OCCURRED(&jsestate->escontext))
+ if (SOFT_ERROR_OCCURRED(node))
{
*op->resvalue = (Datum) 0;
*op->resnull = true;