Skip site navigation (1) Skip section navigation (2)

Postgres 7.0 JDBC - update count for DELETE is always 1

From: Stephen Crawley <crawley(at)dstc(dot)edu(dot)au>
To: pgsql-interfaces(at)postgresql(dot)org
Subject: Postgres 7.0 JDBC - update count for DELETE is always 1
Date: 2000-06-05 00:38:57
Message-ID: (view raw or whole thread)
Lists: pgsql-interfaces

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

Next:From: Kovacs Zoltan SandorDate: 2000-06-05 08:46:31
Subject: Re: ODBC driver for Windows - Problems
Previous:From: moenk SDate: 2000-06-04 14:17:28
Subject: jdbc, applet -> servlet;corba ??

Privacy Policy | About PostgreSQL
Copyright © 1996-2015 The PostgreSQL Global Development Group