Re: jdbc3, pg 8.1.4 , and stored procedures - Mailing list pgsql-jdbc

From Dave Cramer
Subject Re: jdbc3, pg 8.1.4 , and stored procedures
Date
Msg-id 2F2DFD51-CFE5-490E-BFA3-A5ACC3448449@fastcrypt.com
Whole thread Raw
In response to Re: jdbc3, pg 8.1.4 , and stored procedures  (Matt Chambers <chambers@imageworks.com>)
Responses Re: jdbc3, pg 8.1.4 , and stored procedures  (Matt Chambers <chambers@imageworks.com>)
List pgsql-jdbc
On 30-Aug-06, at 8:43 PM, Matt Chambers wrote:

> Thanks for response.
>
> Do you happen to know what 'Malformed function or procedure escape
> syntax at offset 4' means?  That might get me going in the right
> direction.
> I will see what I can do about a code example..  There are a couple
> layers of abstraction and some casting I would want to put into the
> example.  One thing I noticed was that when using the 7.4 driver,
> while it did work, would say "idle in transaction" next to the
> process.

Yeah, that was a bug in the 7.4 driver. As far as the Malformed
function goes. It's a syntax error in the call, but it looks pretty
normal which is why I wanted a self contained test that failed.


>
> Also, what I said about every stored procedure, turns out that is
> false.  It seems the ones that don't work are the ones that return
> cursors.  That code looks something like this.  Looks like its
> abstracted to handle normal queries and stored procedure calls.
> ob_is_call is set to true if they are calling a stored procedure,
> false if its a normal query.  The SQLCleaner handles close() stuff.
>
>    public Tresult query ( PreparedStatement x_stmt, Tparam
> x_param ) throws SQLException {
>        ResultSet x_rset = null;
>        if ( ob_is_call ) {
>            ((CallableStatement) x_stmt).registerOutParameter( 1,
> Types.OTHER );
>            x_stmt.setObject ( 2, x_param );
>            x_stmt.execute ();
>            x_rset = (ResultSet) ((CallableStatement)
> x_stmt).getObject(1);
>        } else {
>            x_stmt.setObject ( 1, x_param );
>            x_rset = x_stmt.executeQuery ();
>        }
>        try {
>            return handle ( x_rset );
>        } finally {
>            SqlCleaner.cleanUpSqlSession ( x_rset );
>        }
>    }
>
> -Matt
>
> Dave Cramer wrote:
>
>> Matt,
>>
>> That's pretty strange, the test suite in the driver uses exactly
>> the same syntax.
>> Can you send a self contained test that fails ?
>>
>> Dave
>> On 30-Aug-06, at 7:11 PM, Matt Chambers wrote:
>>
>>> Greetings.  I've inherited this Tomcat / Postgres application and
>>> I'm having a problem, not sure what is.  Basically, its a
>>> postgres 8.1.4 server and a tomcat application.  All of the SQL
>>> is done in plpgsql, which is called with prepareCall statements,
>>> example:
>>>
>>>  "{ ? = call getDispatchList ( ? ) }"
>>>
>>> With the 7.4 driver it works, with the 8.1 driver every query
>>> fails with:
>>>
>>> WARNING: Caught unexpected: org.postgresql.util.PSQLException:
>>> Malformed function or procedure escape syntax at offset 4.,
>>> org.postgresql.util.PSQLException: Malformed function or
>>> procedure escape syntax at offset 4.
>>>
>>> I've been able to move the other applications over to the 8.1
>>> driver (none use stored procedures) no problem.  What is the secret?
>>
>
>
>


pgsql-jdbc by date:

Previous
From: Matt Chambers
Date:
Subject: Re: jdbc3, pg 8.1.4 , and stored procedures
Next
From: "meil parachorras"
Date:
Subject: Encoding Problem