mirror of https://gitee.com/bigwinds/arangodb
Bug fix 3.5/little weekend fix (#10527)
* try to avoid oom situation * create arena before using it * fix namespace
This commit is contained in:
parent
28c38cbbd7
commit
c072d84397
|
@ -51,6 +51,7 @@ MMFilesHashIndexLookupBuilder::MMFilesHashIndexLookupBuilder(
|
||||||
: _builder(trx),
|
: _builder(trx),
|
||||||
_usesIn(false),
|
_usesIn(false),
|
||||||
_isEmpty(false),
|
_isEmpty(false),
|
||||||
|
_mappingFieldConditionArena(),
|
||||||
_mappingFieldCondition{_mappingFieldConditionArena},
|
_mappingFieldCondition{_mappingFieldConditionArena},
|
||||||
_inStorage(trx) {
|
_inStorage(trx) {
|
||||||
TRI_ASSERT(node->type == aql::NODE_TYPE_OPERATOR_NARY_AND);
|
TRI_ASSERT(node->type == aql::NODE_TYPE_OPERATOR_NARY_AND);
|
||||||
|
|
|
@ -179,8 +179,10 @@ class MMFilesHashIndexLookupBuilder {
|
||||||
bool _isEmpty;
|
bool _isEmpty;
|
||||||
size_t _coveredFields;
|
size_t _coveredFields;
|
||||||
|
|
||||||
SmallVector<arangodb::aql::AstNode const*> _mappingFieldCondition;
|
using MappingCondition =
|
||||||
SmallVector<arangodb::aql::AstNode const*>::allocator_type::arena_type _mappingFieldConditionArena;
|
SmallVector<arangodb::aql::AstNode const*>;
|
||||||
|
MappingCondition::allocator_type::arena_type _mappingFieldConditionArena;
|
||||||
|
MappingCondition _mappingFieldCondition;
|
||||||
|
|
||||||
std::unordered_map<size_t, std::pair<size_t, std::vector<arangodb::velocypack::Slice>>> _inPosition;
|
std::unordered_map<size_t, std::pair<size_t, std::vector<arangodb::velocypack::Slice>>> _inPosition;
|
||||||
transaction::BuilderLeaser _inStorage;
|
transaction::BuilderLeaser _inStorage;
|
||||||
|
|
|
@ -21,7 +21,10 @@
|
||||||
/// @author Dr. Frank Celler
|
/// @author Dr. Frank Celler
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
#include "Aql/AstNode.h"
|
#include "Aql/AstNode.h"
|
||||||
|
#include "Aql/ExecutionBlock.h"
|
||||||
#include "Basics/Exceptions.h"
|
#include "Basics/Exceptions.h"
|
||||||
#include "Basics/StaticStrings.h"
|
#include "Basics/StaticStrings.h"
|
||||||
#include "Basics/hashes.h"
|
#include "Basics/hashes.h"
|
||||||
|
@ -161,7 +164,7 @@ bool MMFilesAllIndexIterator::next(LocalDocumentIdCallback const& cb, size_t lim
|
||||||
|
|
||||||
bool MMFilesAllIndexIterator::nextDocument(DocumentCallback const& cb, size_t limit) {
|
bool MMFilesAllIndexIterator::nextDocument(DocumentCallback const& cb, size_t limit) {
|
||||||
_documentIds.clear();
|
_documentIds.clear();
|
||||||
_documentIds.reserve(limit);
|
_documentIds.reserve((std::min)(limit, aql::ExecutionBlock::DefaultBatchSize()));
|
||||||
|
|
||||||
bool done = false;
|
bool done = false;
|
||||||
while (limit > 0) {
|
while (limit > 0) {
|
||||||
|
|
Loading…
Reference in New Issue