1219 lines
24 KiB
Plaintext
1219 lines
24 KiB
Plaintext
--jsonpath io
|
|
select ''::jsonpath;
|
|
ERROR: invalid input syntax for type jsonpath: ""
|
|
LINE 1: select ''::jsonpath;
|
|
^
|
|
select '$'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$
|
|
(1 row)
|
|
|
|
select 'strict $'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
strict $
|
|
(1 row)
|
|
|
|
select 'lax $'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$
|
|
(1 row)
|
|
|
|
select '$.a'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$."a"
|
|
(1 row)
|
|
|
|
select '$.a.v'::jsonpath;
|
|
jsonpath
|
|
-----------
|
|
$."a"."v"
|
|
(1 row)
|
|
|
|
select '$.a.*'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$."a".*
|
|
(1 row)
|
|
|
|
select '$.*[*]'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$.*[*]
|
|
(1 row)
|
|
|
|
select '$.a[*]'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$."a"[*]
|
|
(1 row)
|
|
|
|
select '$.a[*][*]'::jsonpath;
|
|
jsonpath
|
|
-------------
|
|
$."a"[*][*]
|
|
(1 row)
|
|
|
|
select '$[*]'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$[*]
|
|
(1 row)
|
|
|
|
select '$[0]'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$[0]
|
|
(1 row)
|
|
|
|
select '$[*][0]'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$[*][0]
|
|
(1 row)
|
|
|
|
select '$[*].a'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$[*]."a"
|
|
(1 row)
|
|
|
|
select '$[*][0].a.b'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$[*][0]."a"."b"
|
|
(1 row)
|
|
|
|
select '$.a.**.b'::jsonpath;
|
|
jsonpath
|
|
--------------
|
|
$."a".**."b"
|
|
(1 row)
|
|
|
|
select '$.a.**{2}.b'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$."a".**{2}."b"
|
|
(1 row)
|
|
|
|
select '$.a.**{2 to 2}.b'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$."a".**{2}."b"
|
|
(1 row)
|
|
|
|
select '$.a.**{2 to 5}.b'::jsonpath;
|
|
jsonpath
|
|
----------------------
|
|
$."a".**{2 to 5}."b"
|
|
(1 row)
|
|
|
|
select '$.a.**{0 to 5}.b'::jsonpath;
|
|
jsonpath
|
|
----------------------
|
|
$."a".**{0 to 5}."b"
|
|
(1 row)
|
|
|
|
select '$.a.**{5 to last}.b'::jsonpath;
|
|
jsonpath
|
|
-------------------------
|
|
$."a".**{5 to last}."b"
|
|
(1 row)
|
|
|
|
select '$.a.**{last}.b'::jsonpath;
|
|
jsonpath
|
|
--------------------
|
|
$."a".**{last}."b"
|
|
(1 row)
|
|
|
|
select '$.a.**{last to 5}.b'::jsonpath;
|
|
jsonpath
|
|
-------------------------
|
|
$."a".**{last to 5}."b"
|
|
(1 row)
|
|
|
|
select '$+1'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
($ + 1)
|
|
(1 row)
|
|
|
|
select '$-1'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
($ - 1)
|
|
(1 row)
|
|
|
|
select '$--+1'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
($ - -1)
|
|
(1 row)
|
|
|
|
select '$.a/+-1'::jsonpath;
|
|
jsonpath
|
|
--------------
|
|
($."a" / -1)
|
|
(1 row)
|
|
|
|
select '1 * 2 + 4 % -3 != false'::jsonpath;
|
|
jsonpath
|
|
---------------------------
|
|
(1 * 2 + 4 % -3 != false)
|
|
(1 row)
|
|
|
|
select '"\b\f\r\n\t\v\"\''\\"'::jsonpath;
|
|
jsonpath
|
|
-------------------------
|
|
"\b\f\r\n\t\u000b\"'\\"
|
|
(1 row)
|
|
|
|
select '"\x50\u0067\u{53}\u{051}\u{00004C}"'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
"PgSQL"
|
|
(1 row)
|
|
|
|
select '$.foo\x50\u0067\u{53}\u{051}\u{00004C}\t\"bar'::jsonpath;
|
|
jsonpath
|
|
---------------------
|
|
$."fooPgSQL\t\"bar"
|
|
(1 row)
|
|
|
|
select '"\z"'::jsonpath; -- unrecognized escape is just the literal char
|
|
jsonpath
|
|
----------
|
|
"z"
|
|
(1 row)
|
|
|
|
select '$.g ? ($.a == 1)'::jsonpath;
|
|
jsonpath
|
|
--------------------
|
|
$."g"?($."a" == 1)
|
|
(1 row)
|
|
|
|
select '$.g ? (@ == 1)'::jsonpath;
|
|
jsonpath
|
|
----------------
|
|
$."g"?(@ == 1)
|
|
(1 row)
|
|
|
|
select '$.g ? (@.a == 1)'::jsonpath;
|
|
jsonpath
|
|
--------------------
|
|
$."g"?(@."a" == 1)
|
|
(1 row)
|
|
|
|
select '$.g ? (@.a == 1 || @.a == 4)'::jsonpath;
|
|
jsonpath
|
|
----------------------------------
|
|
$."g"?(@."a" == 1 || @."a" == 4)
|
|
(1 row)
|
|
|
|
select '$.g ? (@.a == 1 && @.a == 4)'::jsonpath;
|
|
jsonpath
|
|
----------------------------------
|
|
$."g"?(@."a" == 1 && @."a" == 4)
|
|
(1 row)
|
|
|
|
select '$.g ? (@.a == 1 || @.a == 4 && @.b == 7)'::jsonpath;
|
|
jsonpath
|
|
------------------------------------------------
|
|
$."g"?(@."a" == 1 || @."a" == 4 && @."b" == 7)
|
|
(1 row)
|
|
|
|
select '$.g ? (@.a == 1 || !(@.a == 4) && @.b == 7)'::jsonpath;
|
|
jsonpath
|
|
---------------------------------------------------
|
|
$."g"?(@."a" == 1 || !(@."a" == 4) && @."b" == 7)
|
|
(1 row)
|
|
|
|
select '$.g ? (@.a == 1 || !(@.x >= 123 || @.a == 4) && @.b == 7)'::jsonpath;
|
|
jsonpath
|
|
-------------------------------------------------------------------
|
|
$."g"?(@."a" == 1 || !(@."x" >= 123 || @."a" == 4) && @."b" == 7)
|
|
(1 row)
|
|
|
|
select '$.g ? (@.x >= @[*]?(@.a > "abc"))'::jsonpath;
|
|
jsonpath
|
|
---------------------------------------
|
|
$."g"?(@."x" >= @[*]?(@."a" > "abc"))
|
|
(1 row)
|
|
|
|
select '$.g ? ((@.x >= 123 || @.a == 4) is unknown)'::jsonpath;
|
|
jsonpath
|
|
-------------------------------------------------
|
|
$."g"?((@."x" >= 123 || @."a" == 4) is unknown)
|
|
(1 row)
|
|
|
|
select '$.g ? (exists (@.x))'::jsonpath;
|
|
jsonpath
|
|
------------------------
|
|
$."g"?(exists (@."x"))
|
|
(1 row)
|
|
|
|
select '$.g ? (exists (@.x ? (@ == 14)))'::jsonpath;
|
|
jsonpath
|
|
----------------------------------
|
|
$."g"?(exists (@."x"?(@ == 14)))
|
|
(1 row)
|
|
|
|
select '$.g ? ((@.x >= 123 || @.a == 4) && exists (@.x ? (@ == 14)))'::jsonpath;
|
|
jsonpath
|
|
------------------------------------------------------------------
|
|
$."g"?((@."x" >= 123 || @."a" == 4) && exists (@."x"?(@ == 14)))
|
|
(1 row)
|
|
|
|
select '$.g ? (+@.x >= +-(+@.a + 2))'::jsonpath;
|
|
jsonpath
|
|
------------------------------------
|
|
$."g"?(+@."x" >= +(-(+@."a" + 2)))
|
|
(1 row)
|
|
|
|
select '$a'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$"a"
|
|
(1 row)
|
|
|
|
select '$a.b'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$"a"."b"
|
|
(1 row)
|
|
|
|
select '$a[*]'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$"a"[*]
|
|
(1 row)
|
|
|
|
select '$.g ? (@.zip == $zip)'::jsonpath;
|
|
jsonpath
|
|
---------------------------
|
|
$."g"?(@."zip" == $"zip")
|
|
(1 row)
|
|
|
|
select '$.a[1,2, 3 to 16]'::jsonpath;
|
|
jsonpath
|
|
--------------------
|
|
$."a"[1,2,3 to 16]
|
|
(1 row)
|
|
|
|
select '$.a[$a + 1, ($b[*]) to -($[0] * 2)]'::jsonpath;
|
|
jsonpath
|
|
----------------------------------------
|
|
$."a"[$"a" + 1,$"b"[*] to -($[0] * 2)]
|
|
(1 row)
|
|
|
|
select '$.a[$.a.size() - 3]'::jsonpath;
|
|
jsonpath
|
|
-------------------------
|
|
$."a"[$."a".size() - 3]
|
|
(1 row)
|
|
|
|
select 'last'::jsonpath;
|
|
ERROR: LAST is allowed only in array subscripts
|
|
LINE 1: select 'last'::jsonpath;
|
|
^
|
|
select '"last"'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
"last"
|
|
(1 row)
|
|
|
|
select '$.last'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$."last"
|
|
(1 row)
|
|
|
|
select '$ ? (last > 0)'::jsonpath;
|
|
ERROR: LAST is allowed only in array subscripts
|
|
LINE 1: select '$ ? (last > 0)'::jsonpath;
|
|
^
|
|
select '$[last]'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$[last]
|
|
(1 row)
|
|
|
|
select '$[$[0] ? (last > 0)]'::jsonpath;
|
|
jsonpath
|
|
--------------------
|
|
$[$[0]?(last > 0)]
|
|
(1 row)
|
|
|
|
select 'null.type()'::jsonpath;
|
|
jsonpath
|
|
-------------
|
|
null.type()
|
|
(1 row)
|
|
|
|
select '1.type()'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "1.t" of jsonpath input
|
|
LINE 1: select '1.type()'::jsonpath;
|
|
^
|
|
select '(1).type()'::jsonpath;
|
|
jsonpath
|
|
------------
|
|
(1).type()
|
|
(1 row)
|
|
|
|
select '1.2.type()'::jsonpath;
|
|
jsonpath
|
|
--------------
|
|
(1.2).type()
|
|
(1 row)
|
|
|
|
select '"aaa".type()'::jsonpath;
|
|
jsonpath
|
|
--------------
|
|
"aaa".type()
|
|
(1 row)
|
|
|
|
select 'true.type()'::jsonpath;
|
|
jsonpath
|
|
-------------
|
|
true.type()
|
|
(1 row)
|
|
|
|
select '$.double().floor().ceiling().abs()'::jsonpath;
|
|
jsonpath
|
|
------------------------------------
|
|
$.double().floor().ceiling().abs()
|
|
(1 row)
|
|
|
|
select '$.keyvalue().key'::jsonpath;
|
|
jsonpath
|
|
--------------------
|
|
$.keyvalue()."key"
|
|
(1 row)
|
|
|
|
select '$.datetime()'::jsonpath;
|
|
jsonpath
|
|
--------------
|
|
$.datetime()
|
|
(1 row)
|
|
|
|
select '$.datetime("datetime template")'::jsonpath;
|
|
jsonpath
|
|
---------------------------------
|
|
$.datetime("datetime template")
|
|
(1 row)
|
|
|
|
select '$ ? (@ starts with "abc")'::jsonpath;
|
|
jsonpath
|
|
-------------------------
|
|
$?(@ starts with "abc")
|
|
(1 row)
|
|
|
|
select '$ ? (@ starts with $var)'::jsonpath;
|
|
jsonpath
|
|
--------------------------
|
|
$?(@ starts with $"var")
|
|
(1 row)
|
|
|
|
select '$ ? (@ like_regex "(invalid pattern")'::jsonpath;
|
|
ERROR: invalid regular expression: parentheses () not balanced
|
|
LINE 1: select '$ ? (@ like_regex "(invalid pattern")'::jsonpath;
|
|
^
|
|
select '$ ? (@ like_regex "pattern")'::jsonpath;
|
|
jsonpath
|
|
----------------------------
|
|
$?(@ like_regex "pattern")
|
|
(1 row)
|
|
|
|
select '$ ? (@ like_regex "pattern" flag "")'::jsonpath;
|
|
jsonpath
|
|
----------------------------
|
|
$?(@ like_regex "pattern")
|
|
(1 row)
|
|
|
|
select '$ ? (@ like_regex "pattern" flag "i")'::jsonpath;
|
|
jsonpath
|
|
-------------------------------------
|
|
$?(@ like_regex "pattern" flag "i")
|
|
(1 row)
|
|
|
|
select '$ ? (@ like_regex "pattern" flag "is")'::jsonpath;
|
|
jsonpath
|
|
--------------------------------------
|
|
$?(@ like_regex "pattern" flag "is")
|
|
(1 row)
|
|
|
|
select '$ ? (@ like_regex "pattern" flag "isim")'::jsonpath;
|
|
jsonpath
|
|
---------------------------------------
|
|
$?(@ like_regex "pattern" flag "ism")
|
|
(1 row)
|
|
|
|
select '$ ? (@ like_regex "pattern" flag "xsms")'::jsonpath;
|
|
ERROR: XQuery "x" flag (expanded regular expressions) is not implemented
|
|
LINE 1: select '$ ? (@ like_regex "pattern" flag "xsms")'::jsonpath;
|
|
^
|
|
select '$ ? (@ like_regex "pattern" flag "q")'::jsonpath;
|
|
jsonpath
|
|
-------------------------------------
|
|
$?(@ like_regex "pattern" flag "q")
|
|
(1 row)
|
|
|
|
select '$ ? (@ like_regex "pattern" flag "iq")'::jsonpath;
|
|
jsonpath
|
|
--------------------------------------
|
|
$?(@ like_regex "pattern" flag "iq")
|
|
(1 row)
|
|
|
|
select '$ ? (@ like_regex "pattern" flag "smixq")'::jsonpath;
|
|
jsonpath
|
|
-----------------------------------------
|
|
$?(@ like_regex "pattern" flag "ismxq")
|
|
(1 row)
|
|
|
|
select '$ ? (@ like_regex "pattern" flag "a")'::jsonpath;
|
|
ERROR: invalid input syntax for type jsonpath
|
|
LINE 1: select '$ ? (@ like_regex "pattern" flag "a")'::jsonpath;
|
|
^
|
|
DETAIL: Unrecognized flag character "a" in LIKE_REGEX predicate.
|
|
select '$ < 1'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
($ < 1)
|
|
(1 row)
|
|
|
|
select '($ < 1) || $.a.b <= $x'::jsonpath;
|
|
jsonpath
|
|
------------------------------
|
|
($ < 1 || $."a"."b" <= $"x")
|
|
(1 row)
|
|
|
|
select '@ + 1'::jsonpath;
|
|
ERROR: @ is not allowed in root expressions
|
|
LINE 1: select '@ + 1'::jsonpath;
|
|
^
|
|
select '($).a.b'::jsonpath;
|
|
jsonpath
|
|
-----------
|
|
$."a"."b"
|
|
(1 row)
|
|
|
|
select '($.a.b).c.d'::jsonpath;
|
|
jsonpath
|
|
-------------------
|
|
$."a"."b"."c"."d"
|
|
(1 row)
|
|
|
|
select '($.a.b + -$.x.y).c.d'::jsonpath;
|
|
jsonpath
|
|
----------------------------------
|
|
($."a"."b" + -$."x"."y")."c"."d"
|
|
(1 row)
|
|
|
|
select '(-+$.a.b).c.d'::jsonpath;
|
|
jsonpath
|
|
-------------------------
|
|
(-(+$."a"."b"))."c"."d"
|
|
(1 row)
|
|
|
|
select '1 + ($.a.b + 2).c.d'::jsonpath;
|
|
jsonpath
|
|
-------------------------------
|
|
(1 + ($."a"."b" + 2)."c"."d")
|
|
(1 row)
|
|
|
|
select '1 + ($.a.b > 2).c.d'::jsonpath;
|
|
jsonpath
|
|
-------------------------------
|
|
(1 + ($."a"."b" > 2)."c"."d")
|
|
(1 row)
|
|
|
|
select '($)'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$
|
|
(1 row)
|
|
|
|
select '(($))'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
$
|
|
(1 row)
|
|
|
|
select '((($ + 1)).a + ((2)).b ? ((((@ > 1)) || (exists(@.c)))))'::jsonpath;
|
|
jsonpath
|
|
---------------------------------------------------
|
|
(($ + 1)."a" + (2)."b"?(@ > 1 || exists (@."c")))
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < 1)'::jsonpath;
|
|
jsonpath
|
|
---------------
|
|
$?(@."a" < 1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -1)'::jsonpath;
|
|
jsonpath
|
|
----------------
|
|
$?(@."a" < -1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +1)'::jsonpath;
|
|
jsonpath
|
|
---------------
|
|
$?(@."a" < 1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < .1)'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$?(@."a" < 0.1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -.1)'::jsonpath;
|
|
jsonpath
|
|
------------------
|
|
$?(@."a" < -0.1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +.1)'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$?(@."a" < 0.1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < 0.1)'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$?(@."a" < 0.1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -0.1)'::jsonpath;
|
|
jsonpath
|
|
------------------
|
|
$?(@."a" < -0.1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +0.1)'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$?(@."a" < 0.1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < 10.1)'::jsonpath;
|
|
jsonpath
|
|
------------------
|
|
$?(@."a" < 10.1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -10.1)'::jsonpath;
|
|
jsonpath
|
|
-------------------
|
|
$?(@."a" < -10.1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +10.1)'::jsonpath;
|
|
jsonpath
|
|
------------------
|
|
$?(@."a" < 10.1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < 1e1)'::jsonpath;
|
|
jsonpath
|
|
----------------
|
|
$?(@."a" < 10)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -1e1)'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$?(@."a" < -10)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +1e1)'::jsonpath;
|
|
jsonpath
|
|
----------------
|
|
$?(@."a" < 10)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < .1e1)'::jsonpath;
|
|
jsonpath
|
|
---------------
|
|
$?(@."a" < 1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -.1e1)'::jsonpath;
|
|
jsonpath
|
|
----------------
|
|
$?(@."a" < -1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +.1e1)'::jsonpath;
|
|
jsonpath
|
|
---------------
|
|
$?(@."a" < 1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < 0.1e1)'::jsonpath;
|
|
jsonpath
|
|
---------------
|
|
$?(@."a" < 1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -0.1e1)'::jsonpath;
|
|
jsonpath
|
|
----------------
|
|
$?(@."a" < -1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +0.1e1)'::jsonpath;
|
|
jsonpath
|
|
---------------
|
|
$?(@."a" < 1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < 10.1e1)'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$?(@."a" < 101)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -10.1e1)'::jsonpath;
|
|
jsonpath
|
|
------------------
|
|
$?(@."a" < -101)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +10.1e1)'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$?(@."a" < 101)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < 1e-1)'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$?(@."a" < 0.1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -1e-1)'::jsonpath;
|
|
jsonpath
|
|
------------------
|
|
$?(@."a" < -0.1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +1e-1)'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$?(@."a" < 0.1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < .1e-1)'::jsonpath;
|
|
jsonpath
|
|
------------------
|
|
$?(@."a" < 0.01)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -.1e-1)'::jsonpath;
|
|
jsonpath
|
|
-------------------
|
|
$?(@."a" < -0.01)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +.1e-1)'::jsonpath;
|
|
jsonpath
|
|
------------------
|
|
$?(@."a" < 0.01)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < 0.1e-1)'::jsonpath;
|
|
jsonpath
|
|
------------------
|
|
$?(@."a" < 0.01)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -0.1e-1)'::jsonpath;
|
|
jsonpath
|
|
-------------------
|
|
$?(@."a" < -0.01)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +0.1e-1)'::jsonpath;
|
|
jsonpath
|
|
------------------
|
|
$?(@."a" < 0.01)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < 10.1e-1)'::jsonpath;
|
|
jsonpath
|
|
------------------
|
|
$?(@."a" < 1.01)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -10.1e-1)'::jsonpath;
|
|
jsonpath
|
|
-------------------
|
|
$?(@."a" < -1.01)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +10.1e-1)'::jsonpath;
|
|
jsonpath
|
|
------------------
|
|
$?(@."a" < 1.01)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < 1e+1)'::jsonpath;
|
|
jsonpath
|
|
----------------
|
|
$?(@."a" < 10)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -1e+1)'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$?(@."a" < -10)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +1e+1)'::jsonpath;
|
|
jsonpath
|
|
----------------
|
|
$?(@."a" < 10)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < .1e+1)'::jsonpath;
|
|
jsonpath
|
|
---------------
|
|
$?(@."a" < 1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -.1e+1)'::jsonpath;
|
|
jsonpath
|
|
----------------
|
|
$?(@."a" < -1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +.1e+1)'::jsonpath;
|
|
jsonpath
|
|
---------------
|
|
$?(@."a" < 1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < 0.1e+1)'::jsonpath;
|
|
jsonpath
|
|
---------------
|
|
$?(@."a" < 1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -0.1e+1)'::jsonpath;
|
|
jsonpath
|
|
----------------
|
|
$?(@."a" < -1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +0.1e+1)'::jsonpath;
|
|
jsonpath
|
|
---------------
|
|
$?(@."a" < 1)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < 10.1e+1)'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$?(@."a" < 101)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < -10.1e+1)'::jsonpath;
|
|
jsonpath
|
|
------------------
|
|
$?(@."a" < -101)
|
|
(1 row)
|
|
|
|
select '$ ? (@.a < +10.1e+1)'::jsonpath;
|
|
jsonpath
|
|
-----------------
|
|
$?(@."a" < 101)
|
|
(1 row)
|
|
|
|
-- numeric literals
|
|
select '0'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
0
|
|
(1 row)
|
|
|
|
select '00'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "00" of jsonpath input
|
|
LINE 1: select '00'::jsonpath;
|
|
^
|
|
select '0755'::jsonpath;
|
|
ERROR: syntax error at end of jsonpath input
|
|
LINE 1: select '0755'::jsonpath;
|
|
^
|
|
select '0.0'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
0.0
|
|
(1 row)
|
|
|
|
select '0.000'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
0.000
|
|
(1 row)
|
|
|
|
select '0.000e1'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
0.00
|
|
(1 row)
|
|
|
|
select '0.000e2'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
0.0
|
|
(1 row)
|
|
|
|
select '0.000e3'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
0
|
|
(1 row)
|
|
|
|
select '0.0010'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
0.0010
|
|
(1 row)
|
|
|
|
select '0.0010e-1'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
0.00010
|
|
(1 row)
|
|
|
|
select '0.0010e+1'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
0.010
|
|
(1 row)
|
|
|
|
select '0.0010e+2'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
0.10
|
|
(1 row)
|
|
|
|
select '.001'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
0.001
|
|
(1 row)
|
|
|
|
select '.001e1'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
0.01
|
|
(1 row)
|
|
|
|
select '1.'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
1
|
|
(1 row)
|
|
|
|
select '1.e1'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
10
|
|
(1 row)
|
|
|
|
select '1a'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "1a" of jsonpath input
|
|
LINE 1: select '1a'::jsonpath;
|
|
^
|
|
select '1e'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "1e" of jsonpath input
|
|
LINE 1: select '1e'::jsonpath;
|
|
^
|
|
select '1.e'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "1.e" of jsonpath input
|
|
LINE 1: select '1.e'::jsonpath;
|
|
^
|
|
select '1.2a'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "1.2a" of jsonpath input
|
|
LINE 1: select '1.2a'::jsonpath;
|
|
^
|
|
select '1.2e'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "1.2e" of jsonpath input
|
|
LINE 1: select '1.2e'::jsonpath;
|
|
^
|
|
select '1.2.e'::jsonpath;
|
|
jsonpath
|
|
-----------
|
|
(1.2)."e"
|
|
(1 row)
|
|
|
|
select '(1.2).e'::jsonpath;
|
|
jsonpath
|
|
-----------
|
|
(1.2)."e"
|
|
(1 row)
|
|
|
|
select '1e3'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
1000
|
|
(1 row)
|
|
|
|
select '1.e3'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
1000
|
|
(1 row)
|
|
|
|
select '1.e3.e'::jsonpath;
|
|
jsonpath
|
|
------------
|
|
(1000)."e"
|
|
(1 row)
|
|
|
|
select '1.e3.e4'::jsonpath;
|
|
jsonpath
|
|
-------------
|
|
(1000)."e4"
|
|
(1 row)
|
|
|
|
select '1.2e3'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
1200
|
|
(1 row)
|
|
|
|
select '1.2e3a'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "1.2e3a" of jsonpath input
|
|
LINE 1: select '1.2e3a'::jsonpath;
|
|
^
|
|
select '1.2.e3'::jsonpath;
|
|
jsonpath
|
|
------------
|
|
(1.2)."e3"
|
|
(1 row)
|
|
|
|
select '(1.2).e3'::jsonpath;
|
|
jsonpath
|
|
------------
|
|
(1.2)."e3"
|
|
(1 row)
|
|
|
|
select '1..e'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
(1)."e"
|
|
(1 row)
|
|
|
|
select '1..e3'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
(1)."e3"
|
|
(1 row)
|
|
|
|
select '(1.).e'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
(1)."e"
|
|
(1 row)
|
|
|
|
select '(1.).e3'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
(1)."e3"
|
|
(1 row)
|
|
|
|
select '1?(2>3)'::jsonpath;
|
|
jsonpath
|
|
-------------
|
|
(1)?(2 > 3)
|
|
(1 row)
|
|
|
|
-- nondecimal
|
|
select '0b100101'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
37
|
|
(1 row)
|
|
|
|
select '0o273'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
187
|
|
(1 row)
|
|
|
|
select '0x42F'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
1071
|
|
(1 row)
|
|
|
|
-- error cases
|
|
select '0b'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "0b" of jsonpath input
|
|
LINE 1: select '0b'::jsonpath;
|
|
^
|
|
select '1b'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "1b" of jsonpath input
|
|
LINE 1: select '1b'::jsonpath;
|
|
^
|
|
select '0b0x'::jsonpath;
|
|
ERROR: syntax error at end of jsonpath input
|
|
LINE 1: select '0b0x'::jsonpath;
|
|
^
|
|
select '0o'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "0o" of jsonpath input
|
|
LINE 1: select '0o'::jsonpath;
|
|
^
|
|
select '1o'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "1o" of jsonpath input
|
|
LINE 1: select '1o'::jsonpath;
|
|
^
|
|
select '0o0x'::jsonpath;
|
|
ERROR: syntax error at end of jsonpath input
|
|
LINE 1: select '0o0x'::jsonpath;
|
|
^
|
|
select '0x'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "0x" of jsonpath input
|
|
LINE 1: select '0x'::jsonpath;
|
|
^
|
|
select '1x'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "1x" of jsonpath input
|
|
LINE 1: select '1x'::jsonpath;
|
|
^
|
|
select '0x0y'::jsonpath;
|
|
ERROR: syntax error at end of jsonpath input
|
|
LINE 1: select '0x0y'::jsonpath;
|
|
^
|
|
-- underscores
|
|
select '1_000_000'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
1000000
|
|
(1 row)
|
|
|
|
select '1_2_3'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
123
|
|
(1 row)
|
|
|
|
select '0x1EEE_FFFF'::jsonpath;
|
|
jsonpath
|
|
-----------
|
|
518979583
|
|
(1 row)
|
|
|
|
select '0o2_73'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
187
|
|
(1 row)
|
|
|
|
select '0b10_0101'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
37
|
|
(1 row)
|
|
|
|
select '1_000.000_005'::jsonpath;
|
|
jsonpath
|
|
-------------
|
|
1000.000005
|
|
(1 row)
|
|
|
|
select '1_000.'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
1000
|
|
(1 row)
|
|
|
|
select '.000_005'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
0.000005
|
|
(1 row)
|
|
|
|
select '1_000.5e0_1'::jsonpath;
|
|
jsonpath
|
|
----------
|
|
10005
|
|
(1 row)
|
|
|
|
-- error cases
|
|
select '_100'::jsonpath;
|
|
ERROR: syntax error at end of jsonpath input
|
|
LINE 1: select '_100'::jsonpath;
|
|
^
|
|
select '100_'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "100_" of jsonpath input
|
|
LINE 1: select '100_'::jsonpath;
|
|
^
|
|
select '100__000'::jsonpath;
|
|
ERROR: syntax error at end of jsonpath input
|
|
LINE 1: select '100__000'::jsonpath;
|
|
^
|
|
select '_1_000.5'::jsonpath;
|
|
ERROR: syntax error at end of jsonpath input
|
|
LINE 1: select '_1_000.5'::jsonpath;
|
|
^
|
|
select '1_000_.5'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "1_000_" of jsonpath input
|
|
LINE 1: select '1_000_.5'::jsonpath;
|
|
^
|
|
select '1_000._5'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "1_000._" of jsonpath input
|
|
LINE 1: select '1_000._5'::jsonpath;
|
|
^
|
|
select '1_000.5_'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "1_000.5_" of jsonpath input
|
|
LINE 1: select '1_000.5_'::jsonpath;
|
|
^
|
|
select '1_000.5e_1'::jsonpath;
|
|
ERROR: trailing junk after numeric literal at or near "1_000.5e" of jsonpath input
|
|
LINE 1: select '1_000.5e_1'::jsonpath;
|
|
^
|
|
-- underscore after prefix not allowed in JavaScript (but allowed in SQL)
|
|
select '0b_10_0101'::jsonpath;
|
|
ERROR: syntax error at end of jsonpath input
|
|
LINE 1: select '0b_10_0101'::jsonpath;
|
|
^
|
|
select '0o_273'::jsonpath;
|
|
ERROR: syntax error at end of jsonpath input
|
|
LINE 1: select '0o_273'::jsonpath;
|
|
^
|
|
select '0x_42F'::jsonpath;
|
|
ERROR: syntax error at end of jsonpath input
|
|
LINE 1: select '0x_42F'::jsonpath;
|
|
^
|
|
-- test non-error-throwing API
|
|
SELECT str as jsonpath,
|
|
pg_input_is_valid(str,'jsonpath') as ok,
|
|
errinfo.sql_error_code,
|
|
errinfo.message,
|
|
errinfo.detail,
|
|
errinfo.hint
|
|
FROM unnest(ARRAY['$ ? (@ like_regex "pattern" flag "smixq")'::text,
|
|
'$ ? (@ like_regex "pattern" flag "a")',
|
|
'@ + 1',
|
|
'00',
|
|
'1a']) str,
|
|
LATERAL pg_input_error_info(str, 'jsonpath') as errinfo;
|
|
jsonpath | ok | sql_error_code | message | detail | hint
|
|
-------------------------------------------+----+----------------+-----------------------------------------------------------------------+----------------------------------------------------------+------
|
|
$ ? (@ like_regex "pattern" flag "smixq") | t | | | |
|
|
$ ? (@ like_regex "pattern" flag "a") | f | 42601 | invalid input syntax for type jsonpath | Unrecognized flag character "a" in LIKE_REGEX predicate. |
|
|
@ + 1 | f | 42601 | @ is not allowed in root expressions | |
|
|
00 | f | 42601 | trailing junk after numeric literal at or near "00" of jsonpath input | |
|
|
1a | f | 42601 | trailing junk after numeric literal at or near "1a" of jsonpath input | |
|
|
(5 rows)
|
|
|