mirror of https://gitee.com/bigwinds/arangodb
fixed bugs in last
This commit is contained in:
parent
703cfa3a16
commit
9df14a7200
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -927,7 +927,7 @@ namespace triagens {
|
|||
/// @brief orCombineIndexOrAndIndexAnd: analogue of orCombineRangeInfoMapVecs
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void orCombineIndexOrAndIndexAnd(IndexOrCondition, IndexAndCondition);
|
||||
void orCombineIndexOrAndIndexAnd(IndexOrCondition*, IndexAndCondition);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue