diff --git a/src/backend/utils/adt/jsonpath_scan.l b/src/backend/utils/adt/jsonpath_scan.l index 4b913c3bee..12ef81b308 100644 --- a/src/backend/utils/adt/jsonpath_scan.l +++ b/src/backend/utils/adt/jsonpath_scan.l @@ -80,9 +80,9 @@ any [^\?\%\$\.\[\]\{\}\(\)\|\&\!\=\<\>\@\#\,\*:\-\+\/\\\"\' \t\n\r\f] blank [ \t\n\r\f] digit [0-9] -integer {digit}+ -decimal {digit}*\.{digit}+ -decimalfail {digit}+\. +integer (0|[1-9]{digit}*) +decimal {integer}\.{digit}+ +decimalfail {integer}\. real ({integer}|{decimal})[Ee][-+]?{digit}+ realfail1 ({integer}|{decimal})[Ee] realfail2 ({integer}|{decimal})[Ee][-+] diff --git a/src/test/regress/expected/jsonpath.out b/src/test/regress/expected/jsonpath.out index b7de491503..a99643f902 100644 --- a/src/test/regress/expected/jsonpath.out +++ b/src/test/regress/expected/jsonpath.out @@ -547,23 +547,20 @@ select '$ ? (@.a < +1)'::jsonpath; (1 row) select '$ ? (@.a < .1)'::jsonpath; - jsonpath ------------------ - $?(@."a" < 0.1) -(1 row) - +ERROR: bad jsonpath representation +LINE 1: select '$ ? (@.a < .1)'::jsonpath; + ^ +DETAIL: syntax error, unexpected '.' at or near "." select '$ ? (@.a < -.1)'::jsonpath; - jsonpath ------------------- - $?(@."a" < -0.1) -(1 row) - +ERROR: bad jsonpath representation +LINE 1: select '$ ? (@.a < -.1)'::jsonpath; + ^ +DETAIL: syntax error, unexpected '.' at or near "." select '$ ? (@.a < +.1)'::jsonpath; - jsonpath ------------------ - $?(@."a" < 0.1) -(1 row) - +ERROR: bad jsonpath representation +LINE 1: select '$ ? (@.a < +.1)'::jsonpath; + ^ +DETAIL: syntax error, unexpected '.' at or near "." select '$ ? (@.a < 0.1)'::jsonpath; jsonpath ----------------- @@ -619,23 +616,20 @@ select '$ ? (@.a < +1e1)'::jsonpath; (1 row) select '$ ? (@.a < .1e1)'::jsonpath; - jsonpath ---------------- - $?(@."a" < 1) -(1 row) - +ERROR: bad jsonpath representation +LINE 1: select '$ ? (@.a < .1e1)'::jsonpath; + ^ +DETAIL: syntax error, unexpected '.' at or near "." select '$ ? (@.a < -.1e1)'::jsonpath; - jsonpath ----------------- - $?(@."a" < -1) -(1 row) - +ERROR: bad jsonpath representation +LINE 1: select '$ ? (@.a < -.1e1)'::jsonpath; + ^ +DETAIL: syntax error, unexpected '.' at or near "." select '$ ? (@.a < +.1e1)'::jsonpath; - jsonpath ---------------- - $?(@."a" < 1) -(1 row) - +ERROR: bad jsonpath representation +LINE 1: select '$ ? (@.a < +.1e1)'::jsonpath; + ^ +DETAIL: syntax error, unexpected '.' at or near "." select '$ ? (@.a < 0.1e1)'::jsonpath; jsonpath --------------- @@ -691,23 +685,20 @@ select '$ ? (@.a < +1e-1)'::jsonpath; (1 row) select '$ ? (@.a < .1e-1)'::jsonpath; - jsonpath ------------------- - $?(@."a" < 0.01) -(1 row) - +ERROR: bad jsonpath representation +LINE 1: select '$ ? (@.a < .1e-1)'::jsonpath; + ^ +DETAIL: syntax error, unexpected '.' at or near "." select '$ ? (@.a < -.1e-1)'::jsonpath; - jsonpath -------------------- - $?(@."a" < -0.01) -(1 row) - +ERROR: bad jsonpath representation +LINE 1: select '$ ? (@.a < -.1e-1)'::jsonpath; + ^ +DETAIL: syntax error, unexpected '.' at or near "." select '$ ? (@.a < +.1e-1)'::jsonpath; - jsonpath ------------------- - $?(@."a" < 0.01) -(1 row) - +ERROR: bad jsonpath representation +LINE 1: select '$ ? (@.a < +.1e-1)'::jsonpath; + ^ +DETAIL: syntax error, unexpected '.' at or near "." select '$ ? (@.a < 0.1e-1)'::jsonpath; jsonpath ------------------ @@ -763,23 +754,20 @@ select '$ ? (@.a < +1e+1)'::jsonpath; (1 row) select '$ ? (@.a < .1e+1)'::jsonpath; - jsonpath ---------------- - $?(@."a" < 1) -(1 row) - +ERROR: bad jsonpath representation +LINE 1: select '$ ? (@.a < .1e+1)'::jsonpath; + ^ +DETAIL: syntax error, unexpected '.' at or near "." select '$ ? (@.a < -.1e+1)'::jsonpath; - jsonpath ----------------- - $?(@."a" < -1) -(1 row) - +ERROR: bad jsonpath representation +LINE 1: select '$ ? (@.a < -.1e+1)'::jsonpath; + ^ +DETAIL: syntax error, unexpected '.' at or near "." select '$ ? (@.a < +.1e+1)'::jsonpath; - jsonpath ---------------- - $?(@."a" < 1) -(1 row) - +ERROR: bad jsonpath representation +LINE 1: select '$ ? (@.a < +.1e+1)'::jsonpath; + ^ +DETAIL: syntax error, unexpected '.' at or near "." select '$ ? (@.a < 0.1e+1)'::jsonpath; jsonpath --------------- @@ -823,11 +811,10 @@ select '0'::jsonpath; (1 row) select '00'::jsonpath; - jsonpath ----------- - 0 -(1 row) - +ERROR: bad jsonpath representation +LINE 1: select '00'::jsonpath; + ^ +DETAIL: syntax error, unexpected IDENT_P at end of input select '0.0'::jsonpath; jsonpath ----------