Table names in upper case

Lists: pgsql-docs
From: tosites(at)me(dot)com
To: pgsql-docs(at)postgresql(dot)org
Subject: Table names in upper case
Date: 2016-10-12 18:12:33
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-docs

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/9.6/static/sql-syntax-lexical.html
Description:

Although this documentation says that "Key words and unquoted identifiers
are case insensitive." it is not possible to use table or column names in
upper case.

If the table or column name was in upper case it is necessary use quotes to
Postgres accept. Exactly the opposite case showed at documentation.

For example:

CREATE TABLE CLIENT(ID INTEGER, NAME TEXT);

SELECT * FROM CLIENT; -- an error will be launched

SELECT * FROM "CLIENT"; -- works

But:

CREATE TABLE client(id INTEGER, name TEXT);

SELECT * FROM CLIENT; -- works

It is, at least, strange.

Cheers.


From: Pantelis Theodosiou <ypercube(at)gmail(dot)com>
To: tosites(at)me(dot)com
Cc: pgsql-docs(at)postgresql(dot)org
Subject: Re: Table names in upper case
Date: 2016-10-13 07:41:44
Message-ID: CAE3TBxyjqaQkg55pKdq12LynGwi9a2tU1wk_c3xn=WyO-fCa9A@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-docs

On Wed, Oct 12, 2016 at 7:12 PM, <tosites(at)me(dot)com> wrote:

> The following documentation comment has been logged on the website:
>
> Page: https://www.postgresql.org/docs/9.6/static/sql-syntax-lexical.html
> Description:
>
> Although this documentation says that &quot;Key words and unquoted
> identifiers
> are case insensitive.&quot; it is not possible to use table or column
> names in
> upper case.
>
> If the table or column name was in upper case it is necessary use quotes to
> Postgres accept. Exactly the opposite case showed at documentation.
>
> For example:
>
> CREATE TABLE CLIENT(ID INTEGER, NAME TEXT);
>
> SELECT * FROM CLIENT; -- an error will be launched
>
> SELECT * FROM &quot;CLIENT&quot;; -- works
>

Are you sure about the CREATE TABLE statement you used? Which version and
OS?

Because this is what I get, which matches exactly the documented behaviour
(9.5.4, Ubuntu):

x=# CREATE TABLE CLIENT(ID INTEGER, NAME TEXT);
CREATE TABLE
x=# select * from client ;
id | name
----+------
(0 rows)

x=# select * from "CLIENT" ;
ERROR: relation "CLIENT" does not exist
LINE 1: select * from "CLIENT" ;
^
x=#

Pantelis Theodosiou