From: | Kris Jurka <books(at)ejurka(dot)com> |
---|---|
To: | Csaba Nagy <nagy(at)ecircle-ag(dot)com> |
Cc: | Postgres JDBC <pgsql-jdbc(at)postgresql(dot)org> |
Subject: | Re: Strange error using postgres 8.2 + JDBC 8.2 driver |
Date: | 2007-01-17 17:20:04 |
Message-ID: | Pine.BSO.4.64.0701171216380.15760@leary2.csoft.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
On Wed, 17 Jan 2007, Csaba Nagy wrote:
>> This will actually happen in 8.1 servers if you are running the latest
>> releases. Previously, inserting something like "a\0b" would silently
>> truncate at the null byte, but now it's an error. So, check your data for
>> \0.
>
> Well, if the 0 bytes are in the byte array, I would expect that to be
> OK, the driver should escape them, right ? (I actually tested this, it
> works).
Right, bytea data can contain 0.
> Other than that, the parameters are plain strings and primitives, so I
> would also be surprised to be able to insert invalid 0 bytes in those...
> Could it be that we have some strange characters not properly encoded by
> the driver ?
>
Java is not C where 0 is a string terminator. Java String objects may
contain embedded 0 characters. The driver encodes these correctly and
sends them to the server which rejects them. The server being written in
C has code everywhere that treats 0 as a terminator and it cannot
correctly handle embedded 0s. You have 0s somewhere in your string data.
Kris Jurka
From | Date | Subject | |
---|---|---|---|
Next Message | Csaba Nagy | 2007-01-17 17:24:22 | Re: Strange error using postgres 8.2 + JDBC 8.2 driver |
Previous Message | Csaba Nagy | 2007-01-17 17:13:53 | Re: Strange error using postgres 8.2 + JDBC 8.2 driver |