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-11T09:57:14Z
Lists: pgsql-hackers
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.




Commits

  1. SQL/JSON: Fix JSON_QUERY(... WITH CONDITIONAL WRAPPER)