From 9e8e922b244d3484d277e94c83ca8407a8ebd8f6 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 02 Dec 2014 14:46:02 +0000
Subject: [PATCH] IndexFilter.java: Renamed pp() to evaluate(). In evaluateLogicalAndFilter(), extracted evaluateFilters().
---
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexFilter.java | 70 +++++++++++++----------------------
1 files changed, 26 insertions(+), 44 deletions(-)
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexFilter.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexFilter.java
index 43aa8bf..d417187 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexFilter.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexFilter.java
@@ -115,7 +115,7 @@
*/
private EntryIDSet evaluateFilter(SearchFilter filter)
{
- EntryIDSet candidates = pp(filter);
+ EntryIDSet candidates = evaluate(filter);
if (buffer != null)
{
candidates.toString(buffer);
@@ -123,11 +123,7 @@
return candidates;
}
- /**
- * @param filter
- * @return
- */
- private EntryIDSet pp(SearchFilter filter)
+ private EntryIDSet evaluate(SearchFilter filter)
{
switch (filter.getFilterType())
{
@@ -239,32 +235,16 @@
}
// First, process the fast components.
- for (SearchFilter filter : fastComps)
- {
- EntryIDSet set = evaluateFilter(filter);
- if (retainAll(results, set))
- {
- return results;
- }
- }
-
- // Next, process the other (non-range) components.
- for (SearchFilter filter : otherComps)
- {
- EntryIDSet set = evaluateFilter(filter);
- if (retainAll(results, set))
- {
- return results;
- }
- }
-
- // Next, process range component pairs like (cn>=A)(cn<=B).
-
- if (rangeComps.isEmpty())
+ if (evaluateFilters(results, fastComps)
+ // Next, process the other (non-range) components.
+ || evaluateFilters(results, otherComps)
+ // Are there any range component pairs like (cn>=A)(cn<=B) ?
+ || rangeComps.isEmpty())
{
return results;
}
+ // Next, process range component pairs like (cn>=A)(cn<=B).
ArrayList<SearchFilter> remainComps = new ArrayList<SearchFilter>();
for (Map.Entry<AttributeType, ArrayList<SearchFilter>> rangeEntry : rangeComps.entrySet())
{
@@ -285,40 +265,43 @@
}
continue;
}
- EntryIDSet set = attributeIndex.evaluateBoundedRange(filter1, filter2, buffer, monitor);
+ EntryIDSet set = attributeIndex.evaluateBoundedRange(filter1, filter2, buffer, monitor);
if(monitor.isFilterUseEnabled() && set.isDefined())
{
monitor.updateStats(SearchFilter.createANDFilter(rangeList), set.size());
}
-
if (retainAll(results, set))
{
return results;
}
- continue;
}
-
- // Add to the remaining range components to be processed.
- for (SearchFilter filter : rangeList)
+ else
{
- remainComps.add(filter);
+ // Add to the remaining range components to be processed.
+ remainComps.addAll(rangeList);
}
}
// Finally, process the remaining slow range components.
- for (SearchFilter filter : remainComps)
- {
- EntryIDSet set = evaluateFilter(filter);
- if (retainAll(results, set))
- {
- return results;
- }
- }
+ evaluateFilters(results, remainComps);
return results;
}
+ private boolean evaluateFilters(EntryIDSet results, ArrayList<SearchFilter> filters)
+ {
+ for (SearchFilter filter : filters)
+ {
+ final EntryIDSet filteredSet = evaluateFilter(filter);
+ if (retainAll(results, filteredSet))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
/**
* Retain all IDs in a given set that appear in a second set.
*
@@ -334,7 +317,6 @@
// We may have reached the point of diminishing returns where
// it is quicker to stop now and process the current small number of candidates.
return a.isDefined() && a.size() <= FILTER_CANDIDATE_THRESHOLD;
-
}
/**
--
Gitblit v1.10.0