Re: pure parsers and reentrant scanners
Andreas Karlsson <andreas@proxel.se>
From: Andreas Karlsson <andreas@proxel.se>
To: Peter Eisentraut <peter@eisentraut.org>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-12-17T00:46:18Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Return yyparse() result not via global variable
- 473a575e0597 18.0 landed
-
Remove flex version checks
- 0869ea43e9c2 18.0 landed
-
Drop warning-free support for Flex 2.5.35
- 6fdd5d956343 18.0 landed
-
plpgsql: pure parser and reentrant scanner
- 7b27f5fd36cb 18.0 landed
-
flex code modernization: Replace YY_EXTRA_TYPE define with flex option
- b1ef48980ddd 18.0 landed
-
guc: reentrant scanner
- d663f150b5ed 18.0 landed
-
jsonpath scanner: reentrant scanner
- 2a7425d7eef9 18.0 landed
-
syncrep parser: pure parser and reentrant scanner
- db6856c9913f 18.0 landed
-
replication parser: pure parser and reentrant scanner
- e4a8fb8fefb9 18.0 landed
-
bootstrap: pure parser and reentrant scanner
- 3e4bacb17100 18.0 landed
-
Small whitespace improvement
- 399d0f1e11b5 18.0 landed
-
Prevent redeclaration of typedef yyscan_t
- 382092a0cd2c 18.0 landed
-
seg: pure parser and reentrant scanner
- 1f0de66ea2a5 18.0 landed
-
cube: pure parser and reentrant scanner
- 802fe923e3cd 18.0 landed
Attachments
- v2-0020-fixup-replication-parser-pure-parser-and-reentran.patch (text/x-patch) patch v2-0020
- v2-0021-fixup-replication-parser-pure-parser-and-reentran.patch (text/x-patch) patch v2-0021
- v2-0022-replication-parser-Use-flex-yyextra.patch (text/x-patch) patch v2-0022
On 12/16/24 8:39 AM, Peter Eisentraut wrote: > I'll leave it at this for now and wait for some reviews. I really like this work since it makes the code cleaner to read on top of paving the way for threading. Reviewed the patches and found a couple of issues. - Shouldn't yyext in syncrep_scanner_init() be allocated on the heap? Or at least on the stack but by the caller? - I think you have flipped the parameters of replication_yyerror(), see attached fixup patch. - Some white space issues fixed in an attached fixup patch. - Also fixed the static remaining variables in the replication parser in an attached patch. - There seems to be a lot left to do to make the plpgsql scanner actually re-entrant so I do not think it would makes sense to commit the patch which sets the re-entrant option before that is done. Andreas