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 2015/08/10 14:41:25 UTC

svn commit: r1695050 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb: RDBBlobStore.java RDBDocumentStore.java RDBJDBCTools.java

Author: reschke
Date: Mon Aug 10 12:41:24 2015
New Revision: 1695050

URL: http://svn.apache.org/r1695050
Log:
OAK-3198: RDB code cleanup (WIP): version detection

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

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java?rev=1695050&r1=1695049&r2=1695050&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java Mon Aug 10 12:41:24 2015
@@ -140,36 +140,28 @@ public class RDBBlobStore extends Cachin
     protected String tnMeta;
     private Set<String> tablesToBeDropped = new HashSet<String>();
 
-    private static void versionCheck(DatabaseMetaData md, int xmaj, int xmin, String description) throws SQLException {
-        int maj = md.getDatabaseMajorVersion();
-        int min = md.getDatabaseMinorVersion();
-        if (maj < xmaj || (maj == xmaj && min < xmin)) {
-            LOG.info("Unsupported " + description + " version: " + maj + "." + min + ", expected at least " + xmaj + "." + xmin);
-        }
-    }
-
     /**
      * Defines variation in the capabilities of different RDBs.
      */
     protected enum DB {
         H2("H2") {
             @Override
-            public void checkVersion(DatabaseMetaData md) throws SQLException {
-                versionCheck(md, 1, 4, description);
+            public String checkVersion(DatabaseMetaData md) throws SQLException {
+                return RDBJDBCTools.versionCheck(md, 1, 4, description);
             }
         },
 
         DERBY("Apache Derby") {
             @Override
-            public void checkVersion(DatabaseMetaData md) throws SQLException {
-                versionCheck(md, 10, 11, description);
+            public String checkVersion(DatabaseMetaData md) throws SQLException {
+                return RDBJDBCTools.versionCheck(md, 10, 11, description);
             }
         },
 
         DB2("DB2") {
             @Override
-            public void checkVersion(DatabaseMetaData md) throws SQLException {
-                versionCheck(md, 10, 1, description);
+            public String checkVersion(DatabaseMetaData md) throws SQLException {
+                return RDBJDBCTools.versionCheck(md, 10, 1, description);
             }
 
             @Override
@@ -180,8 +172,8 @@ public class RDBBlobStore extends Cachin
 
         MSSQL("Microsoft SQL Server") {
             @Override
-            public void checkVersion(DatabaseMetaData md) throws SQLException {
-                versionCheck(md, 11, 0, description);
+            public String checkVersion(DatabaseMetaData md) throws SQLException {
+                return RDBJDBCTools.versionCheck(md, 11, 0, description);
             }
 
             @Override
@@ -192,8 +184,8 @@ public class RDBBlobStore extends Cachin
 
         MYSQL("MySQL") {
             @Override
-            public void checkVersion(DatabaseMetaData md) throws SQLException {
-                versionCheck(md, 5, 5, description);
+            public String checkVersion(DatabaseMetaData md) throws SQLException {
+                return RDBJDBCTools.versionCheck(md, 5, 5, description);
             }
 
             @Override
@@ -204,8 +196,8 @@ public class RDBBlobStore extends Cachin
 
         ORACLE("Oracle") {
             @Override
-            public void checkVersion(DatabaseMetaData md) throws SQLException {
-                versionCheck(md, 12, 1, description);
+            public String checkVersion(DatabaseMetaData md) throws SQLException {
+                return RDBJDBCTools.versionCheck(md, 12, 1, description);
             }
 
             @Override
@@ -216,8 +208,8 @@ public class RDBBlobStore extends Cachin
 
         POSTGRES("PostgreSQL") {
             @Override
-            public void checkVersion(DatabaseMetaData md) throws SQLException {
-                versionCheck(md, 9, 3, description);
+            public String checkVersion(DatabaseMetaData md) throws SQLException {
+                return RDBJDBCTools.versionCheck(md, 9, 3, description);
             }
 
             @Override
@@ -229,8 +221,8 @@ public class RDBBlobStore extends Cachin
         DEFAULT("default") {
         };
 
-        public void checkVersion(DatabaseMetaData md) throws SQLException {
-            LOG.info("Unknown database type: " + md.getDatabaseProductName());
+        public String checkVersion(DatabaseMetaData md) throws SQLException {
+            return "Unknown database type: " + md.getDatabaseProductName();
         }
 
         public String getDataTableCreationStatement(String tableName) {
@@ -286,6 +278,12 @@ public class RDBBlobStore extends Cachin
         }
 
         DatabaseMetaData md = con.getMetaData();
+        DB db = DB.getValue(md.getDatabaseProductName());
+        String versionDiags = db.checkVersion(md);
+        if (!versionDiags.isEmpty()) {
+            LOG.info(versionDiags);
+        }
+
         String dbDesc = String.format("%s %s (%d.%d)", md.getDatabaseProductName(), md.getDatabaseProductVersion(),
                 md.getDatabaseMajorVersion(), md.getDatabaseMinorVersion());
         String driverDesc = String.format("%s %s (%d.%d)", md.getDriverName(), md.getDriverVersion(), md.getDriverMajorVersion(),
@@ -314,8 +312,6 @@ public class RDBBlobStore extends Cachin
                     // table does not appear to exist
                     con.rollback();
 
-                    DB db = DB.getValue(md.getDatabaseProductName());
-
                     createStatement = con.createStatement();
 
                     if (this.tnMeta.equals(tableName)) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1695050&r1=1695049&r2=1695050&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java Mon Aug 10 12:41:24 2015
@@ -402,15 +402,6 @@ public class RDBDocumentStore implements
 
     enum FETCHFIRSTSYNTAX { FETCHFIRST, LIMIT, TOP};
 
-
-    private static void versionCheck(DatabaseMetaData md, int xmaj, int xmin, String description) throws SQLException {
-        int maj = md.getDatabaseMajorVersion();
-        int min = md.getDatabaseMinorVersion();
-        if (maj < xmaj || (maj == xmaj && min < xmin)) {
-            LOG.info("Unsupported " + description + " version: " + maj + "." + min + ", expected at least " + xmaj + "." + xmin);
-        }
-    }
-
     /**
      * Defines variation in the capabilities of different RDBs.
      */
@@ -420,15 +411,15 @@ public class RDBDocumentStore implements
 
         H2("H2") {
             @Override
-            public void checkVersion(DatabaseMetaData md) throws SQLException {
-                versionCheck(md, 1, 4, description);
+            public String checkVersion(DatabaseMetaData md) throws SQLException {
+                return RDBJDBCTools.versionCheck(md, 1, 4, description);
             }
         },
 
         DERBY("Apache Derby") {
             @Override
-            public void checkVersion(DatabaseMetaData md) throws SQLException {
-                versionCheck(md, 10, 11, description);
+            public String checkVersion(DatabaseMetaData md) throws SQLException {
+                return RDBJDBCTools.versionCheck(md, 10, 11, description);
             }
 
             public boolean allowsCaseInSelect() {
@@ -438,8 +429,8 @@ public class RDBDocumentStore implements
 
         POSTGRES("PostgreSQL") {
             @Override
-            public void checkVersion(DatabaseMetaData md) throws SQLException {
-                versionCheck(md, 9, 3, description);
+            public String checkVersion(DatabaseMetaData md) throws SQLException {
+                return RDBJDBCTools.versionCheck(md, 9, 3, description);
             }
 
             @Override
@@ -478,8 +469,8 @@ public class RDBDocumentStore implements
 
         DB2("DB2") {
             @Override
-            public void checkVersion(DatabaseMetaData md) throws SQLException {
-                versionCheck(md, 10, 1, description);
+            public String checkVersion(DatabaseMetaData md) throws SQLException {
+                return RDBJDBCTools.versionCheck(md, 10, 1, description);
             }
 
             @Override
@@ -517,8 +508,8 @@ public class RDBDocumentStore implements
 
         ORACLE("Oracle") {
             @Override
-            public void checkVersion(DatabaseMetaData md) throws SQLException {
-                versionCheck(md, 12, 1, description);
+            public String checkVersion(DatabaseMetaData md) throws SQLException {
+                return RDBJDBCTools.versionCheck(md, 12, 1, description);
             }
 
             @Override
@@ -562,8 +553,8 @@ public class RDBDocumentStore implements
 
         MYSQL("MySQL") {
             @Override
-            public void checkVersion(DatabaseMetaData md) throws SQLException {
-                versionCheck(md, 5, 5, description);
+            public String checkVersion(DatabaseMetaData md) throws SQLException {
+                return RDBJDBCTools.versionCheck(md, 5, 5, description);
             }
 
             @Override
@@ -611,8 +602,8 @@ public class RDBDocumentStore implements
 
         MSSQL("Microsoft SQL Server") {
             @Override
-            public void checkVersion(DatabaseMetaData md) throws SQLException {
-                versionCheck(md, 11, 0, description);
+            public String checkVersion(DatabaseMetaData md) throws SQLException {
+                return RDBJDBCTools.versionCheck(md, 11, 0, description);
             }
 
             @Override
@@ -668,8 +659,8 @@ public class RDBDocumentStore implements
         /**
          * Check the database brand and version
          */
-        public void checkVersion(DatabaseMetaData md) throws SQLException {
-            LOG.info("Unknown database type: " + md.getDatabaseProductName());
+        public String checkVersion(DatabaseMetaData md) throws SQLException {
+            return "Unknown database type: " + md.getDatabaseProductName();
         }
 
         /**
@@ -863,7 +854,10 @@ public class RDBDocumentStore implements
                 .put("db", md.getDatabaseProductName())
                 .put("version", md.getDatabaseProductVersion())
                 .build();
-        db.checkVersion(md);
+        String versionDiags = db.checkVersion(md);
+        if (!versionDiags.isEmpty()) {
+            LOG.info(versionDiags);
+        }
 
         if (! "".equals(db.getInitializationStatement())) {
             Statement stmt = null;

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java?rev=1695050&r1=1695049&r2=1695050&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java Mon Aug 10 12:41:24 2015
@@ -17,11 +17,11 @@
 package org.apache.jackrabbit.oak.plugins.document.rdb;
 
 import java.sql.Connection;
+import java.sql.DatabaseMetaData;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
-import java.util.Map;
 
 import javax.annotation.Nonnull;
 
@@ -154,4 +154,18 @@ public class RDBJDBCTools {
         }
         return false;
     }
+
+    /**
+     * Generate version diagnostics.
+     */
+    protected static String versionCheck(DatabaseMetaData md, int xmaj, int xmin, String description) throws SQLException {
+        int maj = md.getDatabaseMajorVersion();
+        int min = md.getDatabaseMinorVersion();
+        if (maj < xmaj || (maj == xmaj && min < xmin)) {
+            return "Unsupported " + description + " version: " + maj + "." + min + ", expected at least " + xmaj + "." + xmin;
+        }
+        else {
+            return "";
+        }
+    }
 }