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;
}
}