Re: Shouldn't jsonpath .string() Unwrap?

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема Re: Shouldn't jsonpath .string() Unwrap?
Дата
Msg-id 39703ed0-2cc2-4e6b-9488-3725f14f609d@dunslane.net
обсуждение исходный текст
Ответ на Re: Shouldn't jsonpath .string() Unwrap?  ("David G. Johnston" <david.g.johnston@gmail.com>)
Ответы Re: Shouldn't jsonpath .string() Unwrap?
Список pgsql-hackers


On 2024-06-12 We 16:02, David G. Johnston wrote:
On Sat, Jun 8, 2024 at 3:50 PM David E. Wheeler <david@justatheory.com> wrote:
Hackers,

Most of the jsonpath methods auto-unwrap in lax mode:

david=# select jsonb_path_query('[-2,5]', '$.abs()');
 jsonb_path_query
------------------
 2
 5
(2 rows)

The obvious exceptions are size() and type(), which apply directly to arrays, so no need to unwrap:

david=# select jsonb_path_query('[-2,5]', '$.size()');
 jsonb_path_query
------------------
 2
(1 row)

david=# select jsonb_path_query('[-2,5]', '$.type()');
 jsonb_path_query
------------------
 "array"

But what about string()? Is there some reason it doesn’t unwrap?

david=# select jsonb_path_query('[-2,5]', '$.string()');
ERROR:  jsonpath item method .string() can only be applied to a bool, string, numeric, or datetime value

What I expect:

david=# select jsonb_path_query('[-2,5]', '$.string()');
 jsonb_path_query
—————————
 "2"
 "5"
(2 rows)

However, I do see a test[1] for this behavior, so maybe there’s a reason for it?


Adding Andrew.

I'm willing to call this an open item against this feature as I don't see any documentation explaining that string() behaves differently than the others.



Hmm. You might be right. Many of these items have this code, but the string() branch does not:

if (unwrap && JsonbType(jb) == jbvArray)
    return executeItemUnwrapTargetArray(cxt, jsp, jb, found,
                                        false);

cheers


andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com

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

Предыдущее
От: Nathan Bossart
Дата:
Сообщение: improve predefined roles documentation
Следующее
От: Robert Haas
Дата:
Сообщение: Re: RFC: adding pytest as a supported test framework