3 messages in org.postgresql.pgsql-jdbcRe: DatabaseMetaData.getTables() is s...
FromSent OnAttachments
Marc HerbertJul 20, 2006 9:20 am 
Mark LewisJul 20, 2006 1:12 pm 
Marc HerbertJul 21, 2006 7:19 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: DatabaseMetaData.getTables() is silently quoting tableActions...
From:Mark Lewis (mark@mir3.com)
Date:Jul 20, 2006 1:12:48 pm
List:org.postgresql.pgsql-jdbc

This is because PostgreSQL allows the creation of case-sensitive table names.

If you run: CREATE TABLE MY_TABLE ...;

then the created table name is my_table.

But if you run: CREATE TABLE "MY_TABLE" ...;

then the created table name is MY_TABLE.

So in order for PG to differentiate between my_table and MY_TABLE, the getTables() function has to be case-sensitive.

-- Mark

On Thu, 2006-07-20 at 18:21 +0200, Marc Herbert wrote:

Hi,

If I create table MY_TABLE (unquoted uppercase), then my_table (lowercase) is actually created. This is clearly documented, so fine.


<http://www.postgresql.org/docs/8.1/interactive/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS>

But now if I use .getTables(null, null, "MY_TABLE", null) to ask whether this table actually exists, the answer is "no" (empty) because .getTables() acts like I quoted the MY_TABLE identifier.

It's quite annoying to create a table and not be able to see it...

Tested with postgresql-server.i686 8.0.7-1PGDG and 8.2dev-503 Maybe this is a server-side issue?

Cheers,

Marc

---------------------------(end of broadcast)--------------------------- TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq