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

Re: patch for passing the cts

From: Oliver Jowett <oliver(at)opencloud(dot)com>
To: Dave Cramer <pg(at)fastcrypt(dot)com>
Cc: List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: patch for passing the cts
Date: 2005-06-14 23:21:38
Message-ID: 42AF6682.6000405@opencloud.com (view raw or flat)
Thread:
Lists: pgsql-jdbc
Dave Cramer wrote:
> Well the good news is that the driver and the backend will pass the  cts
> with this patch.
> 
> Rather than commit this as is, I'd like to discuss the patch as it is.
> 
> I'm really not happy with the handling of IN/OUT parameters in the 
> query executor, however deferring parsing doesn't seem to be an  option
> either.

I don't think your approach works, though; consider this (untested) example:

 CallableStatement cs = conn.prepareCall("{call f(?*4,?)}");
 cs.setInt(1,42);
 cs.registerOutParameter(2,Types.INTEGER);

The query gets parsed into these fragments:

 0:"select * from f("
 1:"*4,"
 2:") as result"

As I read your code, that's going to discard fragment 1 blindly in the
query executor, resulting in this query:

  "select * from f($1) as result"

which is wrong.

The logic that decides to remove OUT placeholders needs to be aware of
the rest of the {call} structure (mainly, comma separation of
parameters) to do it correctly, and I really don't think that the
QueryExecutor implementations are the right place for that..

-O

In response to

Responses

pgsql-jdbc by date

Next:From: Dave CramerDate: 2005-06-15 00:40:11
Subject: Re: patch for passing the cts
Previous:From: Kris JurkaDate: 2005-06-14 16:12:56
Subject: Re: New italian translation

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