22 messages in org.postgresql.pgsql-jdbcRe: Binary tx format for an array?
FromSent OnAttachments
Michael GuyverJun 21, 2006 10:26 am 
Dave CramerJun 21, 2006 12:55 pm 
Mark LewisJun 21, 2006 1:31 pm 
Tom LaneJun 21, 2006 3:40 pm 
Michael GuyverJun 22, 2006 1:16 am 
Tom LaneJun 22, 2006 9:54 am 
Mark LewisJun 22, 2006 12:15 pm 
Michael GuyverJun 23, 2006 1:22 am 
Dave CramerJun 23, 2006 4:43 am 
Markus SchaberJun 23, 2006 4:59 am 
Michael GuyverJun 23, 2006 5:46 am 
Dave CramerJun 23, 2006 5:56 am 
Dave CramerJun 23, 2006 6:16 am 
Tom LaneJun 23, 2006 9:18 am 
Mark LewisJun 23, 2006 1:31 pm 
Dave CramerJun 23, 2006 1:39 pm 
Kris JurkaJun 23, 2006 1:46 pm 
Mark LewisJun 23, 2006 1:59 pm 
Marc HerbertJul 10, 2006 2:19 am 
Mark LewisJul 10, 2006 9:18 am 
Marc HerbertJul 10, 2006 10:53 am 
Mark LewisJul 10, 2006 11:59 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: Binary tx format for an array?Actions...
From:Dave Cramer (pg@fastcrypt.com)
Date:Jun 23, 2006 1:39:53 pm
List:org.postgresql.pgsql-jdbc

On 23-Jun-06, at 4:32 PM, Mark Lewis wrote:

Hmmm maybe I should read before sending. It appears that both input, and output can be text. The only catch with output is that you have to do a describe first to get the types. This may negate any gains on small result sets, but certainly for large ones it would help.

Disclaimer: this is my first real trip through the v3 protocol and the JDBC driver source in general. So take anything below with several grains of salt.

As far as I can tell from reading the JDBC CVS code, the sequence for preparing and executing a statement for the first time is:

PREPARE (name=my_statement) DESCRIBE STATEMENT (name=my_statement) SYNC/FLUSH Read Responses

BIND (portal=my_portal) DESCRIBE PORTAL (name=my_portal) EXECUTE (portal=my_portal) SYNC/FLUSH Read Responses

So it seems that we could do all text, mixed or all binary parameters without adding a round trip, because we already do an extra round trip when a statement is first prepared and we already know all of the parameter types.

Yup, you could, however the real win here is on parsing the return parameters, going from object to string is not terribly expensive.

Network times are probably a red herring.

We could do all text or all binary outputs without adding a round trip as well, because you can globally set the output format, but to do mixed outputs we'd need to execute the DESCRIBE PORTAL to get the return types, and then (not sure?) execute BIND again with different format parameters?

Yes, you can do binary results, but consider what happens if someone returns a type the driver doesn't know about ?

-- Mark Lewis