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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org