This is an automated email from the git hooks/post-receive script. ebourg-guest pushed a commit to tag REL8_0_321 in repository libpostgresql-jdbc-java.
commit 7f1bae80133bfc558939211c414d1eda5f37feec Author: Kris Jurka <[email protected]> Date: Tue Nov 27 19:33:31 2007 +0000 Make code that parses queries for updateable resultsets aware of the ONLY clause. Oleg Vasylenko + me --- org/postgresql/jdbc2/AbstractJdbc2ResultSet.java | 11 ++++++++--- org/postgresql/test/jdbc2/UpdateableResultTest.java | 13 ++++++++++++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java b/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java index aac6a2d..5f0f7ba 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java +++ b/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java @@ -45,6 +45,7 @@ public abstract class AbstractJdbc2ResultSet implements BaseResultSet, org.postg private boolean usingOID = false; // are we using the OID for the primary key? private Vector primaryKeys; // list of primary keys private boolean singleTable = false; + private String onlyTable = ""; private String tableName = null; private PreparedStatement updateStatement = null; private PreparedStatement insertStatement = null; @@ -740,7 +741,7 @@ public abstract class AbstractJdbc2ResultSet implements BaseResultSet, org.postg { - StringBuffer deleteSQL = new StringBuffer("DELETE FROM " ).append(tableName).append(" where " ); + StringBuffer deleteSQL = new StringBuffer("DELETE FROM " ).append(onlyTable).append(tableName).append(" where " ); for ( int i = 0; i < numKeys; i++ ) { @@ -1178,7 +1179,7 @@ public abstract class AbstractJdbc2ResultSet implements BaseResultSet, org.postg } } - selectSQL.append(" from " ).append(tableName).append(" where "); + selectSQL.append(" from " ).append(onlyTable).append(tableName).append(" where "); int numKeys = primaryKeys.size(); @@ -1245,7 +1246,7 @@ public abstract class AbstractJdbc2ResultSet implements BaseResultSet, org.postg try { - StringBuffer updateSQL = new StringBuffer("UPDATE " + tableName + " SET "); + StringBuffer updateSQL = new StringBuffer("UPDATE " + onlyTable + tableName + " SET "); int numColumns = updateValues.size(); Iterator columns = updateValues.keySet().iterator(); @@ -1672,6 +1673,10 @@ public abstract class AbstractJdbc2ResultSet implements BaseResultSet, org.postg if (name.toLowerCase().equals("from")) { tableName = st.nextToken(); + if (tableName.toLowerCase().equals("only")) { + tableName = st.nextToken(); + onlyTable = "ONLY "; + } tableFound = true; } } diff --git a/org/postgresql/test/jdbc2/UpdateableResultTest.java b/org/postgresql/test/jdbc2/UpdateableResultTest.java index 5ea48d3..499d021 100644 --- a/org/postgresql/test/jdbc2/UpdateableResultTest.java +++ b/org/postgresql/test/jdbc2/UpdateableResultTest.java @@ -422,7 +422,18 @@ public class UpdateableResultTest extends TestCase rs.moveToInsertRow(); rs.close(); st.close(); - } + } + + public void testUpdateSelectOnly() throws Exception + { + Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, + ResultSet.CONCUR_UPDATABLE); + + ResultSet rs = st.executeQuery( "select * from only second"); + assertTrue(rs.next()); + rs.updateInt(1, 2); + rs.updateRow(); + } public void testUpdateReadOnlyResultSet() throws Exception { -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/libpostgresql-jdbc-java.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

