Thread: query to get the list of key (reserverd) words?

query to get the list of key (reserverd) words?

From
Bill Moran
Date:
I'm in the unenviable position of needing to check various input to
ensure that it doesn't contain any PostgreSQL/SQL key words/reserved
words.

The initial implementation simply made a copy of this table:
http://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html#KEYWORDS-TABLE
into a static array in the code.  Obviously, this is non-optimal
because it becomes a manual chore to ensure the list is up to date
any time new PG releases are made.

Is there a pg_* or other table in the database that I can query for this
list?  Or some other automated method that can be employed?

--
Bill Moran
http://www.potentialtech.com
http://people.collaborativefusion.com/~wmoran/

Re: query to get the list of key (reserverd) words?

From
Peter Geoghegan
Date:
On 4 August 2011 13:53, Bill Moran <wmoran@potentialtech.com> wrote:
> Is there a pg_* or other table in the database that I can query for this
> list?  Or some other automated method that can be employed?

All keywords are listed in src/backend/parser/gram.y:

/* ordinary key words in alphabetical order */
%token <keyword> ABORT_P ABSOLUTE_P ACCESS ACTION ADD_P ADMIN AFTER
        AGGREGATE ALL ALSO ALTER ALWAYS ANALYSE ANALYZE AND ANY ARRAY AS ASC
        ASSERTION ASSIGNMENT ASYMMETRIC AT ATTRIBUTE AUTHORIZATION

        BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT
        BOOLEAN_P BOTH BY

*** SNIP ***


--
Peter Geoghegan       http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training and Services

Re: query to get the list of key (reserverd) words?

From
Tom Lane
Date:
Bill Moran <wmoran@potentialtech.com> writes:
> Is there a pg_* or other table in the database that I can query for this
> list?  Or some other automated method that can be employed?

In recent versions, "select * from pg_get_keywords()"

            regards, tom lane

Re: query to get the list of key (reserverd) words?

From
Bill Moran
Date:
In response to Tom Lane <tgl@sss.pgh.pa.us>:

> Bill Moran <wmoran@potentialtech.com> writes:
> > Is there a pg_* or other table in the database that I can query for this
> > list?  Or some other automated method that can be employed?
>
> In recent versions, "select * from pg_get_keywords()"

That's fantastic ... exactly what I needed to make this easy!  Thanks.

--
Bill Moran
http://www.potentialtech.com
http://people.collaborativefusion.com/~wmoran/

Re: query to get the list of key (reserverd) words?

From
"Igor Neyman"
Date:

> -----Original Message-----
> From: Bill Moran [mailto:wmoran@potentialtech.com]
> Sent: Thursday, August 04, 2011 8:53 AM
> To: pgsql-general@postgresql.org
> Subject: query to get the list of key (reserverd) words?
>
>
> I'm in the unenviable position of needing to check various input to
> ensure that it doesn't contain any PostgreSQL/SQL key words/reserved
> words.
>
> The initial implementation simply made a copy of this table:
> http://www.postgresql.org/docs/8.3/static/sql-keywords-
> appendix.html#KEYWORDS-TABLE
> into a static array in the code.  Obviously, this is non-optimal
> because it becomes a manual chore to ensure the list is up to date
> any time new PG releases are made.
>
> Is there a pg_* or other table in the database that I can query for
> this
> list?  Or some other automated method that can be employed?
>
> --
> Bill Moran
> http://www.potentialtech.com
> http://people.collaborativefusion.com/~wmoran/

Use pg_get_keywords(OUT word text, OUT catcode "char", OUT catdesc text)

Regards,
Igor Neyman