From 9ff093de3e9f067d08bcc6d3134121128974a681 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 11 Apr 2014 13:47:56 +0000
Subject: [PATCH] OPENDJ-1308 Migrate schema support
---
opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java | 109 +++++++++++++++++++++++-------------------------------
1 files changed, 46 insertions(+), 63 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java
index d65f259..4460f8e 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java
@@ -161,7 +161,7 @@
if (indexConfig.getIndexType().contains(IndexType.SUBSTRING))
{
Index substringIndex = buildExtIndex(name, attrType, indexEntryLimit,
- attrType.getSubstringMatchingRule(), new SubstringIndexer(attrType, config));
+ attrType.getSubstringMatchingRule(), new SubstringIndexer(attrType));
nameToIndexes.put(IndexType.SUBSTRING.toString(), substringIndex);
}
@@ -300,6 +300,16 @@
}
/**
+ * Return the indexing options of this AttributeIndex.
+ *
+ * @return the indexing options of this AttributeIndex.
+ */
+ public IndexingOptions getIndexingOptions()
+ {
+ return indexQueryFactory.getIndexingOptions();
+ }
+
+ /**
* Get the JE index configuration used by this index.
* @return The configuration in effect.
*/
@@ -319,25 +329,25 @@
* @throws DatabaseException If an error occurs in the JE database.
* @throws DirectoryException If a Directory Server error occurs.
*/
- public boolean addEntry(IndexBuffer buffer, EntryID entryID,
- Entry entry)
+ public boolean addEntry(IndexBuffer buffer, EntryID entryID, Entry entry)
throws DatabaseException, DirectoryException
{
boolean success = true;
+ final IndexingOptions options = indexQueryFactory.getIndexingOptions();
for (Index index : nameToIndexes.values())
{
- if (!index.addEntry(buffer, entryID, entry))
+ if (!index.addEntry(buffer, entryID, entry, options))
{
success = false;
}
}
- if(extensibleIndexes!=null)
+ if (extensibleIndexes != null)
{
- for(Index extensibleIndex:extensibleIndexes.getIndexes())
+ for (Index index : extensibleIndexes.getIndexes())
{
- if(!extensibleIndex.addEntry(buffer, entryID,entry))
+ if (!index.addEntry(buffer, entryID, entry, options))
{
success = false;
}
@@ -363,19 +373,20 @@
{
boolean success = true;
+ final IndexingOptions options = indexQueryFactory.getIndexingOptions();
for (Index index : nameToIndexes.values())
{
- if (!index.addEntry(txn, entryID, entry))
+ if (!index.addEntry(txn, entryID, entry, options))
{
success = false;
}
}
- if(extensibleIndexes!=null)
+ if (extensibleIndexes != null)
{
- for(Index extensibleIndex:extensibleIndexes.getIndexes())
+ for (Index index : extensibleIndexes.getIndexes())
{
- if(!extensibleIndex.addEntry(txn, entryID,entry))
+ if (!index.addEntry(txn, entryID, entry, options))
{
success = false;
}
@@ -394,20 +405,20 @@
* @throws DatabaseException If an error occurs in the JE database.
* @throws DirectoryException If a Directory Server error occurs.
*/
- public void removeEntry(IndexBuffer buffer, EntryID entryID,
- Entry entry)
+ public void removeEntry(IndexBuffer buffer, EntryID entryID, Entry entry)
throws DatabaseException, DirectoryException
{
+ final IndexingOptions options = indexQueryFactory.getIndexingOptions();
for (Index index : nameToIndexes.values())
{
- index.removeEntry(buffer, entryID, entry);
+ index.removeEntry(buffer, entryID, entry, options);
}
- if(extensibleIndexes!=null)
+ if (extensibleIndexes != null)
{
- for(Index extensibleIndex:extensibleIndexes.getIndexes())
+ for (Index index : extensibleIndexes.getIndexes())
{
- extensibleIndex.removeEntry(buffer, entryID, entry);
+ index.removeEntry(buffer, entryID, entry, options);
}
}
}
@@ -424,16 +435,17 @@
public void removeEntry(Transaction txn, EntryID entryID, Entry entry)
throws DatabaseException, DirectoryException
{
+ final IndexingOptions options = indexQueryFactory.getIndexingOptions();
for (Index index : nameToIndexes.values())
{
- index.removeEntry(txn, entryID, entry);
+ index.removeEntry(txn, entryID, entry, options);
}
- if(extensibleIndexes!=null)
+ if (extensibleIndexes != null)
{
- for(Index extensibleIndex:extensibleIndexes.getIndexes())
+ for (Index index : extensibleIndexes.getIndexes())
{
- extensibleIndex.removeEntry(txn, entryID, entry);
+ index.removeEntry(txn, entryID, entry, options);
}
}
}
@@ -457,16 +469,17 @@
List<Modification> mods)
throws DatabaseException
{
+ final IndexingOptions options = indexQueryFactory.getIndexingOptions();
for (Index index : nameToIndexes.values())
{
- index.modifyEntry(txn, entryID, oldEntry, newEntry, mods);
+ index.modifyEntry(txn, entryID, oldEntry, newEntry, mods, options);
}
- if(extensibleIndexes!=null)
+ if (extensibleIndexes != null)
{
- for(Index extensibleIndex:extensibleIndexes.getIndexes())
+ for (Index index : extensibleIndexes.getIndexes())
{
- extensibleIndex.modifyEntry(txn, entryID, oldEntry, newEntry, mods);
+ index.modifyEntry(txn, entryID, oldEntry, newEntry, mods, options);
}
}
}
@@ -490,16 +503,17 @@
List<Modification> mods)
throws DatabaseException
{
+ final IndexingOptions options = indexQueryFactory.getIndexingOptions();
for (Index index : nameToIndexes.values())
{
- index.modifyEntry(buffer, entryID, oldEntry, newEntry, mods);
+ index.modifyEntry(buffer, entryID, oldEntry, newEntry, mods, options);
}
if(extensibleIndexes!=null)
{
- for(Index extensibleIndex:extensibleIndexes.getIndexes())
+ for (Index index : extensibleIndexes.getIndexes())
{
- extensibleIndex.modifyEntry(buffer, entryID, oldEntry, newEntry, mods);
+ index.modifyEntry(buffer, entryID, oldEntry, newEntry, mods, options);
}
}
}
@@ -1024,9 +1038,6 @@
final int indexEntryLimit = cfg.getIndexEntryLimit();
final JEIndexConfig config = new JEIndexConfig(cfg.getSubstringLength());
- applyChangeToIndex(cfg, attrType, name, IndexType.EQUALITY,
- new EqualityIndexer(attrType), adminActionRequired, messages);
-
Index presenceIndex = nameToIndexes.get(IndexType.PRESENCE.toString());
if (cfg.getIndexType().contains(IndexType.PRESENCE))
{
@@ -1052,38 +1063,10 @@
removeIndex(presenceIndex, IndexType.PRESENCE);
}
- Index substringIndex = nameToIndexes.get(IndexType.SUBSTRING.toString());
- if (cfg.getIndexType().contains(IndexType.SUBSTRING))
- {
- SubstringIndexer indexer = new SubstringIndexer(attrType, config);
- Indexer extIndexer = new JEExtensibleIndexer(attrType, indexer);
- if(substringIndex == null)
- {
- Index index = newIndex(name + "." + indexer.getExtensibleIndexID(),
- indexEntryLimit, extIndexer);
- substringIndex = openIndex(index, adminActionRequired, messages);
- nameToIndexes.put(IndexType.SUBSTRING.toString(), substringIndex);
- }
- else
- {
- // already exists. Just update index entry limit.
- if(substringIndex.setIndexEntryLimit(indexEntryLimit))
- {
- adminActionRequired.set(true);
- messages.add(NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(substringIndex.getName()));
- }
-
- if (indexConfig.getSubstringLength() != cfg.getSubstringLength())
- {
- substringIndex.setIndexer(extIndexer);
- }
- }
- }
- else
- {
- removeIndex(substringIndex, IndexType.SUBSTRING);
- }
-
+ applyChangeToIndex(cfg, attrType, name, IndexType.EQUALITY,
+ new EqualityIndexer(attrType), adminActionRequired, messages);
+ applyChangeToIndex(cfg, attrType, name, IndexType.SUBSTRING,
+ new SubstringIndexer(attrType), adminActionRequired, messages);
applyChangeToIndex(cfg, attrType, name, IndexType.ORDERING,
new OrderingIndexer(attrType), adminActionRequired, messages);
applyChangeToIndex(cfg, attrType, name, IndexType.APPROXIMATE,
--
Gitblit v1.10.0