Author: reschke
Date: Wed Sep 27 15:47:01 2017
New Revision: 1809866

URL: http://svn.apache.org/viewvc?rev=1809866&view=rev
Log:
OAK-6237: Tomcat JDBC pool's StatementCache interceptor may cache borked 
PreparedStatements with DB2

Avoid the use of PreparedStatements for checking table existence

Modified:
    
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
    
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java?rev=1809866&r1=1809865&r2=1809866&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
 Wed Sep 27 15:47:01 2017
@@ -182,11 +182,11 @@ public class RDBBlobStore extends Cachin
 
         try {
             for (String tableName : new String[] { this.tnData, this.tnMeta }) 
{
-                PreparedStatement checkStatement = null;
+                Statement checkStatement = null;
                 try {
-                    checkStatement = con.prepareStatement("select ID from " + 
tableName + " where ID = ?");
-                    checkStatement.setString(1, "0");
-                    checkStatement.executeQuery().close();
+                    // avoid PreparedStatement due to weird DB2 behavior 
(OAK-6237)
+                    checkStatement = con.createStatement();
+                    checkStatement.executeQuery("select ID from " + tableName 
+ " where ID = '0'").close();
                     checkStatement.close();
                     checkStatement = null;
                     con.commit();

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1809866&r1=1809865&r2=1809866&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
 Wed Sep 27 15:47:01 2017
@@ -1042,15 +1042,15 @@ public class RDBDocumentStore implements
         }
         String tableName = tmd.getName();
 
-        PreparedStatement checkStatement = null;
+        Statement checkStatement = null;
 
         ResultSet checkResultSet = null;
         Statement creatStatement = null;
         Statement upgradeStatement = null;
         try {
-            checkStatement = con.prepareStatement("select * from " + tableName 
+ " where ID = ?");
-            checkStatement.setString(1, "0:/");
-            checkResultSet = checkStatement.executeQuery();
+            // avoid PreparedStatement due to weird DB2 behavior (OAK-6237)
+            checkStatement = con.createStatement();
+            checkResultSet = checkStatement.executeQuery("select * from " + 
tableName + " where ID = '0'");
 
             // try to discover size of DATA column and binary-ness of ID
             ResultSetMetaData met = checkResultSet.getMetaData();


Reply via email to