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:11:41 UTC

svn commit: r1826513 - in /tomcat/tc8.5.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:11:41 2018
New Revision: 1826513

URL: http://svn.apache.org/viewvc?rev=1826513&view=rev
Log:
Ensure that parameters have been cleared when PreparedStatement and/or CallableStatement are cached.

Modified:
    tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java
    tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml

Modified: tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java?rev=1826513&r1=1826512&r2=1826513&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java (original)
+++ tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java Mon Mar 12 07:11:41 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;
@@ -175,7 +175,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);
@@ -272,10 +272,10 @@ public class StatementCache extends Stat
         return cache.size();
     }
 
-    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);
         }
 
@@ -293,6 +293,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/tc8.5.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml?rev=1826513&r1=1826512&r2=1826513&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml Mon Mar 12 07:11:41 2018
@@ -84,6 +84,11 @@
       <add>
         Enable clearing of <code>SQLWarning</code> via JMX. (kfujino)
       </add>
+      <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