Skip site navigation (1) Skip section navigation (2)

Re: Array passing

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
Subject: Re: Array passing
Date: 2009-04-08 16:02:50
Message-ID: 49DCCAAA.3080604@ejurka.com (view raw or flat)
Thread:
Lists: pgsql-jdbc
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.

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

Kris Jurka


In response to

Responses

pgsql-jdbc by date

Next:From: John ListerDate: 2009-04-08 18:00:26
Subject: Re: Array passing
Previous:From: John ListerDate: 2009-04-08 15:25:06
Subject: Re: Array passing

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group