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  (Oliver Jowett <oliver@opencloud.com>)
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:

Previous
From: ram subbu
Date:
Subject: String Formula to calculate the value
Next
From: Oliver Jowett
Date:
Subject: Re: Array passing