From 558a0bd1b48792629a19185e347ab8f9fe6d47df Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Tue, 31 May 2016 14:13:56 +0000
Subject: [PATCH] OPENDJ-2987 Fix IllegalArgumentException when performing union index queries
---
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQueryFactoryImpl.java | 15 +++++++++------
1 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQueryFactoryImpl.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQueryFactoryImpl.java
index fdda820..0401cb6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQueryFactoryImpl.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQueryFactoryImpl.java
@@ -22,6 +22,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageBuilder;
@@ -124,16 +125,18 @@
@Override
public EntryIDSet evaluate(LocalizableMessageBuilder debugMessage, StringBuilder indexNameOut)
{
- final EntryIDSet entryIDs = newDefinedSet();
- for (IndexQuery query : subIndexQueries)
+ final List<EntryIDSet> candidateSets = new ArrayList<>(subIndexQueries.size());
+ for (final IndexQuery query : subIndexQueries)
{
- entryIDs.addAll(query.evaluate(debugMessage, indexNameOut));
- if (entryIDs.isDefined() && entryIDs.size() >= CURSOR_ENTRY_LIMIT)
+ final EntryIDSet set = query.evaluate(debugMessage, indexNameOut);
+ if (!set.isDefined())
{
- break;
+ // There is no point continuing.
+ return set;
}
+ candidateSets.add(set);
}
- return entryIDs;
+ return newSetFromUnion(candidateSets);
}
@Override
--
Gitblit v1.10.0