You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by da...@apache.org on 2013/05/03 06:08:42 UTC
svn commit: r1478641 - in
/db/derby/code/trunk/java/client/org/apache/derby/client/am:
ClientPreparedStatement.java ClientStatement.java
Author: dag
Date: Fri May 3 04:08:41 2013
New Revision: 1478641
URL: http://svn.apache.org/r1478641
Log:
DERBY-6125 Code clean up in client driver.
Patch "derby-6125-visibility-03-a" to limit sharing of state
between classes not in the same package by cloning arrays not
considered performance sensitive.
* ClientStatement
made indexOfCurrentResultSet private by adding accessors
removed unused field numInvisibleRS
cloned execute, executeLargeUpdate and executeUpdate's overloads
input arrays columnIndexes and columnNames
cloned completeExecuteCall's argument resultSets
* ClientPreparedStatement
use new accessor resetResultSetList instead of accessing
ClientStatement#indexOfCurrentResultSet directly
Modified:
db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientPreparedStatement.java
db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientStatement.java
Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientPreparedStatement.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientPreparedStatement.java?rev=1478641&r1=1478640&r2=1478641&view=diff
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientPreparedStatement.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientPreparedStatement.java Fri May 3 04:08:41 2013
@@ -2255,7 +2255,7 @@ public class ClientPreparedStatement ext
if (sqlMode_ == isQuery__) {
- indexOfCurrentResultSet_ = -1; //reset ResultSetList
+ resetResultSetList();
resultSetList_ = new ClientResultSet[batchSize];
}
Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientStatement.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientStatement.java?rev=1478641&r1=1478640&r2=1478641&view=diff
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientStatement.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientStatement.java Fri May 3 04:08:41 2013
@@ -29,6 +29,7 @@ import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
+import java.util.List;
import java.util.StringTokenizer;
import org.apache.derby.shared.common.reference.SQLState;
import org.apache.derby.shared.common.sanity.SanityManager;
@@ -150,8 +151,7 @@ public class ClientStatement implements
boolean openOnServer_ = false;
- //private int indexOfCurrentResultSet_ = -1;
- protected int indexOfCurrentResultSet_ = -1;
+ private int indexOfCurrentResultSet_ = -1;
ClientResultSet[] resultSetList_ = null; // array of ResultSet objects
protected final static String TIMEOUT_STATEMENT = "SET STATEMENT_TIMEOUT ";
@@ -194,9 +194,6 @@ public class ClientStatement implements
// Used for callable statement OUT paramters.
Cursor singletonRowData_ = null;
- // number of invisible result sets returned from a stored procedure.
- private int numInvisibleRS_ = 0;
-
// This is a cache of the attributes to be sent on prepare.
// Think about caching the entire prepare DDM string for the re-prepares
public String cursorAttributesToSendOnPrepare_ = null;
@@ -277,7 +274,6 @@ public class ClientStatement implements
batch_.clear();
singletonRowData_ = null;
- numInvisibleRS_ = 0;
preparedStatementForAutoGeneratedKeys_ = null;
generatedKeysResultSet_ = null;
generatedKeysColumnNames_ = null;
@@ -1357,14 +1353,13 @@ public class ClientStatement implements
}
resultIsResultSet = false;
} else {
- if (numInvisibleRS_ == 0 &&
- current == CLOSE_CURRENT_RESULT &&
+ if (current == CLOSE_CURRENT_RESULT &&
resultSetList_[indexOfCurrentResultSet_] != null) {
resultSetList_[indexOfCurrentResultSet_].closeX();
}
resultIsResultSet = indexOfCurrentResultSet_ + 1 < resultSetList_.length;
}
- if ((current == CLOSE_ALL_RESULTS) && (numInvisibleRS_ == 0)) {
+ if (current == CLOSE_ALL_RESULTS) {
int numberOfResultSetsToClose = (resultSetList_ == null) ? 0 : indexOfCurrentResultSet_ + 1;
boolean willTickleServer = willTickleServer(numberOfResultSetsToClose, false);
if (willTickleServer) {
@@ -1450,9 +1445,14 @@ public class ClientStatement implements
if (agent_.loggingEnabled()) {
agent_.logWriter_.traceEntry(this, "executeUpdate", sql, columnIndexes);
}
- if (columnIndexes != null && columnIndexes.length > 0)
+
+ if (columnIndexes != null && columnIndexes.length > 0) {
autoGeneratedKeys_ = ClientStatement.RETURN_GENERATED_KEYS;
- generatedKeysColumnIndexes_ = columnIndexes;
+ generatedKeysColumnIndexes_ = columnIndexes.clone();
+ } else {
+ generatedKeysColumnIndexes_ = null;
+ }
+
int updateValue = (int) executeUpdateX(sql);
if (agent_.loggingEnabled()) {
agent_.logWriter_.traceExit(this, "executeUpdate", updateValue);
@@ -1474,9 +1474,14 @@ public class ClientStatement implements
if (agent_.loggingEnabled()) {
agent_.logWriter_.traceEntry(this, "executeLargeUpdate", sql, columnIndexes);
}
- if (columnIndexes != null && columnIndexes.length > 0)
+
+ if (columnIndexes != null && columnIndexes.length > 0) {
autoGeneratedKeys_ = ClientStatement.RETURN_GENERATED_KEYS;
- generatedKeysColumnIndexes_ = columnIndexes;
+ generatedKeysColumnIndexes_ = columnIndexes.clone();
+ } else {
+ generatedKeysColumnIndexes_ = null;
+ }
+
long updateValue = executeUpdateX(sql);
if (agent_.loggingEnabled()) {
agent_.logWriter_.traceExit(this, "executeLargeUpdate", updateValue);
@@ -1497,9 +1502,14 @@ public class ClientStatement implements
if (agent_.loggingEnabled()) {
agent_.logWriter_.traceEntry(this, "executeUpdate", sql, columnNames);
}
- if (columnNames != null && columnNames.length > 0)
+
+ if (columnNames != null && columnNames.length > 0) {
autoGeneratedKeys_ = ClientStatement.RETURN_GENERATED_KEYS;
- generatedKeysColumnNames_ = columnNames;
+ generatedKeysColumnNames_ = columnNames.clone();
+ } else {
+ generatedKeysColumnNames_ = null;
+ }
+
int updateValue = (int) executeUpdateX(sql);
if (agent_.loggingEnabled()) {
agent_.logWriter_.traceExit(this, "executeUpdate", updateValue);
@@ -1521,9 +1531,14 @@ public class ClientStatement implements
if (agent_.loggingEnabled()) {
agent_.logWriter_.traceEntry(this, "executeLargeUpdate", sql, columnNames);
}
- if (columnNames != null && columnNames.length > 0)
+
+ if (columnNames != null && columnNames.length > 0) {
autoGeneratedKeys_ = ClientStatement.RETURN_GENERATED_KEYS;
- generatedKeysColumnNames_ = columnNames;
+ generatedKeysColumnNames_ = columnNames.clone();
+ } else {
+ generatedKeysColumnIndexes_ = null;
+ }
+
long updateValue = executeUpdateX(sql);
if (agent_.loggingEnabled()) {
agent_.logWriter_.traceExit(this, "executeLargeUpdate", updateValue);
@@ -1565,9 +1580,14 @@ public class ClientStatement implements
if (agent_.loggingEnabled()) {
agent_.logWriter_.traceEntry(this, "execute", sql, columnIndexes);
}
- if (columnIndexes != null && columnIndexes.length > 0)
+
+ if (columnIndexes != null && columnIndexes.length > 0) {
autoGeneratedKeys_ = ClientStatement.RETURN_GENERATED_KEYS;
- generatedKeysColumnIndexes_ = columnIndexes;
+ generatedKeysColumnIndexes_ = columnIndexes.clone();
+ } else {
+ generatedKeysColumnIndexes_ = null;
+ }
+
boolean b = executeX(sql);
if (agent_.loggingEnabled()) {
agent_.logWriter_.traceExit(this, "execute", b);
@@ -1588,9 +1608,14 @@ public class ClientStatement implements
if (agent_.loggingEnabled()) {
agent_.logWriter_.traceEntry(this, "execute", sql, columnNames);
}
- if (columnNames != null && columnNames.length > 0)
+
+ if (columnNames != null && columnNames.length > 0) {
autoGeneratedKeys_ = ClientStatement.RETURN_GENERATED_KEYS;
- generatedKeysColumnNames_ = columnNames;
+ generatedKeysColumnNames_ = columnNames.clone();
+ } else {
+ generatedKeysColumnNames_ = null;
+ }
+
boolean b = executeX(sql);
if (agent_.loggingEnabled()) {
agent_.logWriter_.traceExit(this, "execute", b);
@@ -1815,7 +1840,7 @@ public class ClientStatement implements
Cursor singletonParams,
ClientResultSet[] resultSets) {
completeExecuteCall(sqlca, singletonParams);
- resultSetList_ = resultSets;
+ resultSetList_ = resultSets.clone();
if (resultSets != null) {
resultSet_ = resultSets[0];
}
@@ -3312,4 +3337,8 @@ public class ClientStatement implements
{
return ( (rs != null) && (!rs.isClosed()) );
}
+
+ void resetResultSetList() {
+ indexOfCurrentResultSet_ = -1; //reset ResultSetList
+ }
}