From ff87f38a1437e1e55bd799db8c96ac2ca7395454 Mon Sep 17 00:00:00 2001 From: Michael Hackstein Date: Tue, 22 Mar 2016 13:24:50 +0100 Subject: [PATCH] Fixed index ordering for IN search. --- arangod/Indexes/Index.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/arangod/Indexes/Index.cpp b/arangod/Indexes/Index.cpp index 3c3c9f4a4c..c685958861 100644 --- a/arangod/Indexes/Index.cpp +++ b/arangod/Indexes/Index.cpp @@ -664,7 +664,7 @@ void Index::expandInSearchValues(VPackSlice const base, // If there is an entry in elements for one depth it was an in, // all of them are now unique so we simply have to multiply - size_t level = 0; + size_t level = n - 1; std::vector positions; positions.resize(n); bool done = false; @@ -683,15 +683,16 @@ void Index::expandInSearchValues(VPackSlice const base, while (true) { auto list = elements.find(level); if (list != elements.end() && ++positions[level] < list->second.size()) { - level = 0; + level = n - 1; // abort inner iteration break; } positions[level] = 0; - if (++level >= n) { + if (level == 0) { done = true; break; } + --level; } } }