mirror of https://gitee.com/bigwinds/arangodb
Fixed a bug in primaryindex. In some cases it reported that it could not find more documents although there were more.
This commit is contained in:
parent
eab6907678
commit
63f0e52e49
|
@ -119,12 +119,9 @@ bool MMFilesPrimaryIndexIterator::next(TokenCallback const& cb, size_t limit) {
|
||||||
if (result) {
|
if (result) {
|
||||||
cb(MMFilesToken{result.revisionId()});
|
cb(MMFilesToken{result.revisionId()});
|
||||||
--limit;
|
--limit;
|
||||||
} else {
|
|
||||||
// We are done
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return _iterator.valid();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MMFilesPrimaryIndexIterator::reset() { _iterator.reset(); }
|
void MMFilesPrimaryIndexIterator::reset() { _iterator.reset(); }
|
||||||
|
|
|
@ -75,10 +75,9 @@ bool SingleServerEdgeCursor::next(std::vector<VPackSlice>& result,
|
||||||
if (_currentCursor == _cursors.size()) {
|
if (_currentCursor == _cursors.size()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
_cachePos++;
|
|
||||||
if (_cachePos < _cache.size()) {
|
if (_cachePos < _cache.size()) {
|
||||||
LogicalCollection* collection = _cursors[_currentCursor][_currentSubCursor]->collection();
|
LogicalCollection* collection = _cursors[_currentCursor][_currentSubCursor]->collection();
|
||||||
if (collection->readDocument(_trx, *_mmdr, _cache[_cachePos])) {
|
if (collection->readDocument(_trx, *_mmdr, _cache[_cachePos++])) {
|
||||||
result.emplace_back(_mmdr->vpack());
|
result.emplace_back(_mmdr->vpack());
|
||||||
}
|
}
|
||||||
if (_internalCursorMapping != nullptr) {
|
if (_internalCursorMapping != nullptr) {
|
||||||
|
@ -132,7 +131,7 @@ bool SingleServerEdgeCursor::next(std::vector<VPackSlice>& result,
|
||||||
|
|
||||||
TRI_ASSERT(_cachePos < _cache.size());
|
TRI_ASSERT(_cachePos < _cache.size());
|
||||||
LogicalCollection* collection = cursor->collection();
|
LogicalCollection* collection = cursor->collection();
|
||||||
if (collection->readDocument(_trx, *_mmdr, _cache[_cachePos])) {
|
if (collection->readDocument(_trx, *_mmdr, _cache[_cachePos++])) {
|
||||||
result.emplace_back(_mmdr->vpack());
|
result.emplace_back(_mmdr->vpack());
|
||||||
}
|
}
|
||||||
if (_internalCursorMapping != nullptr) {
|
if (_internalCursorMapping != nullptr) {
|
||||||
|
|
|
@ -171,6 +171,25 @@ function explainSuite () {
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
assertEqual([ 1, 2, 3], AQL_EXECUTE(query, bindParams).json);
|
assertEqual([ 1, 2, 3], AQL_EXECUTE(query, bindParams).json);
|
||||||
|
},
|
||||||
|
|
||||||
|
testInvalidValuesInINFilter : function () {
|
||||||
|
var query = "FOR i IN " + cn + " FILTER i._id IN @idList SORT i.value RETURN i.value";
|
||||||
|
var bindParams = {
|
||||||
|
idList: [
|
||||||
|
null,
|
||||||
|
cn + "/testkey1", // Find this
|
||||||
|
"blub/bla",
|
||||||
|
"noKey",
|
||||||
|
cn + "/testkey2", // And this
|
||||||
|
123456,
|
||||||
|
{ "the": "foxx", "is": "wrapped", "in":"objects"},
|
||||||
|
[15, "man", "on", "the", "dead", "mans", "chest"],
|
||||||
|
cn + "/testkey3" // And this
|
||||||
|
]
|
||||||
|
};
|
||||||
|
require("internal").db._explain(query, bindParams);
|
||||||
|
assertEqual([ 1, 2, 3], AQL_EXECUTE(query, bindParams).json);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -171,8 +171,25 @@ function explainSuite () {
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
assertEqual([ 1, 2, 3], AQL_EXECUTE(query, bindParams).json);
|
assertEqual([ 1, 2, 3], AQL_EXECUTE(query, bindParams).json);
|
||||||
}
|
},
|
||||||
|
|
||||||
|
testInvalidValuesInCondition : function () {
|
||||||
|
var query = "FOR i IN " + cn + " FILTER i._id IN @idList SORT i.value RETURN i.value";
|
||||||
|
var bindParams = {
|
||||||
|
idList: [
|
||||||
|
null,
|
||||||
|
cn + "/testkey1", // Find this
|
||||||
|
"blub/bla",
|
||||||
|
"noKey",
|
||||||
|
cn + "/testkey2", // And this
|
||||||
|
123456,
|
||||||
|
{ "the": "foxx", "is": "wrapped", "in":"objects"},
|
||||||
|
[15, "man", "on", "the", "dead", "mans", "chest"],
|
||||||
|
cn + "/testkey3" // And this
|
||||||
|
]
|
||||||
|
};
|
||||||
|
assertEqual([ 1, 2, 3], AQL_EXECUTE(query, bindParams).json);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue