[PATCH] problem with DatabaseMetaData and mixed case table names
От | Giuseppe Sacco |
---|---|
Тема | [PATCH] problem with DatabaseMetaData and mixed case table names |
Дата | |
Msg-id | 1123518043.6487.4.camel@localhost обсуждение исходный текст |
Ответы |
Re: [PATCH] problem with DatabaseMetaData and mixed case
Re: [PATCH] problem with DatabaseMetaData and mixed case table |
Список | 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
Вложения
В списке pgsql-jdbc по дате отправления: