aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/execExprInterp.c
diff options
context:
space:
mode:
authorAmit Langote <amitlan@postgresql.org>2024-07-26 15:59:27 +0900
committerAmit Langote <amitlan@postgresql.org>2024-07-26 16:36:02 +0900
commit79fa052e78804667739bee3f3e220f0ef6783b2c (patch)
tree813f9647fa73d61c0307f3cd6aecfa3bc516c115 /src/backend/executor/execExprInterp.c
parentfacd89587141451107278601dd4d4a8c4ba5e8a8 (diff)
downloadpostgresql-79fa052e78804667739bee3f3e220f0ef6783b2c.tar.gz
postgresql-79fa052e78804667739bee3f3e220f0ef6783b2c.zip
SQL/JSON: Fix error-handling of some JsonBehavior expressions
To ensure that the errors of executing a JsonBehavior expression that is coerced in the parser are caught instead of being thrown directly, pass ErrorSaveContext to ExecInitExprRec() when initializing it. Also, add a EEOP_JSONEXPR_COERCION_FINISH step to handle the errors that are caught that way. Discussion: https://postgr.es/m/CACJufxEo4sUjKCYtda0_qt9tazqqKPmF1cqhW9KBOUeJFqQd2g@mail.gmail.com Backpatch-through: 17
Diffstat (limited to 'src/backend/executor/execExprInterp.c')
-rw-r--r--src/backend/executor/execExprInterp.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/backend/executor/execExprInterp.c b/src/backend/executor/execExprInterp.c
index d8735286c4d..4c9b2a8c178 100644
--- a/src/backend/executor/execExprInterp.c
+++ b/src/backend/executor/execExprInterp.c
@@ -4558,6 +4558,12 @@ ExecEvalJsonCoercionFinish(ExprState *state, ExprEvalStep *op)
*op->resvalue = (Datum) 0;
*op->resnull = true;
jsestate->error.value = BoolGetDatum(true);
+
+ /*
+ * Reset for next use such as for catching errors when coercing a
+ * JsonBehavior expression.
+ */
+ jsestate->escontext.error_occurred = false;
}
}