You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2016/06/10 12:53:04 UTC
[11/11] jena git commit: JENA-1192: Support for the MariaDB JDBC
driver.
JENA-1192: Support for the MariaDB JDBC driver.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/edba1313
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/edba1313
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/edba1313
Branch: refs/heads/master
Commit: edba13136e2dd201e26e24a62e3f1b8a5c20e81e
Parents: 9dd5ac3
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Jun 10 13:44:38 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Jun 10 13:44:58 2016 +0100
----------------------------------------------------------------------
.../jena/sdb/layout2/LoaderTuplesNodes.java | 3 +-
.../apache/jena/sdb/layout2/NodeLayout2.java | 2 +-
.../main/java/org/apache/jena/sdb/sql/JDBC.java | 36 ++++++++++++++++----
.../org/apache/jena/sdb/store/DatabaseType.java | 7 ++--
.../org/apache/jena/sdb/store/StoreFactory.java | 21 +++++++++++-
.../org/apache/jena/sdb/util/StoreUtils.java | 11 +++---
6 files changed, 60 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/edba1313/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/LoaderTuplesNodes.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/LoaderTuplesNodes.java b/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/LoaderTuplesNodes.java
index 395a8ee..0fee236 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/LoaderTuplesNodes.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/LoaderTuplesNodes.java
@@ -285,8 +285,7 @@ public class LoaderTuplesNodes
if (currentLoader == null) { // make a new loader
try {
currentLoader =
- tupleLoaderClass.getConstructor(SDBConnection.class, TableDesc.class,
- Integer.TYPE).newInstance(connection(), tuple.table, chunkSize);
+ tupleLoaderClass.getConstructor(SDBConnection.class, TableDesc.class, Integer.TYPE).newInstance(connection(), tuple.table, chunkSize);
} catch (Exception e) {
throw new SDBException("Problem making new tupleloader", e);
}
http://git-wip-us.apache.org/repos/asf/jena/blob/edba1313/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/NodeLayout2.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/NodeLayout2.java b/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/NodeLayout2.java
index bbe174d..6fa56b6 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/NodeLayout2.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/NodeLayout2.java
@@ -33,7 +33,7 @@ import org.slf4j.LoggerFactory;
public class NodeLayout2
{
- // Turn into the lexcial form
+ // Turn into the lexical form
public static String nodeToLex(Node node)
{
http://git-wip-us.apache.org/repos/asf/jena/blob/edba1313/jena-sdb/src/main/java/org/apache/jena/sdb/sql/JDBC.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/sql/JDBC.java b/jena-sdb/src/main/java/org/apache/jena/sdb/sql/JDBC.java
index ca55fcd..f1da4bd 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/sql/JDBC.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/sql/JDBC.java
@@ -40,9 +40,13 @@ public class JDBC
// The "well known" not a JDBC connection really scheme
public static final String jdbcNone = "jdbc:none" ;
+ public static final String jdbcDriverClassMySQL ;
+ public static final String jdbcDriverClassMariaDB ;
+
private static Map<DatabaseType, String> driver = new HashMap<DatabaseType, String>() ;
static {
driver.put(DatabaseType.MySQL, "com.mysql.jdbc.Driver") ;
+ driver.put(DatabaseType.MariaDB, "org.mariadb.jdbc.Driver") ;
driver.put(DatabaseType.PostgreSQL, "org.postgresql.Driver") ;
driver.put(DatabaseType.H2, "org.h2.Driver") ;
driver.put(DatabaseType.HSQLDB, "org.hsqldb.jdbcDriver") ;
@@ -52,6 +56,9 @@ public class JDBC
driver.put(DatabaseType.Oracle, "oracle.jdbc.driver.OracleDriver") ;
driver.put(DatabaseType.DB2, "com.ibm.db2.jcc.DB2Driver") ;
driver.put(DatabaseType.SAP, "com.sap.db.jdbc.Driver") ;
+
+ jdbcDriverClassMySQL = driver.get(DatabaseType.MySQL) ;
+ jdbcDriverClassMariaDB = driver.get(DatabaseType.MariaDB) ;
}
static public String getDriver(DatabaseType dbType) { return driver.get(dbType) ; }
@@ -62,6 +69,8 @@ public class JDBC
static public void loadDriverH2() { loadDriver(driver.get(DatabaseType.H2)) ; }
/** Explicitly load the MySQL driver */
static public void loadDriverMySQL() { loadDriver(driver.get(DatabaseType.MySQL)) ; }
+ /** Explicitly load the MariaDB driver */
+ static public void loadDriverMariaDB() { loadDriver(driver.get(DatabaseType.MariaDB)) ; }
/** Explicitly load the PostgreSQL driver */
static public void loadDriverPGSQL() { loadDriver(driver.get(DatabaseType.PostgreSQL)); }
/** Explicitly load the Derby driver */
@@ -99,16 +108,28 @@ public class JDBC
return DriverManager.getConnection(url, user, password) ;
}
-// static public void loadClass(String className)
-// { Loader.loadClass(className) ; }
-
static private void loadClass(String className)
{
- try { Class.forName(className); }
+ try { Class.forName(className); return ; }
catch (ClassNotFoundException ex)
- { throw new SDBNotFoundException("Class.forName("+className+")", ex) ; }
+ {
+ // Ir MySQL or MariaDB, try the other one.
+ if ( className.equals(jdbcDriverClassMySQL) || className.equals(jdbcDriverClassMariaDB) ) {
+ String classNameAlt = null ;
+ if ( className.equals(jdbcDriverClassMySQL) )
+ classNameAlt = jdbcDriverClassMariaDB ;
+ else if ( className.equals(jdbcDriverClassMariaDB) )
+ classNameAlt = jdbcDriverClassMySQL ;
+ try { Class.forName(classNameAlt) ; return ; }
+ catch (ClassNotFoundException ex2) {}
+ }
+ throw new SDBNotFoundException("Class.forName("+className+")", ex) ; }
}
+ static private void loadClass1(String className) {
+
+ }
+
public static String makeURL(String type, String host, String dbName)
{ return makeURL(type, host, dbName, null, null) ; }
@@ -125,8 +146,11 @@ public class JDBC
if ( password == null )
password = Access.getPassword() ;
- if ( type.equals("mysql") )
+ if ( type.equals("mysql") || type.equals("mariadb") )
{
+ // MariaDB responds to jdbc:mysql:...
+ // but MySQL does not respond to jdbc:mariadb:...
+ type = "mysql" ;
String s = String.format("jdbc:%s://%s/%s", type, host, dbName) ;
return s ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/edba1313/jena-sdb/src/main/java/org/apache/jena/sdb/store/DatabaseType.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/store/DatabaseType.java b/jena-sdb/src/main/java/org/apache/jena/sdb/store/DatabaseType.java
index 5e3d83b..685b0ca 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/store/DatabaseType.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/store/DatabaseType.java
@@ -35,6 +35,8 @@ public class DatabaseType extends Symbol implements Named
public static final DatabaseType H2 = new DatabaseType("H2") ;
public static final DatabaseType HSQLDB = new DatabaseType("HSQLDB") ;
public static final DatabaseType MySQL = new DatabaseType("MySQL") ;
+ // MariaDB is currently treated as MySQL - the only difference is that a different JDBC driver is loaded.
+ public static final DatabaseType MariaDB = new DatabaseType("MariaDB") ;
public static final DatabaseType PostgreSQL = new DatabaseType("PostgreSQL") ;
public static final DatabaseType SQLServer = new DatabaseType("SQLServer") ;
public static final DatabaseType Oracle = new DatabaseType("Oracle") ;
@@ -63,7 +65,6 @@ public class DatabaseType extends Symbol implements Named
static void init()
{
- // Java databases
register(Derby) ;
registerName("JavaDB", Derby) ;
@@ -78,14 +79,12 @@ public class DatabaseType extends Symbol implements Named
registerName("h2:tcp", H2) ;
registerName("h2", H2) ;
- // Open source DBs
register(MySQL) ;
- // registerName("MySQL5", HSQLDB) ; // am I right in assuming that "HSQLDB" should actually be "MySQL"
+ register(MariaDB) ;
registerName("MySQL5", MySQL) ;
register(PostgreSQL) ;
- // Commercial DBs
register(SQLServer) ;
registerName("MSSQLServer" , SQLServer) ;
registerName("MSSQLServerExpress" , SQLServer) ;
http://git-wip-us.apache.org/repos/asf/jena/blob/edba1313/jena-sdb/src/main/java/org/apache/jena/sdb/store/StoreFactory.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/store/StoreFactory.java b/jena-sdb/src/main/java/org/apache/jena/sdb/store/StoreFactory.java
index a9cb925..58f6e46 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/store/StoreFactory.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/store/StoreFactory.java
@@ -173,6 +173,13 @@ public class StoreFactory
@Override
public Store create(SDBConnection conn, StoreDesc desc)
{ return new StoreTriplesNodesHashMySQL(conn, desc, desc.engineType) ; } }) ;
+
+ // Treat as MySQL
+ register(MariaDB, LayoutTripleNodesHash,
+ new StoreMaker() {
+ @Override
+ public Store create(SDBConnection conn, StoreDesc desc)
+ { return new StoreTriplesNodesHashMySQL(conn, desc, desc.engineType) ; } }) ;
register(PostgreSQL, LayoutTripleNodesHash,
new StoreMaker() {
@@ -232,6 +239,12 @@ public class StoreFactory
public Store create(SDBConnection conn, StoreDesc desc)
{ return new StoreTriplesNodesIndexMySQL(conn, desc, desc.engineType) ; } }) ;
+ register(MariaDB, LayoutTripleNodesIndex,
+ new StoreMaker() {
+ @Override
+ public Store create(SDBConnection conn, StoreDesc desc)
+ { return new StoreTriplesNodesIndexMySQL(conn, desc, desc.engineType) ; } }) ;
+
register(PostgreSQL, LayoutTripleNodesIndex,
new StoreMaker() {
@Override
@@ -290,6 +303,12 @@ public class StoreFactory
public Store create(SDBConnection conn, StoreDesc desc)
{ return new StoreSimpleMySQL(conn, desc, desc.engineType) ; } }) ;
+ register(MariaDB, LayoutSimple,
+ new StoreMaker() {
+ @Override
+ public Store create(SDBConnection conn, StoreDesc desc)
+ { return new StoreSimpleMySQL(conn, desc, desc.engineType) ; } }) ;
+
register(PostgreSQL, LayoutSimple,
new StoreMaker() {
@Override
@@ -323,7 +342,7 @@ public class StoreFactory
static private void checkRegistry()
{
- DatabaseType[] dbTypes = {Derby, HSQLDB, H2, MySQL, PostgreSQL, SQLServer, Oracle, SAP} ;
+ DatabaseType[] dbTypes = {Derby, HSQLDB, H2, MySQL, MariaDB, PostgreSQL, SQLServer, Oracle, SAP} ;
LayoutType[] layoutTypes = {LayoutTripleNodesHash, LayoutTripleNodesIndex, LayoutSimple} ;
Set <StoreMaker> seen = new HashSet<StoreMaker>() ;
http://git-wip-us.apache.org/repos/asf/jena/blob/edba1313/jena-sdb/src/main/java/org/apache/jena/sdb/util/StoreUtils.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/util/StoreUtils.java b/jena-sdb/src/main/java/org/apache/jena/sdb/util/StoreUtils.java
index c259279..70248ab 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/util/StoreUtils.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/util/StoreUtils.java
@@ -18,13 +18,9 @@
package org.apache.jena.sdb.util;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Collection;
-import java.util.HashSet;
import java.sql.Connection;
import java.sql.SQLException;
+import java.util.* ;
import org.apache.jena.graph.Node ;
import org.apache.jena.query.Dataset ;
@@ -67,7 +63,10 @@ public class StoreUtils
public static boolean isMySQL(Store store)
{
- return store.getDatabaseType().equals(DatabaseType.MySQL) ;
+ DatabaseType type = store.getDatabaseType() ;
+
+ return Objects.equals(type, DatabaseType.MySQL) ||
+ Objects.equals(type, DatabaseType.MariaDB) ;
}
public static boolean isSQLServer(Store store)