Re: bug report

Поиск
Список
Период
Сортировка
От Oliver Jowett
Тема Re: bug report
Дата
Msg-id 40C1124B.9010701@opencloud.com
обсуждение исходный текст
Ответ на bug report  (Vasiliev Ivan <biggod@folksnet.com>)
Ответы unsubscribe..  (edwin karundeng <namasayaedwin@yahoo.com>)
Список pgsql-jdbc
Vasiliev Ivan wrote:
> Hello All!
> I use a database with type UNICODE, execute query "select *
> from some_table". One field has type text. There are some Europe symbols,
> which code more than 128.

In theory this should be ok assuming the data was inserted with a
suitable client_encoding.

> In method
> private synchronized String Enconding#decodeUTF8(byte data[], int offset, int length)
> throws SQLException
> exeption ArrayIndexOutOfBoundsException occures in last else block:
> } else {                // length == 2 (maybe add checking for length > 3, throw exception if it is
>       y = data[i+1] & 0xFF;
>       val = (z - 0xC0)* (pow2_6)+(y-0x80);
>       l_cdata[j++] = (char) val;
>       i+=2;
> }
> Then your PSQLException is created.

Do you have a sample schema & data that shows this problem so we can
reproduce it? Or can you capture the raw byte-by-byte data given to
decodeUTF8() that causes the problem?

> But I have made a trick :
> } catch (Exception l_e) {
>        try {
>            return new String(data, offset, length, "UTF-8");
>        } catch(Exception e) {
>            throw new PSQLException("postgresql.con.invalidchar", l_e);
>        }
> }
> And, as no exception occures during string creation, your "fast code"
> decodeUTF8() has an error, I suppose....

I believe the String constructors *ignore* errors in the incoming data,
replacing them with placeholder characters.

Just to check, your JDBC application is not changing client_encoding, right?

-O

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Manju Maliyekkal
Дата:
Сообщение: asking help
Следующее
От: Oliver Jowett
Дата:
Сообщение: Re: Transactions not idle but "idle in transaction" since