Re: A really subtle lexer bug
От | Tom Lane |
---|---|
Тема | Re: A really subtle lexer bug |
Дата | |
Msg-id | 18470.1535036115@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: A really subtle lexer bug (Andrew Gierth <andrew@tao11.riddles.org.uk>) |
Ответы |
Re: A really subtle lexer bug
|
Список | pgsql-hackers |
Andrew Gierth <andrew@tao11.riddles.org.uk> writes: > "Andrew" == Andrew Gierth <andrew@tao11.riddles.org.uk> writes: > Andrew> I guess the fix is to extend the existing special case code > Andrew> that checks for one character left after removing trailing [+-] > Andrew> and also check for the two-character ops "<>" ">=" "<=" "=>" > Andrew> "!=". > Patch attached. > This fixes two bugs: first the mis-lexing of two-char ops as mentioned > originally; second, the O(N^3) lexing time of strings of - or + > characters is reduced to O(N^2) (in practice it's better than O(N^2) > once N gets large because the bison stack gets blown out, ending the > loop early). Looks reasonable offhand (didn't test). A couple of thoughts: * Some regression tests exercising these code paths might be a good thing. * There should likely be a comment near where EQUALS_GREATER and friends are defined, pointing out that if we add any more multi-character operators with special precedences, this code has to be taught about them. regards, tom lane
В списке pgsql-hackers по дате отправления: