Author: reschke
Date: Wed Jan 29 15:02:02 2020
New Revision: 1873308
URL: http://svn.apache.org/viewvc?rev=1873308&view=rev
Log:
OAK-8882: RDBBlobStore: dump table structure on startup
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.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=1873308&r1=1873307&r2=1873308&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 Jan 29 15:02:02 2020
@@ -32,10 +32,12 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@@ -196,6 +198,7 @@ public class RDBBlobStore extends Cachin
List<String> tablesCreated = new ArrayList<String>();
List<String> tablesPresent = new ArrayList<String>();
+ Map<String, String> tableInfo = new HashMap<>();
Statement createStatement = null;
@@ -205,13 +208,18 @@ public class RDBBlobStore extends Cachin
try {
// 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;
+ ResultSet checkResultSet =
checkStatement.executeQuery("select ID from " + tableName + " where ID = '0'");
+
+ // try to discover metadata
+ tableInfo.put(tableName,
RDBJDBCTools.dumpResultSetMeta(checkResultSet.getMetaData()));
+
+ closeResultSet(checkResultSet);
+ checkStatement = closeStatement(checkStatement);
con.commit();
+
tablesPresent.add(tableName);
} catch (SQLException ex) {
- closeStatement(checkStatement);
+ checkStatement = closeStatement(checkStatement);
// table does not appear to exist
con.rollback();
@@ -237,6 +245,16 @@ public class RDBBlobStore extends Cachin
con.commit();
+ ResultSet checkResultSet = null;
+ try {
+ checkStatement = con.createStatement();
+ checkResultSet = checkStatement.executeQuery("select *
from " + tableName + " where ID = '0'");
+ tableInfo.put(tableName,
RDBJDBCTools.dumpResultSetMeta(checkResultSet.getMetaData()));
+ } finally {
+ closeResultSet(checkResultSet);
+ closeStatement(checkStatement);
+ }
+
tablesCreated.add(tableName);
}
}
@@ -246,7 +264,8 @@ public class RDBBlobStore extends Cachin
}
LOG.info("RDBBlobStore (" + getModuleVersion() + ") instantiated
for database " + dbDesc + ", using driver: "
- + driverDesc + ", connecting to: " + dbUrl + ",
transaction isolation level: " + isolationDiags);
+ + driverDesc + ", connecting to: " + dbUrl + ",
transaction isolation level: " + isolationDiags + ", "
+ + tableInfo);
if (!tablesPresent.isEmpty()) {
LOG.info("Tables present upon startup: " + tablesPresent);
}