Thread: BUG #2764: Capital letter in tables or columns not supported

BUG #2764: Capital letter in tables or columns not supported

From
"Ron Teitelbaum"
Date:
The following bug has been logged online:

Bug reference:      2764
Logged by:          Ron Teitelbaum
Email address:      ron@usmedrec.com
PostgreSQL version: 1.4.1
Operating system:   Windows
Description:        Capital letter in tables or columns not supported
Details:

I ran into a very weird problem that tured out to be a capital letter in the
table name or column name.  When trying to query a table with a capital
letter in the name I get error relation not defined.

I can get it to work with something like:
   select * from "zipCodes"

It appears to be completely case insensitive if the table is all lowercase.


I get a simular problem with capital letters in column names.  The error is
column not defined.

The table was created manually using PGAdmin.

Re: BUG #2764: Capital letter in tables or columns not

From
Reece Hart
Date:
On Fri, 2006-11-17 at 19:40 +0000, Ron Teitelbaum wrote:
> Description:        Capital letter in tables or columns not supported

Unquoted identifiers are always smashed down to lowercase. Quoted
identifiers are taken verbatim, including case.

This is not a bug: it's documented in
http://www.postgresql.org/docs/8.1/interactive/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS .  Oracle has the same behavior,
butuppercase unquoted identfiers. I seem to recall reading that the SQL spec requires that identifiers be treated as
oneor the other, but doesn't say which (upper or lower).  

rkh@csb-dev=> create temp table test (lccol text, Uccol text, ALLUCCOL
text, "lccol_q" text, "Uccol_q" text, "ALLUCCOL_q" text);
CREATE TABLE
Time: 233.815 ms

rkh@csb-dev=> \d test
    Table "pg_temp_1.test"
   Column   | Type | Modifiers
------------+------+-----------
 lccol      | text |
 uccol      | text |
 alluccol   | text |
 lccol_q    | text |
 Uccol_q    | text |
 ALLUCCOL_q | text |


-rEecE (take your pick on case)

--
Reece Hart, http://harts.net/reece/, GPG:0x25EC91A0
./universe -G 6.672e-11 -e 1.602e-19 -protonmass 1.673e-27 -uspres bush
kernel warning: universe consuming too many resources. Killing.
universe received SIGKILL due to catastrophic leadership. Try -uspres carter.

Re: BUG #2764: Capital letter in tables or columns not supported

From
"Jaime Casanova"
Date:
On 11/17/06, Ron Teitelbaum <ron@usmedrec.com> wrote:
>
> The following bug has been logged online:
>
> Bug reference:      2764
> Logged by:          Ron Teitelbaum
> Email address:      ron@usmedrec.com
> PostgreSQL version: 1.4.1
> Operating system:   Windows
> Description:        Capital letter in tables or columns not supported
> Details:
>
> I ran into a very weird problem that tured out to be a capital letter in the
> table name or column name.  When trying to query a table with a capital
> letter in the name I get error relation not defined.
>
> I can get it to work with something like:
>    select * from "zipCodes"
>
> It appears to be completely case insensitive if the table is all lowercase.
>
>

that's not a bug... if you create a table or column with capital
letters postgres transform it to lowercase...

if you don't want that you need to double quotes...

create table "Foo" (Col1 int);
select * from "Foo";

--
regards,
Jaime Casanova

"Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs and the universe trying
to produce bigger and better idiots.
So far, the universe is winning."
                                       Richard Cook

Re: BUG #2764: Capital letter in tables or columns not

From
Bruce Momjian
Date:
Jaime Casanova wrote:
> On 11/17/06, Ron Teitelbaum <ron@usmedrec.com> wrote:
> >
> > The following bug has been logged online:
> >
> > Bug reference:      2764
> > Logged by:          Ron Teitelbaum
> > Email address:      ron@usmedrec.com
> > PostgreSQL version: 1.4.1
> > Operating system:   Windows
> > Description:        Capital letter in tables or columns not supported
> > Details:
> >
> > I ran into a very weird problem that tured out to be a capital letter in the
> > table name or column name.  When trying to query a table with a capital
> > letter in the name I get error relation not defined.
> >
> > I can get it to work with something like:
> >    select * from "zipCodes"
> >
> > It appears to be completely case insensitive if the table is all lowercase.
> >
> >
>
> that's not a bug... if you create a table or column with capital
> letters postgres transform it to lowercase...
>
> if you don't want that you need to double quotes...
>
> create table "Foo" (Col1 int);
> select * from "Foo";

I added a mention of "capitalization" in the FAQ item on this:

    <H3 id="item4.21">4.21) Why are my table and column names not
    recognized in my query?  Why is capitalization not preserved?</H3>

--
  Bruce Momjian   bruce@momjian.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +