Re: Array passing - Mailing list pgsql-jdbc
From | John Lister |
---|---|
Subject | Re: Array passing |
Date | |
Msg-id | 143251E540984912A2F62CD2F136FC28@squarepi.com Whole thread Raw |
In response to | Array passing ("John Lister" <john.lister-ps@kickstone.com>) |
Responses |
Re: Array passing
|
List | pgsql-jdbc |
----- Original Message ----- From: "Kris Jurka" <books@ejurka.com> To: "John Lister" <john.lister-ps@kickstone.com> Cc: <pgsql-jdbc@postgresql.org> Sent: Wednesday, April 08, 2009 5:02 PM Subject: Re: [JDBC] Array passing > John Lister wrote: >> I've applied the patch, but there seems to be a couple of issues. >> >> To do binary transfer, it needs to do a describe before the bind so as to >> get the returned field types. This seems to only be done when >> ForceBinaryTransfer is set. >> > > My memory of what the patch does is a little fuzzy and I've only looked at > the binary receive patch, but here's how I understood it. > > The current driver execution does not bother retrieving the describe > results before executing a query. This means we don't know what types > will be returned beforehand, so we don't know if we can support retrieving > them in binary and must retrieve them as text. This is done to avoid an > extra network roundtrip for query execution. What the patch does is to > look at a prepared statement and see if we've already prepared it. If we > have, then we have the previous describe results and know what fields we > can handle as binary. So without ForceBinaryTransfer, binary will only > kick in on the second execution (or perhaps prepareThreshold executions, I > forget). ForceBinaryTransfer is really a hack to test this which prepares > a query twice to make this work, so don't be fooled by the first > preparation and wait for the second one. Ah that makes more sense, i was expecting it to always do a describe before the bind. Apologies... I'll have a look what happens on multiple calls... Personally I think the extra network traffic is worth it. >> Secondly when it does the describe, sendParse trashes the fields details >> by setting them to null before the main query is executed. >> > > I'm not sure what you're referring to specifically. sendParse certainly > doesn't adjust any of the params that are passed in, and it doesn't touch > anything if the query is already prepared. > >> Did this patch use to work, i can't see how in its current form. >> > > It did work and I have no reason to believe that's changed. Perhaps it > just isn't working as you're expecting. Perhaps you're trying it with > arrays which it might not support? I'd try getting it working with a > plain int or two first. I was misunderstanding it - see above.. Arrays aren't implemented in the patch, only simple types. I'm adding support now..
pgsql-jdbc by date: