pgsql: Make pgbench's expression lexer reentrant.
Make pgbench's expression lexer reentrant.
This is a necessary preliminary step for making it play with psqlscan.l
given the way I set up the lexer input-buffer sharing mechanism in commit
0ea9efbe9ec1bf07.
I've not tried to make it *actually* reentrant; there's still some static
variables laying about. But flex thinks it's reentrant, and that's what
counts.
In support of that, fix exprparse.y to pass through the yyscan_t from the
caller. Also do some minor code beautification, like not casting away
const.
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/429ee5a822db0e8faf669d77c810f1eeaaff1ab4
Modified Files
--------------
src/bin/pgbench/exprparse.y | 57 ++++++++++++++++++++-----------
src/bin/pgbench/exprscan.l | 83 ++++++++++++++++++++++++++++-----------------
src/bin/pgbench/pgbench.c | 15 +++++---
src/bin/pgbench/pgbench.h | 26 +++++++++-----
4 files changed, 117 insertions(+), 64 deletions(-)
--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers
Hi Tom,
On 2016-03-19 20:35:48 +0000, Tom Lane wrote:
Make pgbench's expression lexer reentrant.
This is a necessary preliminary step for making it play with psqlscan.l
given the way I set up the lexer input-buffer sharing mechanism in commit
0ea9efbe9ec1bf07.I've not tried to make it *actually* reentrant; there's still some static
variables laying about. But flex thinks it's reentrant, and that's what
counts.In support of that, fix exprparse.y to pass through the yyscan_t from the
caller. Also do some minor code beautification, like not casting away
const.
This appears to have caused build failures on gaur, prairiedog, and
pademelon
http://pgbuildfarm.org/cgi-bin/show_log.pl?nm=gaur&dt=2016-03-20%2005%3A53%3A21
http://pgbuildfarm.org/cgi-bin/show_log.pl?nm=prairiedog&dt=2016-03-19%2023%3A21%3A23
http://pgbuildfarm.org/cgi-bin/show_log.pl?nm=pademelon&dt=2016-03-20%2007%3A59%3A38
Not sure you saw those already.
- Andres
--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers
Andres Freund <andres@anarazel.de> writes:
On 2016-03-19 20:35:48 +0000, Tom Lane wrote:
Make pgbench's expression lexer reentrant.
This appears to have caused build failures on gaur, prairiedog, and
pademelon
Yeah, I know. I have a plan for fixing it but wanted to get the
main pgbench parsing rewrite pushed first.
The problem seems to be that the ancient bison version these critters
are using has a bug for the combination of a reentrant lexer and a
non-reentrant parser. Which it's not so surprising they'd not have
tested. I think it won't be too painful to dodge this by making the
parser reentrant too (bison %pure-parser), and will look into that
this evening.
regards, tom lane
--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers