From: | Gregory Krasnow OpenSourceCRM <gak(at)opensourcecrm(dot)org> |
---|---|
To: | Joseph Shraibman <jks(at)selectacast(dot)net>, Stephen Crawley <crawley(at)dstc(dot)edu(dot)au> |
Cc: | pgsql-interfaces(at)postgresql(dot)org |
Subject: | RE: Postgres 7.0 JDBC - update count for DELETE is a lways 1 |
Date: | 2000-06-05 17:46:18 |
Message-ID: | 714345630B87D3118C810090274E7643023E412B@enterprise.stoneanalytics.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-interfaces |
This is a little off-topic, but I have been unable to get in through
anonymous cvs.
I have tried:
cvs -d :pserver:anoncvs(at)hub(dot)org:/usr/local/cvsroot login
with postgresql as the password
- Greg
-----Original Message-----
From: Joseph Shraibman [mailto:jks(at)selectacast(dot)net]
Sent: Monday, June 05, 2000 10:48 AM
To: Stephen Crawley
Cc: pgsql-interfaces(at)postgresql(dot)org
Subject: Re: [INTERFACES] Postgres 7.0 JDBC - update count for DELETE is
always 1
This was supposed to be fixed already, but I guess this is just more
code that didn't get into the cvs when it should have.
Stephen Crawley wrote:
>
> Hi,
>
> I'm trying to port a large JDBC application to Postgres 7.0 from MySQL,
> and I've run into what I believe is a bug in the JDBC driver.
>
> When my application executes a "DELETE" statement, the ResultSet entry
> always says that 1 row has been deleted. Even when nothing has been
> deleted. I did a bit of investigation, and I think I've found where the
> problem is. In the class postgresql.Connection, the method
>
> public java.sql.ResultSet ExecSQL(String sql) throws SQLException
>
> contains the following code:
>
> ...
>
> int update_count = 1;
>
> ...
>
> case 'C': // Command Status
> recv_status = pg_stream.ReceiveString(8192);
>
> // Now handle the update count correctly.
> if(recv_status.startsWith("INSERT") ||
recv_status.startsWith("UPDATE")) {
> try {
> update_count =
>
Integer.parseInt(recv_status.substring(1+recv_status.lastIndexOf('
> ')));
> } catch(NumberFormatException nfe) {
> throw new PSQLException("postgresql.con.fathom",recv_status);
> }
> }
>
> ...
>
> It looks like the code picks out the update count when the query was
> described (by the backend) as an INSERT or UPDATE. But it does not
> do this for a DELETE.
>
> I looked at the source of the backend (src/backend/tcop/dest.c, etc) and
> it does seem to return an update count for the CMD_DELETE command. If
> I've got this right, adding
>
> ... || recv_status.startsWith("DELETE") ...
>
> to the if statement should fix the problem.
>
> -- Steve
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Joseph Shraibman | 2000-06-05 17:47:50 | Re: Postgres 7.0 JDBC - update count for DELETE is always 1 |
Previous Message | Joachim Achtzehnter | 2000-06-05 16:26:36 | Re: JDBC squirrely transaction behavior?? |