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