pg.ddx.io  pgsql-interfaces@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Joseph Shraibman <jks@selectacast.net>
To: Stephen Crawley <crawley@dstc.edu.au>
Cc: pgsql-interfaces@postgresql.org
Subject: Re: Postgres 7.0 JDBC - update count for DELETE is always 1
Date: Mon, 05 Jun 2000 13:47:50 -0400
Message-ID: <393BE7C6.5F8324D3@selectacast.net> (raw)
References: <200006050038.e550coo17653@piglet.dstc.edu.au>

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
> 
>



view thread (7+ messages)  latest in thread

Message-ID: <393BE7C6.5F8324D3@selectacast.net>
Permalink:  ../393BE7C6.5F8324D3@selectacast.net/
Also on:    postgresql.org/message-id/393BE7C6.5F8324D3@selectacast.net

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-interfaces@postgresql.org
  Cc: jks@selectacast.net, crawley@dstc.edu.au
  Subject: Re: Postgres 7.0 JDBC - update count for DELETE is always 1
  In-Reply-To: <393BE7C6.5F8324D3@selectacast.net>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox