PGStatement#setUseServerPrepare breaking PreparedStatement#executeUpdate return value?

Поиск
Список
Период
Сортировка
Искать

PGStatement#setUseServerPrepare breaking PreparedStatement#executeUpdate return value?

От:
Guillaume Cottenceau <gc@mnc.ch>
Дата:
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

От:
Kris Jurka <books@ejurka.com>
Дата:


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
FAQ