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 2019/02/12 17:06:04 UTC

svn commit: r1853457 - in /jackrabbit/oak/branches/1.10: ./ oak-run/src/main/java/org/apache/jackrabbit/oak/run/ oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/

Author: reschke
Date: Tue Feb 12 17:06:03 2019
New Revision: 1853457

URL: http://svn.apache.org/viewvc?rev=1853457&view=rev
Log:
OAK-8043: RDB: expose DDL generation functionality in oak-run (ported to 1.10)

Added:
    jackrabbit/oak/branches/1.10/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RDBDDLDumpCommand.java
      - copied unchanged from r1853433, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RDBDDLDumpCommand.java
Modified:
    jackrabbit/oak/branches/1.10/   (props changed)
    jackrabbit/oak/branches/1.10/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java
    jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBHelper.java

Propchange: jackrabbit/oak/branches/1.10/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb 12 17:06:03 2019
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1851236,1851253,1851451,1852052,1852084,1852451,1852492-1852493,1852920,1853434-1853435
+/jackrabbit/oak/trunk:1851236,1851253,1851451,1852052,1852084,1852451,1852492-1852493,1852920,1853393,1853433
 /jackrabbit/trunk:1345480

Modified: jackrabbit/oak/branches/1.10/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.10/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java?rev=1853457&r1=1853456&r2=1853457&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.10/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java (original)
+++ jackrabbit/oak/branches/1.10/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java Tue Feb 12 17:06:03 2019
@@ -44,6 +44,7 @@ public final class AvailableModes {
             .put("history", new HistoryCommand())
             .put(JsonIndexCommand.INDEX, new JsonIndexCommand())
             .put(PersistentCacheCommand.PERSISTENTCACHE, new PersistentCacheCommand())
+            .put("rdbddldump", new RDBDDLDumpCommand())
             .put("revisions", new RevisionsCommand())
             .put("recovery", new RecoveryCommand())
             .put("repair", new RepairCommand())

Modified: jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBHelper.java?rev=1853457&r1=1853456&r2=1853457&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBHelper.java (original)
+++ jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBHelper.java Tue Feb 12 17:06:03 2019
@@ -16,18 +16,21 @@
  */
 package org.apache.jackrabbit.oak.plugins.document.rdb;
 
+import java.util.Arrays;
+
 /**
  * Convenience class that dumps the table creation statements for various
  * database types.
  * <p>
  * Run with:
+ * 
  * <pre>
  * java -cp oak-run-<i>version</i>.jar org.apache.jackrabbit.oak.plugins.document.rdb.RDBHelper
  * </pre>
  */
 public class RDBHelper {
 
-    private static String[] databases = { "Apache Derby", "DB2", "H2", "Microsoft SQL Server", "MySQL", "Oracle", "PostgreSQL",
+    private static String[] DATABASES = { "Apache Derby", "DB2", "H2", "Microsoft SQL Server", "MySQL", "Oracle", "PostgreSQL",
             "default" };
 
     public static void main(String[] args) {
@@ -37,31 +40,64 @@ public class RDBHelper {
         int upgradeTo = defaultOpts.getUpgradeToSchema();
         System.out.println("Table Creation Statements for RDBBlobStore and RDBDocumentStore");
         System.out.println("RDBDocumentStore initial version: " + initial + ", with modifications up to version: " + upgradeTo);
+        System.out.println(
+                "(use system properties org.apache.jackrabbit.oak.plugins.document.rdb.RDBOptions.INITIALSCHEMA and org.apache.jackrabbit.oak.plugins.document.rdb.RDBOptions.UPGRADETOSCHEMA to specify initial DB schema, and schema to upgrade to)");
+        System.out.println();
 
-        for (String database : databases) {
-            System.out.println(database);
-            System.out.println();
+        for (String database : DATABASES) {
+            internalDump(database, initial, upgradeTo);
+        }
+    }
 
-            RDBDocumentStoreDB ddb = RDBDocumentStoreDB.getValue(database);
-            RDBBlobStoreDB bdb = RDBBlobStoreDB.getValue(database);
+    public static String getSupportedDatabases() {
+        return Arrays.asList(DATABASES).toString();
+    }
 
-            for (String table : RDBDocumentStore.getTableNames()) {
-                System.out.println("  " + ddb.getTableCreationStatement(table, defaultOpts.getInitialSchema()));
-                for (String s : ddb.getIndexCreationStatements(table, defaultOpts.getInitialSchema())) {
-                    System.out.println("    " + s);
-                }
-                for (int level = initial + 1; level <= upgradeTo; level++) {
-                    for (String statement : ddb.getTableUpgradeStatements(table, level)) {
-                        System.out.println("  " + statement);
-                    }
-                }
-            }
-            System.out.println();
+    public static void dump(String database, Integer initial, Integer upgrade) {
+        RDBOptions defaultOpts = new RDBOptions();
+
+        if (database == null) {
+            internalDump(initial == null ? defaultOpts.getInitialSchema() : initial,
+                    upgrade == null ? defaultOpts.getUpgradeToSchema() : upgrade);
+        } else {
+            internalDump(database, initial == null ? defaultOpts.getInitialSchema() : initial,
+                    upgrade == null ? defaultOpts.getUpgradeToSchema() : upgrade);
+        }
+    }
 
-            System.out.println("  " + bdb.getMetaTableCreationStatement("DATASTORE_META"));
-            System.out.println("  " + bdb.getDataTableCreationStatement("DATASTORE_DATA"));
+    private static void internalDump(int initial, int upgradeTo) {
+        for (String database : DATABASES) {
+            internalDump(database, initial, upgradeTo);
             System.out.println();
+        }
+    }
+
+    private static void internalDump(String database, int initial, int upgradeTo) {
+        System.out.println("-- " + database);
+
+        RDBDocumentStoreDB ddb = RDBDocumentStoreDB.getValue(database);
+        RDBBlobStoreDB bdb = RDBBlobStoreDB.getValue(database);
+
+        for (String table : RDBDocumentStore.getTableNames()) {
             System.out.println();
+            System.out.println("  -- creating table " + table + " for schema version " + initial);
+            System.out.println("  " + ddb.getTableCreationStatement(table, initial));
+            for (String s : ddb.getIndexCreationStatements(table, initial)) {
+                System.out.println("  " + s);
+            }
+            for (int level = initial + 1; level <= upgradeTo; level++) {
+                System.out.println("  -- upgrading table " + table + " to schema version " + level);
+                for (String statement : ddb.getTableUpgradeStatements(table, level)) {
+                    System.out.println("  " + statement);
+                }
+            }
         }
+        System.out.println();
+
+        System.out.println("   -- creating blob store tables");
+        System.out.println("  " + bdb.getMetaTableCreationStatement("DATASTORE_META"));
+        System.out.println("  " + bdb.getDataTableCreationStatement("DATASTORE_DATA"));
+        System.out.println();
+        System.out.println();
     }
 }