From 10058b473369c4912a74e4327d4019c5216bcaef Mon Sep 17 00:00:00 2001
From: Fabio Pistolesi <fabio.pistolesi@forgerock.com>
Date: Mon, 06 Jul 2015 15:48:39 +0000
Subject: [PATCH] OPENDJ-2119 CR-7476 debugsearchindex incorrect output with AND search on only one attribute

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/AttributeIndex.java |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/AttributeIndex.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/AttributeIndex.java
index 852f0a7..0616d10 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/AttributeIndex.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/AttributeIndex.java
@@ -507,10 +507,18 @@
     // in IndexFilter#evaluateLogicalAndFilter method.
     // One solution could be to implement a boundedRangeAssertion that combine
     // the two operations in one.
-    EntryIDSet results = evaluate(filter1, debugBuffer, monitor);
-    EntryIDSet results2 = evaluate(filter2, debugBuffer, monitor);
-    results.retainAll(results2);
-    return results;
+    StringBuilder tmpBuff1 = debugBuffer != null ? new StringBuilder(): null;
+    StringBuilder tmpBuff2 = debugBuffer != null ? new StringBuilder(): null;
+    EntryIDSet results1 = evaluate(filter1, tmpBuff1, monitor);
+    EntryIDSet results2 = evaluate(filter2, tmpBuff2, monitor);
+    if (debugBuffer != null)
+    {
+      debugBuffer
+          .append(filter1).append(tmpBuff1).append(results1)
+          .append(filter2).append(tmpBuff2).append(results2);
+    }
+    results1.retainAll(results2);
+    return results1;
   }
 
   private EntryIDSet evaluate(SearchFilter filter, StringBuilder debugBuffer, DatabaseEnvironmentMonitor monitor)

--
Gitblit v1.10.0