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 13:38:53 UTC
svn commit: r1853433 - in /jackrabbit/oak/trunk:
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 13:38:53 2019
New Revision: 1853433
URL: http://svn.apache.org/viewvc?rev=1853433&view=rev
Log:
OAK-8043: RDB: expose DDL generation functionality in oak-run
Added:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RDBDDLDumpCommand.java (with props)
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBHelper.java
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java?rev=1853433&r1=1853432&r2=1853433&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java Tue Feb 12 13:38:53 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())
Added: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RDBDDLDumpCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RDBDDLDumpCommand.java?rev=1853433&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RDBDDLDumpCommand.java (added)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RDBDDLDumpCommand.java Tue Feb 12 13:38:53 2019
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jackrabbit.oak.run;
+
+import java.util.Arrays;
+
+import org.apache.jackrabbit.oak.plugins.document.rdb.RDBHelper;
+import org.apache.jackrabbit.oak.run.commons.Command;
+
+import joptsimple.OptionParser;
+import joptsimple.OptionSet;
+import joptsimple.OptionSpec;
+
+public class RDBDDLDumpCommand implements Command {
+
+ @Override
+ public void execute(String... args) throws Exception {
+ OptionParser parser = new OptionParser();
+ OptionSpec<Void> helpOption = parser.accepts("help", "show help").forHelp();
+ OptionSpec<String> dbOption = parser.accepts("db", "Database type: one of " + RDBHelper.getSupportedDatabases())
+ .withRequiredArg().ofType(String.class);
+ OptionSpec<Integer> initialSchemaOption = parser.accepts("initial", "Initial DB schema version").withRequiredArg()
+ .ofType(Integer.class);
+ OptionSpec<Integer> upgradeSchemaOption = parser.accepts("upgrade", "DB schema version to upgrade to").withRequiredArg()
+ .ofType(Integer.class);
+
+ try {
+ OptionSet options = parser.parse(args);
+
+ if (options.has(helpOption)) {
+ System.err.println("Options:");
+ parser.printHelpOn(System.err);
+ } else {
+ String db = dbOption.value(options);
+ Integer initial = initialSchemaOption.value(options);
+ Integer upgrade = upgradeSchemaOption.value(options);
+ RDBHelper.dump(db, initial, upgrade);
+ }
+ System.exit(0);
+ } catch (joptsimple.OptionException ex) {
+ System.err.println(ex.getLocalizedMessage());
+ System.err.println(Arrays.toString(args));
+ System.err.println();
+ System.err.println("Options:");
+ parser.printHelpOn(System.err);
+ System.exit(2);
+ }
+ }
+}
Propchange: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RDBDDLDumpCommand.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBHelper.java?rev=1853433&r1=1853432&r2=1853433&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBHelper.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBHelper.java Tue Feb 12 13:38:53 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,36 +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(
+ "(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);
+ 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();
- System.out.println(" -- creating table " + table + " for schema version " + defaultOpts.getInitialSchema());
- 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++) {
- System.out.println(" -- upgrading table " + table + " to schema version " + 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(" -- creating blob store tables");
- 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();
}
}