Re: BUG #17660: JSONPATH issue using like_regex followed by the && operator

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #17660: JSONPATH issue using like_regex followed by the && operator
Дата
Msg-id 3367660.1666446526@sss.pgh.pa.us
обсуждение исходный текст
Ответ на BUG #17660: JSONPATH issue using like_regex followed by the && operator  (PG Bug reporting form <noreply@postgresql.org>)
Ответы Re: BUG #17660: JSONPATH issue using like_regex followed by the && operator
Список pgsql-bugs
PG Bug reporting form <noreply@postgresql.org> writes:
> I've found an issue with the like_regex statement when using it together
> with another && condition.
> In the following example I'm expecting the result will end as:
> [{"id":9,"value":"a"}] but instead, it ends with an empty array:

> WITH a(attributes) AS (
>     SELECT '[{"id":9,"value":"a"},{"id":9,"value":"a$"}]'::jsonb
> )
> SELECT jsonb_path_query_array(attributes,'$[*] ? (!(@.id==9 && @.value
> like_regex "\$$"))') FROM a

I think you're short a backslash:

=# WITH a(attributes) AS (
SELECT '[{"id":9,"value":"a"},{"id":9,"value":"a$"}]'::jsonb
)
SELECT jsonb_path_query_array(attributes,'$[*] ? (!(@.id==9 && @.value
like_regex "\\$$"))') FROM a
;
  jsonb_path_query_array   
---------------------------
 [{"id": 9, "value": "a"}]
(1 row)

I believe one level of backslashing gets eaten by the jsonpath parser
while parsing the literal, so your version ends as LIKE "$$" which
is not different from LIKE "$" and will match every string.

            regards, tom lane



В списке pgsql-bugs по дате отправления:

Предыдущее
От: PG Bug reporting form
Дата:
Сообщение: BUG #17660: JSONPATH issue using like_regex followed by the && operator
Следующее
От: PG Bug reporting form
Дата:
Сообщение: BUG #17661: Nothing provides 'libselinux.so.1(LIBSELINUX_1.0)(64bit)