| --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) |
| |