diff options
author | Amit Langote <amitlan@postgresql.org> | 2024-07-26 15:59:27 +0900 |
---|---|---|
committer | Amit Langote <amitlan@postgresql.org> | 2024-07-26 16:36:02 +0900 |
commit | 79fa052e78804667739bee3f3e220f0ef6783b2c (patch) | |
tree | 813f9647fa73d61c0307f3cd6aecfa3bc516c115 /src/backend/executor/execExprInterp.c | |
parent | facd89587141451107278601dd4d4a8c4ba5e8a8 (diff) | |
download | postgresql-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.c | 6 |
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; } } |