• Tom Lane's avatar
    Use %option bison-bridge in psql/pgbench lexers. · b6afae71
    Tom Lane authored
    The point of this change is to use %pure-parser in pgbench's exprparse.y.
    The immediate reason is that it turns out very ancient versions of bison
    have a bug with the combination of a reentrant lexer and non-reentrant
    parser.  We could consider dropping support for such ancient bisons; but
    considering that we might well need exprparse.y to be reentrant some day,
    it seems better to make it so right now than to move the portability
    goalposts.  (AFAICT there's no particular performance consequence to this
    change, either, so there's no good reason not to do it.)
    
    Now, %pure-parser assumes that the called lexer is built with %option
    bison-bridge.  Because we're assuming bitwise compatibility of yyscan_t
    (yyguts_t) data structures among all the psql/pgbench lexers, that
    requirement propagates back to psql's lexers as well.  But it's just a
    few lines of change on that side too; and if psqlscan.l is to set the
    baseline for a possibly-large family of lexers, it should err on the
    side of including not omitting useful features.
    b6afae71
psqlscanslash.l 17.4 KB