agora inbox for pgsql-hackers@postgresql.org
help / color / mirror / Atom feedFrom: Nikita Glukhov <n.gluhov@postgrespro.ru>
Subject: [PATCH 3/3] Fix parsing of numbers in jsonpath
Date: Fri, 22 Mar 2019 14:38:46 +0300
---
src/backend/utils/adt/jsonpath_scan.l | 6 +-
src/test/regress/expected/jsonpath.out | 117 +++++++++++++++------------------
2 files changed, 55 insertions(+), 68 deletions(-)
diff --git a/src/backend/utils/adt/jsonpath_scan.l b/src/backend/utils/adt/jsonpath_scan.l
index 844ea5e..a6b67ea 100644
--- a/src/backend/utils/adt/jsonpath_scan.l
+++ b/src/backend/utils/adt/jsonpath_scan.l
@@ -77,9 +77,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 b7de491..a99643f 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
----------
--
2.7.4
--------------68C1DC32F98F12B744D01DE4--
view thread (3+ messages) latest in thread
Message-ID: <no-message-id-746207@localhost>
Permalink: ../../no-message-id-746207@localhost/
Also on: postgresql.org/message-id/no-message-id-746207@localhost
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: n.gluhov@postgrespro.ru
Subject: Re: [PATCH 3/3] Fix parsing of numbers in jsonpath
In-Reply-To: <no-message-id-746207@localhost>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox