From: | Andrew Alsup <bluesbreaker(at)gmail(dot)com> |
---|---|
To: | Nikita Glukhov <n(dot)gluhov(at)postgrespro(dot)ru>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Cc: | Andres Freund <andres(at)anarazel(dot)de>, Dmitry Dolgov <9erthalion6(at)gmail(dot)com>, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, Oleg Bartunov <obartunov(at)postgrespro(dot)ru>, Alexander Korotkov <a(dot)korotkov(at)postgrespro(dot)ru>, Michael Paquier <michael(at)paquier(dot)xyz>, Simon Riggs <simon(at)2ndquadrant(dot)com>, Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com> |
Subject: | Re: Re: SQL/JSON: functions |
Date: | 2019-05-14 00:53:51 |
Message-ID: | bf877956-997d-9392-74ac-539f17ed72e0@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 3/5/19 5:35 PM, Nikita Glukhov wrote:
> Attached 36th version of the patches rebased onto jsonpath v36.
While testing this patch a found a few issues:
[1] I was not able to apply the patch to the current HEAD. However, it
applies cleanly to commit: e988878f85 (NOTE: I did not investigate which
commit between e988878f85 and HEAD caused problems).
[2] JsonPath array slicing does not work. I'm not aware of a
comprehensive list of JsonPath features/syntax that is targeted for
support; however, I did try various forms of array slicing, which don't
currently work.
Here are a few examples:
The input document is the same in each example.
{
"a1": 123,
"b1": "xxx",
"c1": {
"a2": 456,
"b2": "yyy",
"c2": [
{"a3": 777, "b3": "7z"},
{"a3": 888, "b3": "8z"}
]
}
}
array wildcard selector [*] works: $.c1.c2[*].b3
# select json_path_query('{"a1": 123, "b1": "xxx", "c1": {"a2": 456,
"b2": "yyy", "c2": [{"a3": 777, "b3": "7z"},{"a3": 888, "b3":
"8z"}]}}'::json, '$.c1.c2[*].b3'::jsonpath);
json_path_query
-----------------
"7z"
"8z"
(2 rows)
array index selector [0] works: $.c1.c2[0].b3
jsonpatch=# select json_path_query('{"a1": 123, "b1": "xxx", "c1":
{"a2": 456, "b2": "yyy", "c2": [{"a3": 777, "b3": "7z"},{"a3": 888,
"b3": "8z"}]}}'::json, '$.c1.c2[0].b3'::jsonpath);
json_path_query
-----------------
"7z"
(1 row)
array slicing [0:], [:1], and [0:1] do not work:$.c1.c2[0:].b3
# select json_path_query('{"a1": 123, "b1": "xxx", "c1": {"a2": 456,
"b2": "yyy", "c2": [{"a3": 777, "b3": "7z"},{"a3": 888, "b3":
"8z"}]}}'::json, '$.c1.c2[0:].b3'::jsonpath);
2019-05-13 20:47:48.740 EDT [21856] ERROR: bad jsonpath representation
at character 147
2019-05-13 20:47:48.740 EDT [21856] DETAIL: syntax error, unexpected
':', expecting ',' or ']' at or near ":"
2019-05-13 20:47:48.740 EDT [21856] STATEMENT: select
json_path_query('{"a1": 123, "b1": "xxx", "c1": {"a2": 456, "b2": "yyy",
"c2": [{"a3": 777, "b3": "7z"},{"a3": 888, "b3": "8z"}]}}'::json,
'$.c1.c2[0:].b3'::jsonpath);
ERROR: bad jsonpath representation
LINE 1: ...7, "b3": "7z"},{"a3": 888, "b3": "8z"}]}}'::json, '$.c1.c2[0...
^
DETAIL: syntax error, unexpected ':', expecting ',' or ']' at or near ":"
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Paquier | 2019-05-14 01:00:27 | Re: Passing CopyMultiInsertInfo structure to CopyMultiInsertInfoNextFreeSlot() |
Previous Message | Michael Paquier | 2019-05-14 00:49:11 | Re: Quitting the thes |