BUG #15555: Syntax errors when using the COMMENT command in plpgsql and a "comment" variable

The Post Office <noreply@postgresql.org>

From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: feikesteenbergen@gmail.com
Date: 2018-12-17T09:10:12Z
Lists: pgsql-bugs
The following bug has been logged on the website:

Bug reference:      15555
Logged by:          Feike Steenbergen
Email address:      feikesteenbergen@gmail.com
PostgreSQL version: 11.1
Operating system:   CentOS Linux release 7.5.1804 (Core)
Description:        

Recently, I ran into an issue when trying to put comments on objects in
plpgsql DO block, for example the following:

DO $$
DECLARE
    "comment" text := 'This is a comment';
BEGIN
    COMMENT ON TABLE abc IS 'This is another comment';
END;
$$;

Generates the following error message:

ERROR:  42601: syntax error at or near "ON"
LINE 5:     COMMENT ON TABLE abc IS 'This is another comment';

Renaming the variable from "comment" to something else makes the problem go
away,
as well as wrapping the COMMENT command in an EXECUTE call;
It happens both when double quoting the identifier, or when omitting the
double
quotes.

For now I'll just avoid using comment as a variable name altogether, but I
was
surprised by this behaviour.

Kind regards,

Feike

Commits

  1. Support plpgsql variable names that conflict with unreserved SQL keywords.

  2. De-reserve most statement-introducing keywords in plpgsql.