Re: A really subtle lexer bug - Mailing list pgsql-hackers

From Tom Lane
Subject Re: A really subtle lexer bug
Date
Msg-id 4515.1535051153@sss.pgh.pa.us
Whole thread Raw
In response to Re: A really subtle lexer bug  (Andrew Gierth <andrew@tao11.riddles.org.uk>)
List pgsql-hackers
Andrew Gierth <andrew@tao11.riddles.org.uk> writes:
> Here's what I will push unless there's something important I missed.

Stylistic nitpick: I don't especially like "continue" as the body of
a for-loop.  How about instead of this:

                for (nchars--;
                     nchars > 1 &&
                     (yytext[nchars - 1] == '+' ||
                      yytext[nchars - 1] == '-');
                     nchars--)
                    continue;

do this:

                do {
                    nchars--;
                } while (nchars > 1 &&
                         (yytext[nchars - 1] == '+' ||
                          yytext[nchars - 1] == '-'));

That's a clearer separation between loop action and loop test, and
it makes it more obvious that you're relying on the loop condition
to be true at the start.

Also, I'm not entirely convinced that replacing the strchr() with
a handmade equivalent is a good idea.  Some versions of strchr()
are pretty quick.

No objections beyond that.

            regards, tom lane


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: [HACKERS] Optional message to user when terminating/cancelling backend
Next
From: Peter Eisentraut
Date:
Subject: JIT explain output