### Eclipse Workspace Patch 1.0 #P orbeon Index: src/java/org/orbeon/oxf/processor/sql/interpreters/QueryInterpreter.java =================================================================== RCS file: /cvsroot/ops/orbeon/src/java/org/orbeon/oxf/processor/sql/interpreters/QueryInterpreter.java,v retrieving revision 1.13 diff -u -r1.13 QueryInterpreter.java --- src/java/org/orbeon/oxf/processor/sql/interpreters/QueryInterpreter.java 14 Aug 2008 17:04:15 -0000 1.13 +++ src/java/org/orbeon/oxf/processor/sql/interpreters/QueryInterpreter.java 17 Mar 2009 09:52:06 -0000 @@ -43,6 +43,7 @@ import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; +import java.sql.Statement; import java.sql.Types; import java.util.ArrayList; import java.util.Collections; @@ -181,7 +182,7 @@ if (!hasReplaceOrSeparator) { final String queryString = query.toString(); if (type != CALL) - stmt = getInterpreterContext().getConnection().prepareStatement(queryString); + stmt = getInterpreterContext().getConnection().prepareStatement(queryString, Statement.RETURN_GENERATED_KEYS); else stmt = getInterpreterContext().getConnection().prepareCall(queryString); getInterpreterContext().setStatementString(queryString); @@ -614,6 +615,8 @@ // We know there is only a possible update count final int updateCount = stmt.executeUpdate(); getInterpreterContext().setUpdateCount(updateCount);//FIXME: should add? + if (updateCount > 0) + ResultSetInterpreter.setGeneratedKeysResultSetInfo(getInterpreterContext(), stmt); } } } catch (Exception e) { Index: src/java/org/orbeon/oxf/processor/sql/interpreters/ResultSetInterpreter.java =================================================================== RCS file: /cvsroot/ops/orbeon/src/java/org/orbeon/oxf/processor/sql/interpreters/ResultSetInterpreter.java,v retrieving revision 1.8 diff -u -r1.8 ResultSetInterpreter.java --- src/java/org/orbeon/oxf/processor/sql/interpreters/ResultSetInterpreter.java 23 Aug 2005 23:27:40 -0000 1.8 +++ src/java/org/orbeon/oxf/processor/sql/interpreters/ResultSetInterpreter.java 17 Mar 2009 09:52:06 -0000 @@ -122,6 +122,20 @@ } } + public static boolean setGeneratedKeysResultSetInfo(SQLProcessorInterpreterContext interpreterContext, PreparedStatement stmt) throws SQLException { + final ResultSet resultSet = stmt.getGeneratedKeys(); + + final boolean hasNext = resultSet.next(); + interpreterContext.setEmptyResultSet(!hasNext); + interpreterContext.setResultSet(resultSet); + interpreterContext.setGotResults(hasNext || interpreterContext.isGotResults()); + + if (SQLProcessor.logger.isDebugEnabled()) + SQLProcessor.logger.debug("GeneratedKeysResultSet info: more result set, hasNext = " + hasNext); + + return true; + } + public static void closeStatement(SQLProcessorInterpreterContext interpreterContext, PreparedStatement stmt) throws SQLException { stmt.close(); interpreterContext.setStatement(null);