From 63e6c5f4a2eeb22e0dd446a62c2b4b417d2b51f0 Mon Sep 17 00:00:00 2001 From: Amit Langote Date: Fri, 26 Jul 2024 15:59:27 +0900 Subject: 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 --- src/test/regress/expected/sqljson_queryfuncs.out | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/test/regress/expected/sqljson_queryfuncs.out') diff --git a/src/test/regress/expected/sqljson_queryfuncs.out b/src/test/regress/expected/sqljson_queryfuncs.out index 074aedb2dd1..ec8caee91c7 100644 --- a/src/test/regress/expected/sqljson_queryfuncs.out +++ b/src/test/regress/expected/sqljson_queryfuncs.out @@ -1232,7 +1232,11 @@ DROP TABLE test_jsonb_mutability; DROP FUNCTION ret_setint; CREATE DOMAIN queryfuncs_test_domain AS text CHECK (value <> 'foo'); SELECT JSON_VALUE(jsonb '{"d1": "H"}', '$.a2' RETURNING queryfuncs_test_domain DEFAULT 'foo'::queryfuncs_test_domain ON EMPTY); -ERROR: value for domain queryfuncs_test_domain violates check constraint "queryfuncs_test_domain_check" + json_value +------------ + +(1 row) + SELECT JSON_VALUE(jsonb '{"d1": "H"}', '$.a2' RETURNING queryfuncs_test_domain DEFAULT 'foo1'::queryfuncs_test_domain ON EMPTY); json_value ------------ -- cgit v1.2.3