A variable name matching a statement-introducing keyword, such as "comment" or "update", caused parse failures if one tried to write a statement using that keyword. Commit bb1b8f69 already addressed this scenario for the case of variable names matching unreserved plpgsql keywords, but we didn't think about unreserved core-grammar keywords. The same heuristic (viz, it can't be a variable name unless the next token is assignment or '[') should work fine for that case too, and as a bonus the code gets shorter and less duplicative.
Per bug #15555 from Feike Steenbergen. Since this hasn't been complained of before, and is easily worked around anyway, I won't risk a back-patch.
4879a5172a Support plpgsql variable names that conflict with unreserved SQL keywords.
src/pl/plpgsql/src/pl_comp.c | 13 +++---
src/pl/plpgsql/src/pl_scanner.c | 74 +++++++++++++++--------------------
src/pl/plpgsql/src/plpgsql.h | 2 +-
src/test/regress/expected/plpgsql.out | 21 ++++++++++
src/test/regress/sql/plpgsql.sql | 14 +++++++
5 files changed, 75 insertions(+), 49 deletions(-)