| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
| Subject: | pgsql: Support plpgsql variable names that conflict with unreserved SQL |
| Date: | 2019-01-04 17:16:31 |
| Message-ID: | E1gfT5D-00088N-0o@gemulon.postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-committers |
Support plpgsql variable names that conflict with unreserved SQL keywords.
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
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/4879a5172af01dc05b6350dfa97ea1ac9a4c603c
Modified Files
--------------
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(-)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Alvaro Herrera | 2019-01-04 17:42:22 | pgsql: Rename macro to RELKIND_HAS_STORAGE |
| Previous Message | Peter Eisentraut | 2019-01-04 10:30:54 | pgsql: Make sort-test.py Python 3 compatible |