You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kf...@apache.org on 2018/03/12 07:13:58 UTC
svn commit: r1826515 - in /tomcat/tc7.0.x/trunk:
modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java
webapps/docs/changelog.xml
Author: kfujino
Date: Mon Mar 12 07:13:58 2018
New Revision: 1826515
URL: http://svn.apache.org/viewvc?rev=1826515&view=rev
Log:
Ensure that parameters have been cleared when PreparedStatement and/or CallableStatement are cached.
Modified:
tomcat/tc7.0.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
Modified: tomcat/tc7.0.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java?rev=1826515&r1=1826514&r2=1826515&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java (original)
+++ tomcat/tc7.0.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java Mon Mar 12 07:13:58 2018
@@ -18,8 +18,8 @@ package org.apache.tomcat.jdbc.pool.inte
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import java.sql.Statement;
import java.util.Arrays;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -158,7 +158,7 @@ public class StatementCache extends Stat
boolean process = process(this.types, method, false);
if (process) {
Object result = null;
- CachedStatement statementProxy = new CachedStatement((Statement)statement,sql);
+ CachedStatement statementProxy = new CachedStatement((PreparedStatement)statement,sql);
result = constructor.newInstance(new Object[] { statementProxy });
statementProxy.setActualProxy(result);
statementProxy.setConnection(proxy);
@@ -248,10 +248,10 @@ public class StatementCache extends Stat
return cache;
}
- protected class CachedStatement extends StatementDecoratorInterceptor.StatementProxy<Statement> {
+ protected class CachedStatement extends StatementDecoratorInterceptor.StatementProxy<PreparedStatement> {
boolean cached = false;
CacheKey key;
- public CachedStatement(Statement parent, String sql) {
+ public CachedStatement(PreparedStatement parent, String sql) {
super(parent, sql);
}
@@ -269,6 +269,9 @@ public class StatementCache extends Stat
if (result != null && !result.isClosed()) {
result.close();
}
+ // clear parameter
+ getDelegate().clearParameters();
+
//create a new facade
Object actualProxy = getConstructor().newInstance(new Object[] { proxy });
proxy.setActualProxy(actualProxy);
Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1826515&r1=1826514&r2=1826515&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Mon Mar 12 07:13:58 2018
@@ -116,6 +116,11 @@
Ensure that <code>SQLWarning</code> has been cleared when connection
returns to the pool. (kfujino)
</fix>
+ <fix>
+ Ensure that parameters have been cleared when
+ <code>PreparedStatement</code> and/or <code>CallableStatement</code> are
+ cached. (kfujino)
+ </fix>
</changelog>
</subsection>
<subsection name="Other">
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org