1
0
Fork 0

fixed bugs in last

This commit is contained in:
James 2014-11-23 14:33:26 +00:00
parent 703cfa3a16
commit 9df14a7200
3 changed files with 11 additions and 10 deletions

View File

@ -973,8 +973,8 @@ bool IndexRangeBlock::initRanges () {
// Find out about the actual values for the bounds in the variable bound case:
if (_anyBoundVariable) {
auto newCondition = std::unique_ptr<IndexOrCondition>(new IndexOrCondition());
//auto newCondition = std::unique_ptr<IndexOrCondition>(new IndexOrCondition());
auto newCondition = new IndexOrCondition();
for (size_t i = 0; i < _condition->size(); i++) {
// The following are needed to evaluate expressions with local data from
@ -1064,9 +1064,10 @@ bool IndexRangeBlock::initRanges () {
newAnd.push_back(actualRange);
}
orCombineIndexOrAndIndexAnd(*(newCondition.get()), newAnd);
orCombineIndexOrAndIndexAnd(newCondition, newAnd);
}
_condition = newCondition.release();
//_condition = newCondition.release();
_condition = newCondition;
}
if (en->_index->type == TRI_IDX_TYPE_PRIMARY_INDEX) {

View File

@ -758,10 +758,10 @@ static RangeInfo* differenceIndexOrAndRangeInfo (
////////////////////////////////////////////////////////////////////////////////
void triagens::aql::orCombineIndexOrAndIndexAnd (
IndexOrCondition orCond, IndexAndCondition andCond) {
IndexOrCondition* orCond, IndexAndCondition andCond) {
if (orCond.empty()) {
orCond.push_back(andCond);
if (orCond->empty()) {
orCond->push_back(andCond);
return;
}
@ -772,7 +772,7 @@ void triagens::aql::orCombineIndexOrAndIndexAnd (
//avoid inserting overlapping ranges
IndexAndCondition newAnd;
for (RangeInfo x: andCond) {
RangeInfo* ri = differenceIndexOrAndRangeInfo(orCond, &x);
RangeInfo* ri = differenceIndexOrAndRangeInfo(*orCond, &x);
if (ri != nullptr) {
// if ri is nullptr, then y.second is contained in an existing ri
newAnd.emplace_back(*ri);
@ -780,7 +780,7 @@ void triagens::aql::orCombineIndexOrAndIndexAnd (
}
if (! newAnd.empty()) {
orCond.emplace_back(newAnd);
orCond->emplace_back(newAnd);
}
}

View File

@ -927,7 +927,7 @@ namespace triagens {
/// @brief orCombineIndexOrAndIndexAnd: analogue of orCombineRangeInfoMapVecs
////////////////////////////////////////////////////////////////////////////////
void orCombineIndexOrAndIndexAnd(IndexOrCondition, IndexAndCondition);
void orCombineIndexOrAndIndexAnd(IndexOrCondition*, IndexAndCondition);
}
}