From c79b95b0481b47fa1c921176a9151d379de4ba4a Mon Sep 17 00:00:00 2001 From: Max Neunhoeffer Date: Wed, 10 Sep 2014 16:35:33 +0200 Subject: [PATCH] Activate finding of variable bounds. --- arangod/Aql/OptimizerRules.cpp | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/arangod/Aql/OptimizerRules.cpp b/arangod/Aql/OptimizerRules.cpp index 719da6ce5f..5c40660bbb 100644 --- a/arangod/Aql/OptimizerRules.cpp +++ b/arangod/Aql/OptimizerRules.cpp @@ -586,8 +586,7 @@ class FilterToEnumCollFinder : public WalkerWorker { for (size_t j = 0; j < idx->_fields._length; j++) { auto range = map->find(std::string(idx->_fields._buffer[j])); - if (! range->second.isConstant() || - ! range->second.is1ValueRangeInfo()) { + if (! range->second.is1ValueRangeInfo()) { rangeInfo.at(0).clear(); // not usable break; } @@ -598,17 +597,12 @@ class FilterToEnumCollFinder : public WalkerWorker { if (idx->_type == TRI_IDX_TYPE_SKIPLIST_INDEX) { size_t j = 0; auto range = map->find(std::string(idx->_fields._buffer[0])); - if (range->second.isConstant()) { + rangeInfo.at(0).push_back(range->second); + bool equality = range->second.is1ValueRangeInfo(); + while (++j < prefixes.at(i) && equality) { + range = map->find(std::string(idx->_fields._buffer[j])); rangeInfo.at(0).push_back(range->second); - bool equality = range->second.is1ValueRangeInfo(); - while (++j < prefixes.at(i) && equality) { - range = map->find(std::string(idx->_fields._buffer[j])); - if (! range->second.isConstant()) { - break; - } - rangeInfo.at(0).push_back(range->second); - equality = equality && range->second.is1ValueRangeInfo(); - } + equality = equality && range->second.is1ValueRangeInfo(); } }