Author: reschke
Date: Wed Mar 26 15:29:46 2014
New Revision: 1581886

URL: http://svn.apache.org/r1581886
Log:
OAK-1544 - minimal changes to RDBBlobStore for DB2

Removed:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBMeta.java
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/RDBDataSourceFactory.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=1581886&r1=1581885&r2=1581886&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
 Wed Mar 26 15:29:46 2014
@@ -103,19 +103,39 @@ public class RDBBlobStore extends Cachin
     private void initialize(Connection con) throws Exception {
         con.setAutoCommit(false);
 
-        try {
-            createTables(con, "binary");
-        } catch (SQLException ex) {
-            con.rollback();
-            LOG.debug("failed to create tables, retrying after getting DB 
metadata", ex);
-            // try to query database meta info for binary type
-            String btype = RDBMeta.findBinaryType(con.getMetaData());
-            if (btype == null) {
-                String message = "Could not determine binary type for " + 
RDBMeta.getDataBaseName(con.getMetaData());
-                LOG.error(message);
-                throw new Exception(message);
+        for (String tableName : new String[] { "DATASTORE_META", 
"DATASTORE_DATA" }) {
+            try {
+                PreparedStatement stmt = con.prepareStatement("select ID from 
" + tableName + " where ID = ?");
+                stmt.setString(1, "0");
+                stmt.executeQuery();
+            } catch (SQLException ex) {
+                // table does not appear to exist
+                con.rollback();
+
+                String dbtype = con.getMetaData().getDatabaseProductName();
+                LOG.info("Attempting to create table " + tableName + " in " + 
dbtype);
+
+                Statement stmt = con.createStatement();
+
+                if (tableName.equals("DATASTORE_META")) {
+                    stmt.execute("create table " + tableName
+                            + " (ID varchar(1000) not null primary key, LEVEL 
int, LASTMOD bigint)");
+                } else {
+                    // the code below likely will need to be extended for new
+                    // database types
+                    if ("PostgreSQL".equals(dbtype)) {
+                        stmt.execute("create table " + tableName + " (ID 
varchar(1000) not null primary key, DATA bytea)");
+                    } else if ("DB2".equals(dbtype) || (dbtype != null && 
dbtype.startsWith("DB2/"))) {
+                        stmt.execute("create table " + tableName + " (ID 
varchar(1000) not null primary key, DATA blob)");
+                    } else {
+                        stmt.execute("create table " + tableName + " (ID 
varchar(1000) not null primary key, DATA blob)");
+                    }
+                }
+
+                stmt.close();
+
+                con.commit();
             }
-            createTables(con, btype);
         }
 
         this.connection = con;

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java?rev=1581886&r1=1581885&r2=1581886&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
 Wed Mar 26 15:29:46 2014
@@ -24,7 +24,7 @@ import javax.sql.DataSource;
 
 import org.apache.commons.dbcp.BasicDataSource;
 
-public class RDBDataSourceFactory extends RDBMeta {
+public class RDBDataSourceFactory {
 
     public static DataSource forJdbcUrl(String url, String username, String 
passwd) throws SQLException {
         BasicDataSource bds = new BasicDataSource();


Reply via email to