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 "";
+ }
+ }
}