You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2008/03/23 06:10:19 UTC
svn commit: r640154 - in
/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine:
builder/xml/SqlMapConfigParser.java builder/xml/sql-map-config-2.dtd
config/SqlMapConfiguration.java execution/SqlExecutor.java
impl/SqlMapExecutorDelegate.java
Author: cbegin
Date: Sat Mar 22 22:10:18 2008
New Revision: 640154
URL: http://svn.apache.org/viewvc?rev=640154&view=rev
Log:
Added setting to force multiple result set support
Modified:
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapConfigParser.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/sql-map-config-2.dtd
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/config/SqlMapConfiguration.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/execution/SqlExecutor.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/impl/SqlMapExecutorDelegate.java
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapConfigParser.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapConfigParser.java?rev=640154&r1=640153&r2=640154&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapConfigParser.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapConfigParser.java Sat Mar 22 22:10:18 2008
@@ -115,6 +115,10 @@
boolean useColumnLabel = (useColumnLabelAttr == null || "true".equals(useColumnLabelAttr));
config.setUseColumnLabel(useColumnLabel);
+ String forceMultipleResultSetSupportAttr = attributes.getProperty("forceMultipleResultSetSupport");
+ boolean forceMultipleResultSetSupport = "true".equals(forceMultipleResultSetSupportAttr);
+ config.setForceMultipleResultSetSupport(forceMultipleResultSetSupport);
+
String defaultTimeoutAttr = attributes.getProperty("defaultStatementTimeout");
Integer defaultTimeout = defaultTimeoutAttr == null ? null : Integer.valueOf(defaultTimeoutAttr);
config.setDefaultStatementTimeout(defaultTimeout);
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/sql-map-config-2.dtd
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/sql-map-config-2.dtd?rev=640154&r1=640153&r2=640154&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/sql-map-config-2.dtd (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/sql-map-config-2.dtd Sat Mar 22 22:10:18 2008
@@ -37,6 +37,7 @@
errorTracingEnabled (true | false) #IMPLIED
useStatementNamespaces (true | false) #IMPLIED
useColumnLabel (true | false) #IMPLIED
+forceMultipleResultSetSupport (true | false) #IMPLIED
defaultStatementTimeout CDATA #IMPLIED
>
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/config/SqlMapConfiguration.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/config/SqlMapConfiguration.java?rev=640154&r1=640153&r2=640154&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/config/SqlMapConfiguration.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/config/SqlMapConfiguration.java Sat Mar 22 22:10:18 2008
@@ -89,6 +89,10 @@
client.getDelegate().setUseColumnLabel(useColumnLabel);
}
+ public void setForceMultipleResultSetSupport(boolean forceMultipleResultSetSupport) {
+ client.getDelegate().setForceMultipleResultSetSupport(forceMultipleResultSetSupport);
+ }
+
public void setDefaultStatementTimeout(Integer defaultTimeout) {
errorContext.setActivity("setting default timeout");
if (defaultTimeout != null) {
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/execution/SqlExecutor.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/execution/SqlExecutor.java?rev=640154&r1=640153&r2=640154&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/execution/SqlExecutor.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/execution/SqlExecutor.java Sat Mar 22 22:10:18 2008
@@ -295,7 +295,7 @@
private ResultSet handleMultipleResults(PreparedStatement ps, StatementScope statementScope, int skipResults, int maxResults, RowHandlerCallback callback) throws SQLException {
ResultSet rs;
- rs = getFirstResultSet(ps);
+ rs = getFirstResultSet(statementScope, ps);
if (rs != null) {
handleResults(statementScope, rs, skipResults, maxResults, callback);
}
@@ -309,7 +309,7 @@
multipleResults.add(defaultRowHandler.getList());
ResultMap[] resultMaps = statement.getAdditionalResultMaps();
int i = 0;
- while (moveToNextResultsSafely(ps)) {
+ while (moveToNextResultsSafely(statementScope, ps)) {
if (i >= resultMaps.length) break;
ResultMap rm = resultMaps[i];
statementScope.setResultMap(rm);
@@ -322,14 +322,14 @@
defaultRowHandler.setList(multipleResults);
statementScope.setResultMap(statement.getResultMap());
} else {
- while (moveToNextResultsSafely(ps)) ;
+ while (moveToNextResultsSafely(statementScope, ps)) ;
}
}
// End additional ResultSet handling
return rs;
}
- private ResultSet getFirstResultSet(Statement stmt) throws SQLException {
+ private ResultSet getFirstResultSet(StatementScope scope, Statement stmt) throws SQLException {
ResultSet rs = null;
boolean hasMoreResults = true;
while (hasMoreResults) {
@@ -337,23 +337,27 @@
if (rs != null) {
break;
}
- hasMoreResults = moveToNextResultsIfPresent(stmt);
+ hasMoreResults = moveToNextResultsIfPresent(scope, stmt);
}
return rs;
}
- private boolean moveToNextResultsIfPresent(Statement stmt) throws SQLException {
+ private boolean moveToNextResultsIfPresent(StatementScope scope, Statement stmt) throws SQLException {
boolean moreResults;
// This is the messed up JDBC approach for determining if there are more results
- moreResults = !(((moveToNextResultsSafely(stmt) == false) && (stmt.getUpdateCount() == -1)));
+ moreResults = !(((moveToNextResultsSafely(scope, stmt) == false) && (stmt.getUpdateCount() == -1)));
return moreResults;
}
- private boolean moveToNextResultsSafely(Statement stmt) throws SQLException {
- if (stmt.getConnection().getMetaData().supportsMultipleResultSets()) {
+ private boolean moveToNextResultsSafely(StatementScope scope, Statement stmt) throws SQLException {
+ if (forceMultipleResultSetSupport(scope) || stmt.getConnection().getMetaData().supportsMultipleResultSets()) {
return stmt.getMoreResults();
}
return false;
+ }
+
+ private boolean forceMultipleResultSetSupport(StatementScope scope) {
+ return ((SqlMapClientImpl)scope.getSession().getSqlMapClient()).getDelegate().isForceMultipleResultSetSupport();
}
private void handleResults(StatementScope statementScope, ResultSet rs, int skipResults, int maxResults, RowHandlerCallback callback) throws SQLException {
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/impl/SqlMapExecutorDelegate.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/impl/SqlMapExecutorDelegate.java?rev=640154&r1=640153&r2=640154&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/impl/SqlMapExecutorDelegate.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/impl/SqlMapExecutorDelegate.java Sat Mar 22 22:10:18 2008
@@ -61,6 +61,7 @@
private boolean cacheModelsEnabled;
private boolean enhancementEnabled;
private boolean useColumnLabel = true;
+ private boolean forceMultipleResultSetSupport;
private TransactionManager txManager;
@@ -899,6 +900,14 @@
public void setStatementCacheEnabled(boolean statementCacheEnabled) {
this.statementCacheEnabled = statementCacheEnabled;
+ }
+
+ public boolean isForceMultipleResultSetSupport() {
+ return forceMultipleResultSetSupport;
+ }
+
+ public void setForceMultipleResultSetSupport(boolean forceMultipleResultSetSupport) {
+ this.forceMultipleResultSetSupport = forceMultipleResultSetSupport;
}
}