• Tom Lane's avatar
    Rethink flex flags for syncrep_scanner.l. · 5c837ddd
    Tom Lane authored
    Using flex's -i switch to achieve case-insensitivity is not a very safe
    practice, because the scanner's behavior may then depend on the locale
    that flex was invoked in.  In the particular example at hand, that's
    not academic: the possible matches for "FIRST" will be different in a
    Turkish locale than elsewhere.  Do it the hard way instead, as our
    other scanners do.
    
    Also, drop use of -b -CF -p, because this scanner is only used when
    parsing the contents of a GUC variable.  That's not done often, and
    the amount of text to be parsed can be expected to be trivial, so
    prioritizing scanner speed over code size seems like quite the wrong
    tradeoff.  Using flex's default optimization options reduces the
    size of syncrep_gram.o by more than 50%.
    
    The case-insensitivity problem is new in HEAD (cf commit 3901fd70).
    The poor choice of optimization flags exists also in 9.6, but it doesn't
    seem important enough to back-patch.
    
    Discussion: https://postgr.es/m/24403.1495225931@sss.pgh.pa.us
    5c837ddd
syncrep_scanner.l 3.12 KB