| From: | Florents Tselai <florents(dot)tselai(at)gmail(dot)com> |
|---|---|
| To: | pgsql-hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: Add SQL/JSON ON MISMATCH clause to JSON_VALUE |
| Date: | 2026-01-27 08:01:48 |
| Message-ID: | CA+v5N42K20N5+MBE8kPvZOiSyi=Yfrza+AHbMW9+_JvAGuKYSg@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Sun, Jan 25, 2026 at 3:15 AM Florents Tselai <florents(dot)tselai(at)gmail(dot)com>
wrote:
>
>
>>
>> I've had trouble making JSON_QUERY work too,
>> so I suspect that although my tests pass,
>> there may be something I'm missing in the executor side of things.
>>
>
> "For those curious, I found the issue: in ExecEvalJsonExprPath, I
> had misplaced the check for jsexpr->on_mismatch.
> I wasn't setting jsestate->escontext.details_wanted = true early enough.
> Without this, the soft error context wasn't capturing the specific SQL
> error code needed to identify the mismatch.
>
> Attaching a v2 that implements ON MISMATCH for JSON_QUERY and JSON_TABLE
> too.
>
> That said, the semantics of ON ERROR / MISMATCH / EMPTY are complex.
> I expect someone with access to and detailed knowledge of the standard
> might be able to poke holes in certain edge cases, particularly regarding
> precedence.
>
2 amendments to the commit message:
- This is isn't in the SQL/JSON standard
But aligns with the semantics of Oracle that already provides such a clause
[0]:
- A TYPE ERROR is defined as "A JSON scalar value has a data type that is
incompatible with the corresponding return SQL scalar data type."
- Precedence logic: ON MISMATCH applies only when neither of the clauses ON
EMPTY and ON ERROR applies.
- Fallback Behavior: if the user doesn't specify ON MISMATCH, the coercion
error is caught by ON ERROR.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Corey Huinker | 2026-01-27 08:04:52 | Re: Import Statistics in postgres_fdw before resorting to sampling. |
| Previous Message | Chao Li | 2026-01-27 07:59:01 | Re: tablecmds: fix bug where index rebuild loses replica identity on partitions |