You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2020/04/26 07:41:06 UTC

svn commit: r1877009 - in /jackrabbit/oak/branches/1.8: ./ oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java

Author: reschke
Date: Sun Apr 26 07:41:06 2020
New Revision: 1877009

URL: http://svn.apache.org/viewvc?rev=1877009&view=rev
Log:
OAK-8882: RDBBlobStore: dump table structure on startup  (merged r1873308, 1874097, and 1874246 into 1.8)

Modified:
    jackrabbit/oak/branches/1.8/   (props changed)
    jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java

Propchange: jackrabbit/oak/branches/1.8/
------------------------------------------------------------------------------
  Merged /jackrabbit/oak/trunk:r1873308,1874097,1874246

Modified: jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java?rev=1877009&r1=1877008&r2=1877009&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java (original)
+++ jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java Sun Apr 26 07:41:06 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;
 
@@ -180,6 +182,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;
 
@@ -189,13 +192,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 * 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();
@@ -215,6 +223,17 @@ 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()));
+                        con.commit();
+                    } finally {
+                        closeResultSet(checkResultSet);
+                        closeStatement(checkStatement);
+                    }
+
                     tablesCreated.add(tableName);
                 }
             }
@@ -224,7 +243,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);
             }