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 по дате отправления: