Author: reschke
Date: Fri Jun 19 13:40:45 2015
New Revision: 1686414
URL: http://svn.apache.org/r1686414
Log:
OAK-3009: RDBDocumentStore: add support for optional additional index
Modified:
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/RDBHelper.java
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=1686414&r1=1686413&r2=1686414&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
Fri Jun 19 13:40:45 2015
@@ -740,6 +740,18 @@ public class RDBDocumentStore implements
+ 1024 * 1024 * 1024 + "))";
}
+ public List<String> getIndexCreationStatements(String tableName) {
+ if (CREATEINDEX.equals("modified-id")) {
+ return Collections.singletonList("create index " + tableName +
"_MI on " + tableName + " (MODIFIED, ID)");
+ } else if (CREATEINDEX.equals("id-modified")) {
+ return Collections.singletonList("create index " + tableName +
"_MI on " + tableName + " (ID, MODIFIED)");
+ } else if (CREATEINDEX.equals("modified")) {
+ return Collections.singletonList("create index " + tableName +
"_MI on " + tableName + " (MODIFIED)");
+ } else {
+ return Collections.emptyList();
+ }
+ }
+
public String getAdditionalDiagnostics(RDBConnectionHandler ch, String
tableName) {
return "";
}
@@ -939,6 +951,12 @@ public class RDBDocumentStore implements
creatStatement.execute(this.db.getTableCreationStatement(tableName));
creatStatement.close();
+ for (String ic :
this.db.getIndexCreationStatements(tableName)) {
+ creatStatement = con.createStatement();
+ creatStatement.execute(ic);
+ creatStatement.close();
+ }
+
con.commit();
tablesCreated.add(tableName);
@@ -1500,6 +1518,9 @@ public class RDBDocumentStore implements
// Number of elapsed ms in a query above which a diagnostic warning is
generated
private static final int QUERYTIMELIMIT = Integer.getInteger(
"org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.QUERYTIMELIMIT",
10000);
+ // whether to create indices
+ private static final String CREATEINDEX = System.getProperty(
+
"org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.CREATEINDEX",
"");
private static byte[] asBytes(String data) {
byte[] bytes;
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBHelper.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBHelper.java?rev=1686414&r1=1686413&r2=1686414&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBHelper.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBHelper.java
Fri Jun 19 13:40:45 2015
@@ -35,6 +35,9 @@ public class RDBHelper {
for (String table : RDBDocumentStore.getTableNames()) {
System.out.println(" " +
ddb.getTableCreationStatement(table));
+ for (String s : ddb.getIndexCreationStatements(table)) {
+ System.out.println(" " + s);
+ }
}
System.out.println();