Re: Array passing

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..

In response to

Responses

Browse pgsql-jdbc by date

  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