RE: Postgres 7.0 JDBC - update count for DELETE is a lways 1 - Mailing list pgsql-interfaces
From | Peter Mount |
---|---|
Subject | RE: Postgres 7.0 JDBC - update count for DELETE is a lways 1 |
Date | |
Msg-id | 1B3D5E532D18D311861A00600865478CF1AEBC@EXCHANGE1 Whole thread Raw |
List | pgsql-interfaces |
Well, it's now in there. I found why it failed to run before. I've been trying to get JBuilder 3.5 to run the driver, and had an older postgresql.jar file in the jre/lib/ext directory :-) Peter -- Peter Mount Enterprise Support Maidstone Borough Council Any views stated are my own, and not those of Maidstone Borough Council > -----Original Message----- > From: Peter Mount [SMTP:petermount@it.maidstone.gov.uk] > Sent: Tuesday, June 06, 2000 9:55 AM > To: 'Joseph Shraibman'; Stephen Crawley > Cc: pgsql-interfaces@postgresql.org > Subject: RE: [INTERFACES] Postgres 7.0 JDBC - update count for DELETE > is a lways 1 > > I'm getting a little worried about cvs, as I'm seeing more and more of > these > "omissions" that I'm certain I'm committing. > > It may be my home box that's at fault, but to complicate things, both > maidast and tyr (the box here at work) were installed from the same media, > so it's not as simple as the version of cvs I'm running. > > Anyhow, I'm looking at this at the moment. However, I can't seem to get it > to work right now. > > Peter > > -- > Peter Mount > Enterprise Support > Maidstone Borough Council > Any views stated are my own, and not those of Maidstone Borough Council > > > -----Original Message----- > > From: Joseph Shraibman [SMTP:jks@selectacast.net] > > Sent: Monday, June 05, 2000 6:48 PM > > To: Stephen Crawley > > Cc: pgsql-interfaces@postgresql.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 > > > > > >
pgsql-interfaces by date: