Re: JDBC with PG 8.4 bytea character escaping wire protocol

From: dmp <danap(at)ttc-cmc(dot)net>
To: David Wall <d(dot)wall(at)computer(dot)org>, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: JDBC with PG 8.4 bytea character escaping wire protocol
Date: 2009-10-22 16:56:34
Message-ID: 4AE08EC2.107@ttc-cmc.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

I guess I can not really answer your question, since I have not dug
around in the code, but I can not understand
why the JDBC would escape a byte[] sent or received using the setBytes()
or getBytes() API or the stream
methods. These are binary protocols, which can house any integer value
within the limitations. The bytea
type is is defined as binary which means it does not necessarily
represent a character. Now the answer I guess
could be answered in two ways.

1. Someone here or yourself would have to know or dig through the code
to see if some conversion takes place.
2. Make a test case that sends or receives the data using
setBytes()/getBytes() and one of the APIs that
does escape characters or you manually escape the characters. Use a
packet sniffer to check the package size
in both cases. If they are the same then a conversion is taking
place. I would suspect the Bytes() method would
result in less bandwidth, not more, no data size expansion.

danap

>> Does the JDBC 4 driver for PG 8.4 escape each character of the bytea
>> type, or does it use a binary protocol?
>>
>> From another post, Merlin Moncure wrote, "libpq supports a binary
>> protocol mode which allows you to execute queries sending bytea
>> without escaping." Is that true of the JDBC driver? I'm concerned
>> about the data size expansion that would result for the wire protocol
>> when I use setBytes().
>
>
> I tried downloading the JDBC source and must say it was complex enough
> to a newbie that I couldn't really determine the answer myself.
> Does anybody know if the JDBC driver with PG 8.4 communicates using a
> binary protocol for BYTEA transfers to/from or whether it sends
> escaped chars only? Or perhaps which classes handle the transfer of
> BYTEA to PG and receives BYTEA responses from PG?
>
> Thanks,
> David

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Richard Broersma 2009-10-22 17:06:23 Re: JDBC with PG 8.4 bytea character escaping wire protocol
Previous Message David Wall 2009-10-22 16:46:21 Re: JDBC with PG 8.4 bytea character escaping wire protocol