Re: Sanding down some edge cases for PL/pgSQL reserved words

Pavel Stehule <pavel.stehule@gmail.com>

From: Pavel Stehule <pavel.stehule@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-hackers@lists.postgresql.org, Jan Behrens <jbe-mlist@magnetkern.de>
Date: 2025-06-10T04:40:42Z
Lists: pgsql-hackers
Hi


>
> 1. AFAICS, there is no real reason for STRICT to be a reserved
> rather than unreserved PL/pgSQL keyword, and for that matter not
> EXECUTE either.  Making them unreserved does allow some ambiguity,
> but I don't think there's any surprises in how that ambiguity
> would be resolved; and certainly we've preferred ambiguity over
> introducing new reserved keywords in PL/pgSQL before.  I think
> these two just escaped that treatment by dint of being ancient.
>
>
I checked other reserved keywords and I didn't see any reason to be
reserved keywords
for K_TO, K_NOT.

K_FOREACH, and K_WHILE are reserved probably because are used after
opt_loop_label - but it is not necessary

Other keywords are used as some delimiter or as protection against parser's
conflicts.

Regards

Pavel

Commits

  1. Improve error report for PL/pgSQL reserved word used as a field name.

  2. De-reserve keywords EXECUTE and STRICT in PL/pgSQL.