From b863e237d8a0ba39af6cb61340db95cfc5166237 Mon Sep 17 00:00:00 2001
From: Fabio Pistolesi <fabio.pistolesi@forgerock.com>
Date: Fri, 12 Jun 2015 09:18:01 +0000
Subject: [PATCH] OPENDJ-2108 CR-7212 Some indexes are evaluated as indexed but should be not-indexed.
---
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java | 41 +++++++++++++++++++++++++++++++++--------
1 files changed, 33 insertions(+), 8 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java
index d513ee7..1f41856 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java
@@ -498,12 +498,13 @@
StringBuilder debugBuffer, BackendMonitor monitor)
{
LocalizableMessageBuilder debugMessage = monitor.isFilterUseEnabled() ? new LocalizableMessageBuilder() : null;
- EntryIDSet results = indexQuery.evaluate(debugMessage);
+ StringBuilder indexNameOut = debugBuffer == null ? null : new StringBuilder();
+ EntryIDSet results = indexQuery.evaluate(debugMessage, indexNameOut);
if (debugBuffer != null)
{
- debugBuffer.append("[INDEX:").append(config.getAttribute().getNameOrOID())
- .append(".").append(indexName).append("]");
+ appendDebugIndexInformation(debugBuffer, indexName);
+ appendDebugUnindexedInformation(debugBuffer, indexNameOut);
}
if (monitor.isFilterUseEnabled())
@@ -521,6 +522,27 @@
}
/**
+ * Appends additional traces to {@code debugsearchindex} when a filter successfully used
+ * an auxiliary index type during index query.
+ *
+ * @param debugBuffer the current debugsearchindex buffer
+ * @param indexNameOut the name of the index type
+ */
+ private void appendDebugUnindexedInformation(StringBuilder debugBuffer, StringBuilder indexNameOut)
+ {
+ if (indexNameOut.length() > 0)
+ {
+ debugBuffer.append(newUndefinedSet().toString());
+ appendDebugIndexInformation(debugBuffer, indexNameOut.toString());
+ }
+ }
+
+ private void appendDebugIndexInformation(final StringBuilder debugBuffer, final String infos)
+ {
+ debugBuffer.append("[INDEX:").append(config.getAttribute().getNameOrOID()).append(".").append(infos).append("]");
+ }
+
+ /**
* Retrieve the entry IDs that might match two filters that restrict a value
* to both a lower bound and an upper bound.
*
@@ -881,11 +903,16 @@
monitor.updateStats(filter,
INFO_INDEX_FILTER_MATCHING_RULE_NOT_INDEXED.get(matchRuleOID, config.getAttribute().getNameOrOID()));
}
- return IndexQuery.createNullIndexQuery().evaluate(null);
+ return IndexQuery.createNullIndexQuery().evaluate(null, null);
}
try
{
+ final IndexQuery indexQuery = rule.getAssertion(filter.getAssertionValue()).createIndexQuery(indexQueryFactory);
+ LocalizableMessageBuilder debugMessage = monitor.isFilterUseEnabled() ? new LocalizableMessageBuilder() : null;
+ StringBuilder indexNameOut = debugBuffer == null ? null : new StringBuilder();
+ EntryIDSet results = indexQuery.evaluate(debugMessage, indexNameOut);
+
if (debugBuffer != null)
{
debugBuffer.append("[INDEX:");
@@ -897,11 +924,9 @@
.append(indexer.getIndexID());
}
debugBuffer.append("]");
+ appendDebugUnindexedInformation(debugBuffer, indexNameOut);
}
- final IndexQuery indexQuery = rule.getAssertion(filter.getAssertionValue()).createIndexQuery(indexQueryFactory);
- LocalizableMessageBuilder debugMessage = monitor.isFilterUseEnabled() ? new LocalizableMessageBuilder() : null;
- EntryIDSet results = indexQuery.evaluate(debugMessage);
if (monitor.isFilterUseEnabled())
{
if (results.isDefined())
@@ -918,7 +943,7 @@
catch (DecodeException e)
{
logger.traceException(e);
- return IndexQuery.createNullIndexQuery().evaluate(null);
+ return IndexQuery.createNullIndexQuery().evaluate(null, null);
}
}
--
Gitblit v1.10.0