Lists: | pgsql-bugs |
---|
From: | "Gilles" <gilles(dot)rayrat(at)continuent(dot)com> |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | BUG #2514: (jdbc driver) Multiple inlined statements with mixed updates and queries return wrong results |
Date: | 2006-07-05 14:46:16 |
Message-ID: | 200607051446.k65EkGSE022524@wwwmaster.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-bugs |
The following bug has been logged online:
Bug reference: 2514
Logged by: Gilles
Email address: gilles(dot)rayrat(at)continuent(dot)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();
From: | Kris Jurka <books(at)ejurka(dot)com> |
---|---|
To: | Gilles <gilles(dot)rayrat(at)continuent(dot)com> |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #2514: (jdbc driver) Multiple inlined statements with |
Date: | 2006-07-07 01:22:38 |
Message-ID: | Pine.BSO.4.63.0607062019410.384@leary2.csoft.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-bugs |
On Wed, 5 Jul 2006, Gilles wrote:
> Bug reference: 2514
> Description: (jdbc driver) Multiple inlined statements with mixed
> updates and queries return wrong results
> Details:
>
> 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)
>
Fixed in CVS for 8.0, 8.1 and 8.2dev. It was mistakenly retaining some
state from the first SELECT when issuing the update. I've put up a
temporary jar file here if you need a fix before the next official
releases. http://www.ejurka.com/pgsql/jars/gr/
Kris Jurka