Обсуждение: BUG #13502: parser misconstrues table alias

Поиск
Список
Период
Сортировка

BUG #13502: parser misconstrues table alias

От
floriparob@gmail.com
Дата:
The following bug has been logged on the website:

Bug reference:      13502
Logged by:          Robert Stone
Email address:      floriparob@gmail.com
PostgreSQL version: 9.4.4
Operating system:   Debian stretch/sid
Description:

I aliased a table using the letters TO and the parser pulled an error.
Happens in psql as well as the JDBC driver.
By altering the table alias to TOL overcame the problem.

dinkumerp=# SELECT TO.tol_id, TO.lang_code, SL.lang_name, TO.no_list_text,
TO.table_comment FROM supported_languages SL, tables_opt_list TO  WHERE
TO.lang_code = SL.lang_code AND TO.table_key = 'COA' ORDER BY TO.lang_code;
ERROR:  syntax error at or near "TO"
LINE 1: SELECT TO.tol_id, TO.lang_code, SL.lang_name, TO.no_list_tex...


 PostgreSQL 9.4.4 on x86_64-unknown-linux-gnu, compiled by gcc-4.9.real
(Debian 4.9.2-20) 4.9.2, 64-bit
(1 row)

Re: BUG #13502: parser misconstrues table alias

От
Tom Lane
Дата:
floriparob@gmail.com writes:
> I aliased a table using the letters TO and the parser pulled an error.

TO is a fully reserved word.  See
http://www.postgresql.org/docs/9.4/static/sql-keywords-appendix.html

            regards, tom lane

Re: BUG #13502: parser misconstrues table alias

От
"David G. Johnston"
Дата:
On Wednesday, July 15, 2015, <floriparob@gmail.com> wrote:

> The following bug has been logged on the website:
>
> Bug reference:      13502
> Logged by:          Robert Stone
> Email address:      floriparob@gmail.com <javascript:;>
> PostgreSQL version: 9.4.4
> Operating system:   Debian stretch/sid
> Description:
>
> I aliased a table using the letters TO and the parser pulled an error.
> Happens in psql as well as the JDBC driver.
> By altering the table alias to TOL overcame the problem.
>
>
Since TO is fully reserved in the SQL syntax, including PostgreSQL's
implementation, this is not surprising.  If you really want to use those
letters you need to double-quite them.  "TO".column_name.

 http://www.postgresql.org/docs/9.4/interactive/sql-keywords-appendix.html

David J.