Thread: pgsql: Get rid of backtracking in jsonpath_scan.l
Get rid of backtracking in jsonpath_scan.l Non-backtracking flex parsers work faster than backtracking ones. So, this commit gets rid of backtracking in jsonpath_scan.l. That required explicit handling of some cases as well as manual backtracking for some cases. More regression tests for numerics are added. Discussion: https://mail.google.com/mail/u/0?ik=a20b091faa&view=om&permmsgid=msg-f%3A1628425344167939063 Author: John Naylor, Nikita Gluknov, Alexander Korotkov Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/1d88a75c424664cc85f307a876cde85191d27272 Modified Files -------------- src/backend/utils/adt/Makefile | 1 + src/backend/utils/adt/jsonpath_scan.l | 56 +++-- src/test/regress/expected/jsonb_jsonpath.out | 2 +- src/test/regress/expected/jsonpath.out | 168 +++++++++++++++ src/test/regress/expected/jsonpath_encoding.out | 249 ++++++++++++++++++++++ src/test/regress/expected/jsonpath_encoding_1.out | 237 ++++++++++++++++++++ src/test/regress/parallel_schedule | 2 +- src/test/regress/serial_schedule | 1 + src/test/regress/sql/jsonb_jsonpath.sql | 2 +- src/test/regress/sql/jsonpath.sql | 30 +++ src/test/regress/sql/jsonpath_encoding.sql | 71 ++++++ 11 files changed, 795 insertions(+), 24 deletions(-)
On Mon, Mar 25, 2019 at 8:44 AM Alexander Korotkov <akorotkov@postgresql.org> wrote: > Discussion: https://mail.google.com/mail/u/0?ik=a20b091faa&view=om&permmsgid=msg-f%3A1628425344167939063 This is really a pretty evil link to include in a commit message. When I clicked on it, it logged me out of my gmail account. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
On Mon, Mar 25, 2019 at 3:56 PM Robert Haas <robertmhaas@gmail.com> wrote: > On Mon, Mar 25, 2019 at 8:44 AM Alexander Korotkov > <akorotkov@postgresql.org> wrote: > > Discussion: https://mail.google.com/mail/u/0?ik=a20b091faa&view=om&permmsgid=msg-f%3A1628425344167939063 > > This is really a pretty evil link to include in a commit message. > When I clicked on it, it logged me out of my gmail account. Oh, such a shameful oversight! That should be: https://postgr.es/m/CACPNZCuUXV3jEPFPsRw%2B4AKLvmO6CFWh3OwtH0CJv3w0oXnVoQ%40mail.gmail.com ------ Alexander Korotkov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
On 3/25/19 8:44 AM, Alexander Korotkov wrote: > Get rid of backtracking in jsonpath_scan.l > > Non-backtracking flex parsers work faster than backtracking ones. So, this > commit gets rid of backtracking in jsonpath_scan.l. That required explicit > handling of some cases as well as manual backtracking for some cases. More > regression tests for numerics are added. jacana appears to be having trouble with this: 2019-03-26 00:49:02.208 EDT [5c99ae9e.20cc:6] LOG: server process (PID 8368) was terminated by exception 0xC0000028 2019-03-26 00:49:02.208 EDT [5c99ae9e.20cc:7] DETAIL: Failed process was running: select '$ ? (@ like_regex "pattern" flag"a")'::jsonpath; 2019-03-26 00:49:02.208 EDT [5c99ae9e.20cc:8] HINT: See C include file "ntstatus.h" for a description of the hexadecimalvalue. 2019-03-26 00:49:02.208 EDT [5c99ae9e.20cc:9] LOG: terminating any other active server processes cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services