Re: json_query conditional wrapper bug
Peter Eisentraut <peter@eisentraut.org>
From: Peter Eisentraut <peter@eisentraut.org>
To: Amit Langote <amitlangote09@gmail.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-09-11T11:56:23Z
Lists: pgsql-hackers
On 11.09.24 13:25, Amit Langote wrote: > On Wed, Sep 11, 2024 at 6:57 PM Peter Eisentraut <peter@eisentraut.org> wrote: >> On 11.09.24 09:51, Amit Langote wrote: >>>>> I've updated your patch to include updated test outputs and a nearby >>>>> code comment expanded. Do you intend to commit it or do you prefer >>>>> that I do? >>>> >>>> This change looks unrelated: >>>> >>>> -ERROR: new row for relation "test_jsonb_constraints" violates check >>>> constraint "test_jsonb_constraint4" >>>> +ERROR: new row for relation "test_jsonb_constraints" violates check >>>> constraint "test_jsonb_constraint5" >>>> >>>> Is this some randomness in the way these constraints are evaluated? >>> >>> The result of JSON_QUERY() in the CHECK constraint changes, so the >>> constraint that previously failed now succeeds after this change, >>> because the comparison looked like this before and after: >>> >>> -- before >>> postgres=# select jsonb '[10]' < jsonb '[10]'; >>> ?column? >>> ---------- >>> f >>> (1 row) >>> >>> -- after >>> postgres=# select jsonb '10' < jsonb '[10]'; >>> ?column? >>> ---------- >>> t >>> (1 row) >>> >>> That causes the next constraint to be evaluated and its failure >>> reported instead. >>> >>> In the attached, I've adjusted the constraint for the test case to be >>> a bit more relevant and removed a nearby somewhat redundant test, >>> mainly because its output changes after the adjustment. >> >> Ok, that looks good. Good that we could clear that up a bit. > > Thanks for checking. Would you like me to commit it? Please do.
Commits
-
SQL/JSON: Fix JSON_QUERY(... WITH CONDITIONAL WRAPPER)
- e6c45d85dc16 18.0 landed
- 2c27346ed684 17.0 landed