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();