[PATCH] problem with DatabaseMetaData and mixed case table names

From: Giuseppe Sacco <giuseppe(at)eppesuigoccas(dot)homedns(dot)org>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: [PATCH] problem with DatabaseMetaData and mixed case table names
Date: 2005-08-08 16:20:43
Message-ID: 1123518043.6487.4.camel@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Hi pgsql developers,
today I found a problem using the latest version of the driver, from
CVS. This is an example that shows the problem:

---------------------------------------------------------
Connection c = ...;
Statement s = c.createStatement();

s.execute("create table MyTable ( PK numeric(10), primary key(pk))");

DatabaseMetaData md = c.getMetaData();
ResultSet rs = md.getPrimaryKeys(null,null, "MyTable")

while (rs.next())
System.out.println("table: \"" + rs.getString("TABLE_NAME") +
"\", column: \"" + rs.getString("COLUMN_NAME") + "\".");

rs.close();
s.close();
c.close();
---------------------------------------------------------

The resultset is empty, while it should contain a line for the
"PK" field.

If I lowercase the table name in «getPrimaryKeys» call than everything
works.
My question is: how do I know that postgresql changed my table name?

The solution I propose is, since it seems that postgresql always store
relation names in lowercase letters, to change the jdbc implementation
of all methods like «getPrimaryKeys» in order to pass lowercase relation
names to the backend.

The proposed patch change «escapeQuotes» method that is used for table
names, column names, schema names, type names, table name patters,
column name patterns, schema name patters and type name patterns.

The changed method return a lowercase string, that is thereafter used
in sql statements with '=' and 'like' operators.

Is this the right way to solve the problem?

Thanks,
Giuseppe

Attachment Content-Type Size
pgsql-lowercase.diff text/x-patch 388 bytes

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Kris Jurka 2005-08-08 21:55:30 Re: [PATCH] problem with DatabaseMetaData and mixed case
Previous Message Jiangyi 2005-08-08 11:59:25 get question mark with Chinese/Japanese character ?