Обсуждение: PGStatement#setUseServerPrepare breaking PreparedStatement#executeUpdate return value?

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

PGStatement#setUseServerPrepare breaking PreparedStatement#executeUpdate return value?

От
Guillaume Cottenceau
Дата:
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
Дата:

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