Re: pure parsers and reentrant scanners
Peter Eisentraut <peter@eisentraut.org>
From: Peter Eisentraut <peter@eisentraut.org>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Cc: pgbuildfarm@rjuju.net, Andreas Karlsson <andreas@proxel.se>,
Tom Lane <tgl@sss.pgh.pa.us>
Date: 2025-01-09T07:55:29Z
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
- 0001-Drop-warning-free-support-for-flex-2.5.35.patch (text/plain) patch 0001
- 0002-Raise-minimum-flex-version-to-2.5.37.patch (text/plain) patch 0002
On 20.12.24 16:23, Tom Lane wrote: >> Ok, we can fix that, but maybe this is also a good moment to think about >> whether that is useful. I could not reproduce the issue with flex >> 2.5.39. I could find no download of flex 2.5.35. The github site only >> offers back to 2.5.39, the sourceforce site back to 2.5.36. lapwing >> says it's Debian 7.0, which went out of support in 2016 and out of >> super-duper-extended support in 2020. It also doesn't have a supported >> OpenSSL version anymore, and IIRC, it has a weird old compiler that >> occasionally gives bogus warnings. I think it's time to stop supporting >> this. > > OK, that's fair. I do see lapwing called out a lot in the commit log, > though it's not clear how much of that is about 32-bitness and how > much about old tools. It's surely still valuable to have i386 > machines in the buildfarm, but I agree that supporting unobtainable > tool versions is a bit much. Could we get that animal updated to > some newer OS version? > > Presumably, we should also rip out the existing yyget_column and > yyset_column kluges in > > src/backend/parser/scan.l: extern int core_yyget_column(yyscan_t yyscanner); > src/bin/psql/psqlscanslash.l: extern int slash_yyget_column(yyscan_t yyscanner); > src/bin/pgbench/exprscan.l: extern int expr_yyget_column(yyscan_t yyscanner); > src/fe_utils/psqlscan.l: extern int psql_yyget_column(yyscan_t yyscanner); All my flex-related patches are in now. Here is a patch that removes the workarounds for compiler warnings with flex 2.5.35. This ended up being a whole lot, including the whole fix-old-flex-code.pl script. The second patch contemplates raising the minimum required flex version, but what to? The most recent incrementing was exactly because 2.5.35 was the oldest in the buildfarm. The previous incrementings were apparently because certain features were required or some bugs had to be avoided. Options: - Leave at 2.5.35 as long as it's present in the buildfarm. - Set to 2.5.36 because it's the oldest that compiles without warnings. Also, the oldest you can still download from the flex sourceforge site. - Set to 2.5.37 because that's the next oldest in the buildfarm (for CentOS/RHEL 7, so it will stay around for a while). - Set to 2.5.34 because that's the oldest we actually require as of commit b1ef48980dd. - Remove version check, because these are all so old that no one cares anymore.