Re: DatabaseMetaData - getImportedKeys

From: Kris Jurka <books(at)ejurka(dot)com>
To: Aleksey <phone(at)ukr(dot)net>
Cc: <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: DatabaseMetaData - getImportedKeys
Date: 2003-11-03 03:40:59
Message-ID: Pine.LNX.4.33.0311022237010.32292-100000@leary.csoft.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On Mon, 3 Nov 2003, Aleksey wrote:

> Hello,
>
>
>
> I have the following problem working with DatabaseMetaData. There is a
> database with table and attribute names in Russian. Database cluster was
> initialized with appropriate ru_RU.KOI8-R locale. All the databases were
> created with KOI8-R encoding. No problems were encountered in accessing
> database table data with JDBC.
>
> Database has foreign key constraints that I try to get with
> DatabaseMetaData methods. Both getTables and getPrimaryKeys work fine,
> all the results have correct encoding and values.
>
> The following fragment of code causes exception:
>
> rs = meta.getImportedKeys(null,null,tableName);
> while(rs.next()) {
>
> String pkTable = rs1.getString("PKTABLE_NAME");
> String pkColumn = rs1.getString("PKCOLUMN_NAME"); /* here */
>
> String fkTable = rs1.getString("FKTABLE_NAME");
> String fkColumn = rs1.getString("FKCOLUMN_NAME"); /* and here */
>
> }
>
> PKTABLE_NAME and FKTABLE_NAME fields are fetched correctly. Both the
> marked lines produce exception with this stack trace:
>
> at org.postgresql.core.Encoding.decodeUTF8(Encoding.java:270)
> at org.postgresql.core.Encoding.decode(Encoding.java:165)
> at org.postgresql.core.Encoding.decode(Encoding.java:181)
> at
> org.postgresql.jdbc1.AbstractJdbc1ResultSet.getString(AbstractJdbc1ResultSet.java:97)
> at
> org.postgresql.jdbc1.AbstractJdbc1ResultSet.getString(AbstractJdbc1ResultSet.java:337)
>
> Error message is: "Invalid character data was found. This is most
> likely caused by stored data containing characters that are invalid for
> the character set the database was created in. The most common example
> of this is storing 8bit data in a SQL_ASCII database.",
>
> but database is not SQL_ASCII (actually KOI8-R) and all the characters
> in column names are taken from this codepage. Other DatabaseMetaData
> methods work with these characters fine.
>

This is particularly odd because the DatabaseMetaData function has already
parsed the data as valid unicode and then setup a "fake" in memory result
set to work with which this is failing on. Could you send me a pg_dump
file of something that will make this fail?

Kris Jurka

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Kris Jurka 2003-11-03 05:53:18 Re: A bug in 7.3 jdbc driver
Previous Message Aleksey 2003-11-03 02:52:25 DatabaseMetaData - getImportedKeys