BUG #2514: (jdbc driver) Multiple inlined statements with mixed updates and queries return wrong results - Mailing list pgsql-bugs

From Gilles
Subject BUG #2514: (jdbc driver) Multiple inlined statements with mixed updates and queries return wrong results
Date
Msg-id 200607051446.k65EkGSE022524@wwwmaster.postgresql.org
Whole thread Raw
Responses Re: BUG #2514: (jdbc driver) Multiple inlined statements with  (Kris Jurka <books@ejurka.com>)
List pgsql-bugs
The following bug has been logged online:

Bug reference:      2514
Logged by:          Gilles
Email address:      gilles.rayrat@continuent.com
PostgreSQL version: 8.0.7
Operating system:   linux
Description:        (jdbc driver) Multiple inlined statements with mixed
updates and queries return wrong results
Details:

jdbc driver: 8.1.405

When issuing this:
statement.execute("SELECT 2;UPDATE foo SET d='babar' where i=1; SELECT 3");
The 2 result returned is wrong. This seems to be a ResultSet containing the
same values as the first RS (it should be an update count)

Here is code to reproduce:

      stmt.executeUpdate("CREATE TABLE foo(i integer, d varchar(5))");
      stmt.executeUpdate("INSERT INTO foo values(1,'bar')");
      boolean isRS = stmt.execute("SELECT 2;UPDATE foo SET d='babar' where
i=1; SELECT 3");
      assertTrue(isRS);
      ResultSet rs = stmt.getResultSet();
      assertTrue(rs.next());
      assertEquals(rs.getInt(1), 2);
      rs.close();
      assertFalse(stmt.getMoreResults());  // <= This fails !
      assertEquals(stmt.getUpdateCount(), 1);
      assertTrue(stmt.getMoreResults());
      rs = stmt.getResultSet();
      assertTrue(rs.next());
      assertEquals(rs.getInt(1), 3);
      rs.close();
      stmt.close();

pgsql-bugs by date:

Previous
From: "Daniel Naschenweng"
Date:
Subject: BUG #2515: Full Scan with constant column
Next
From: "Sergey Konoplev"
Date:
Subject: BUG #2517: Trouble with cx_Oracle and Plpython