Обсуждение: pgsql: Get rid of backtracking in jsonpath_scan.l

Поиск
Список
Период
Сортировка

pgsql: Get rid of backtracking in jsonpath_scan.l

От
Alexander Korotkov
Дата:
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(-)


Re: pgsql: Get rid of backtracking in jsonpath_scan.l

От
Robert Haas
Дата:
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


Re: pgsql: Get rid of backtracking in jsonpath_scan.l

От
Alexander Korotkov
Дата:
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


Re: pgsql: Get rid of backtracking in jsonpath_scan.l

От
Andrew Dunstan
Дата:
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