Thread: PGStatement#setUseServerPrepare breaking PreparedStatement#executeUpdate return value?

PGStatement#setUseServerPrepare breaking PreparedStatement#executeUpdate return value?

From
Guillaume Cottenceau
Date:
Hi,

I use postgres-7.4.5 with postgresql-7.4.5.jar built out of it.

I have noticed that the int result from
PreparedStatement#executeUpdate for a DELETE statement is always
1 for me, even if 0 rows were affected by the statement, breaking
the JDBC API (or at least its documentation).

I have experimented and noticed that removing my call to
PGStatement#setUseServerPrepare(true) workarounds the bug.

Is there any way to workaround it otherwise? Is it a known and/or
normal bug?

Thanks,

--
Guillaume Cottenceau

Re: PGStatement#setUseServerPrepare breaking

From
Kris Jurka
Date:

On Wed, 23 Feb 2005, Guillaume Cottenceau wrote:

> I use postgres-7.4.5 with postgresql-7.4.5.jar built out of it.
>
> I have noticed that the int result from
> PreparedStatement#executeUpdate for a DELETE statement is always
> 1 for me, even if 0 rows were affected by the statement, breaking
> the JDBC API (or at least its documentation).
>
> I have experimented and noticed that removing my call to
> PGStatement#setUseServerPrepare(true) workarounds the bug.
>
> Is there any way to workaround it otherwise? Is it a known and/or
> normal bug?
>

This is a known bug that requires upgrading to either the 8.0 server which
returns the correct command completion tag on EXECUTE, or the 8.0 driver
which uses protocol level prepared statements instead of SQL PREPARE /
EXECUTE.

Kris Jurka