Re: BUG #19458: OOM killer in jsonb_path_exists_opr (@?) with malformed JSONPath containing non-existent variables - Mailing list pgsql-bugs

From Andrey Borodin
Subject Re: BUG #19458: OOM killer in jsonb_path_exists_opr (@?) with malformed JSONPath containing non-existent variables
Date
Msg-id 6DE4A9D6-6D5C-41C0-8AFE-F51CFBDDAD5A@yandex-team.ru
Whole thread
In response to Re: BUG #19458: OOM killer in jsonb_path_exists_opr (@?) with malformed JSONPath containing non-existent variables  (Nikita Malakhov <hukutoc@gmail.com>)
List pgsql-bugs

> On 29 Apr 2026, at 01:19, Nikita Malakhov <hukutoc@gmail.com> wrote:
>
> According to the Jsonpath standard, malformed expression should return an error,
> but not all cases of malformation are thoroughly described.
>
> When this functionality was developed (Jsonpath and SQL/JSON) the absence
> of the variable was considered as malformation and was decided to throw an error
> in threads long time ago. In case this behavior to be a subject for change it surely
> should not be backported, but the error-throwing code has to.

I think you just explained very well why we throw an error. Your arguments against
silent mode are valid and we don't need to consider RETURN_ERROR any further.

Current master behavior throws an error, in this thread author propose to backport it.
This might be behavior change for some users. But it seems to me we have to backport,
because

SELECT '42'::jsonb @? '$"no_such_var"';

should not return true. What do you think?


Best regards, Andrey Borodin.


pgsql-bugs by date:

Previous
From: Andrey Borodin
Date:
Subject: Re: Potential buffer overrun in spell.c's CheckAffix()
Next
From: Frank Heikens
Date:
Subject: Re: Interval unit format bug