Re: Re: SQL/JSON: functions
От | Andrew Alsup |
---|---|
Тема | Re: Re: SQL/JSON: functions |
Дата | |
Msg-id | bf877956-997d-9392-74ac-539f17ed72e0@gmail.com обсуждение исходный текст |
Ответ на | Re: SQL/JSON: functions (Nikita Glukhov <n.gluhov@postgrespro.ru>) |
Ответы |
Re: Re: SQL/JSON: functions
Re: Re: SQL/JSON: functions |
Список | 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 ":"
В списке pgsql-hackers по дате отправления: