Support plpgsql variable names that conflict with unreserved SQL keywords

Enterprise / PostgreSQL - Tom Lane [sss.pgh.pa.us] - 4 January 2019 17:16 EST

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.

Discussion: https://postgr.es/m/15555-149bbd70ddc7b4b6@postgresql.org

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(-)

Upstream: git.postgresql.org


  • Share