Re: Postgres 8.1.2, Java, JDO, and case sensitivity woes - Mailing list pgsql-general

From Matthew Hixson
Subject Re: Postgres 8.1.2, Java, JDO, and case sensitivity woes
Date
Msg-id 78DFA045-61D8-48C5-806F-8B65DBB69C34@poindextrose.org
Whole thread Raw
In response to Re: Postgres 8.1.2, Java, JDO, and case sensitivity woes  ("Roger Hand" <rhand@ragingnet.com>)
Responses Re: Postgres 8.1.2, Java, JDO, and case sensitivity woes
Re: Postgres 8.1.2, Java, JDO, and case sensitivity woes
List pgsql-general
The problem is that the JDO layer is looking for the table name in a
system table like so:

SELECT
n.nspname,c.relname,a.attname,a.atttypid,a.attnotnull,a.atttypmod,a.attl
en,a.attnum,def.adsrc,dsc.description  FROM pg_catalog.pg_namespace
n  JOIN pg_catalog.pg_class c ON (c.relnamespace = n.oid)  JOIN
pg_catalog.pg_attribute a ON (a.attrelid=c.oid)  LEFT JOIN
pg_catalog.pg_attrdef def ON (a.attrelid=def.adrelid AND a.attnum =
def.adnum)  LEFT JOIN pg_catalog.pg_description dsc ON
(c.oid=dsc.objoid AND a.attnum = dsc.objsubid)  LEFT JOIN
pg_catalog.pg_class dc ON (dc.oid=dsc.classoid AND
dc.relname='pg_class')  LEFT JOIN pg_catalog.pg_namespace dn ON
(dc.relnamespace=dn.oid AND dn.nspname='pg_catalog')  WHERE a.attnum
 > 0 AND NOT a.attisdropped  AND c.relname LIKE 'FOO'  AND a.attname
LIKE '%'  ORDER BY nspname,relname,attnum

That query returns nothing.  Changing FOO to foo returns the 4 rows
that the JDO layer is looking for.

So, on second thought its not a problem with case insensitive table
names, its a problem with the JDO layer looking for uppercase table
names listed in the system tables even though Postgres table names
are lowercase by default.  Completely different problems.

I renamed table foo to FOO, which makes the above query return
correctly, and now I see this in the log, later in the initialization:

LOG:  statement: PREPARE <unnamed> AS SELECT ns.helper AS ns_helper,
ns.name AS ns_name, ns.foo_id AS ns_foo_id, ns.title AS ns_title FROM
foo ns
ERROR:  relation "foo" does not exist

So, it would seem that table names are case insensitive in select
statements, but case sensitive in prepare statements.
   Can someone confirm or refute that?
   -M@


On Jan 27, 2006, at 3:59 PM, Roger Hand wrote:

> testdb=# CREATE TABLE foo (field_one int4);
> CREATE TABLE
>
> testdb=# INSERT INTO foo VALUES (1);
> INSERT 0 1
> testdb=# INSERT INTO foo VALUES (2);
> INSERT 0 1
>
> testdb=# SELECT * FROM foo;
>  field_one
> -----------
>          1
>          2
> (2 rows)
>
> testdb=# SELECT * FROM FOO;
>  field_one
> -----------
>          1
>          2
> (2 rows)
>
> -----Original Message-----
> From: pgsql-general-owner@postgresql.org
> [mailto:pgsql-general-owner@postgresql.org]On Behalf Of Matthew Hixson
> Sent: Friday, January 27, 2006 3:53 PM
> To: Postgres General
> Subject: [GENERAL] Postgres 8.1.2, Java, JDO, and case sensitivity
> woes
>
>
> I'm trying to get a large Java application which makes use of an
> Oracle JDO layer to work with Postgres.  Set aside for a moment the
> discussion of whether or not that is going to work.
>    What I have found is that different parts of this application are
> referring to a table in all uppercase and in other parts referring to
> the table all in lowercase.  Is there a way to configure Postgres so
> that it does not treat "FOO" and "foo" as two different tables?
>    Thanks,
>     -M@
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
>                http://www.postgresql.org/docs/faq
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings
>


pgsql-general by date:

Previous
From: Thomas Kellerer
Date:
Subject: Re: Postgres 8.1.2, Java, JDO, and case sensitivity woes
Next
From: Matthew Hixson
Date:
Subject: Re: Postgres 8.1.2, Java, JDO, and case sensitivity woes