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 2018/03/13 14:25:44 UTC
svn commit: r1826638 -
/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java
Author: reschke
Date: Tue Mar 13 14:25:44 2018
New Revision: 1826638
URL: http://svn.apache.org/viewvc?rev=1826638&view=rev
Log:
OAK-7330: RDBDocumentStore: make indices on SD* sparse where possible
special-case DB2 and SQLServer (Oracle already creates sparse indices by default)
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java
Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java?rev=1826638&r1=1826637&r2=1826638&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java Tue Mar 13 14:25:44 2018
@@ -389,6 +389,10 @@ public enum RDBDocumentStoreDB {
return result;
}
+
+ public String makeIndexConditionalForColumn(String columnName) {
+ return " exclude null keys";
+ }
},
ORACLE("Oracle") {
@@ -792,6 +796,10 @@ public enum RDBDocumentStoreDB {
return result;
}
+
+ public String makeIndexConditionalForColumn(String columnName) {
+ return " where " + columnName + " is not null";
+ }
};
private static final Logger LOG = LoggerFactory.getLogger(RDBDocumentStoreDB.class);
@@ -889,8 +897,10 @@ public enum RDBDocumentStoreDB {
}
if (level == 2) {
result.add("create index " + tableName + "_VSN on " + tableName + " (VERSION)");
- result.add("create index " + tableName + "_SDT on " + tableName + " (SDTYPE)");
- result.add("create index " + tableName + "_SDM on " + tableName + " (SDMAXREVTIME)");
+ result.add(
+ "create index " + tableName + "_SDT on " + tableName + " (SDTYPE)" + makeIndexConditionalForColumn("SDTYPE"));
+ result.add("create index " + tableName + "_SDM on " + tableName + " (SDMAXREVTIME)"
+ + makeIndexConditionalForColumn("SDMAXREVTIME"));
}
return result;
}
@@ -979,6 +989,10 @@ public enum RDBDocumentStoreDB {
return "bigint";
}
+ public String makeIndexConditionalForColumn(String columnName) {
+ return "";
+ }
+
/**
* Statements needed to upgrade the DB
*
@@ -993,8 +1007,9 @@ public enum RDBDocumentStoreDB {
String[] statements = new String[] { "alter table " + tableName + " add SDTYPE " + smallint,
"alter table " + tableName + " add SDMAXREVTIME " + bigint,
"create index " + tableName + "_VSN on " + tableName + " (VERSION)",
- "create index " + tableName + "_SDT on " + tableName + " (SDTYPE)",
- "create index " + tableName + "_SDM on " + tableName + " (SDMAXREVTIME)", };
+ "create index " + tableName + "_SDT on " + tableName + " (SDTYPE)" + makeIndexConditionalForColumn("SDTYPE"),
+ "create index " + tableName + "_SDM on " + tableName + " (SDMAXREVTIME)"
+ + makeIndexConditionalForColumn("SDMAXREVTIME"), };
return Arrays.asList(statements);
} else {
throw new IllegalArgumentException("level must be 1 or 2");