From: | "John Lister" <john(dot)lister-ps(at)kickstone(dot)com> |
---|---|
To: | "Kris Jurka" <books(at)ejurka(dot)com> |
Cc: | <pgsql-jdbc(at)postgresql(dot)org> |
Subject: | Re: Array passing |
Date: | 2009-04-08 18:00:26 |
Message-ID: | 143251E540984912A2F62CD2F136FC28@squarepi.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
----- Original Message -----
From: "Kris Jurka" <books(at)ejurka(dot)com>
To: "John Lister" <john(dot)lister-ps(at)kickstone(dot)com>
Cc: <pgsql-jdbc(at)postgresql(dot)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..
From | Date | Subject | |
---|---|---|---|
Next Message | Oliver Jowett | 2009-04-09 00:19:56 | Re: Array passing |
Previous Message | Kris Jurka | 2009-04-08 16:02:50 | Re: Array passing |