mirror of https://gitee.com/bigwinds/arangodb
Preperation for DBServer local filtering
This commit is contained in:
parent
2d9f466f38
commit
a5273e8fec
|
@ -67,6 +67,7 @@ TraversalBlock::TraversalBlock (ExecutionEngine* engine,
|
|||
edgeColls,
|
||||
opts,
|
||||
std::string(_trx->vocbase()->_name, strlen(_trx->vocbase()->_name)),
|
||||
// ep->_expressions,
|
||||
_resolver
|
||||
));
|
||||
} else {
|
||||
|
@ -75,7 +76,9 @@ TraversalBlock::TraversalBlock (ExecutionEngine* engine,
|
|||
TRI_voc_cid_t cid = _resolver->getCollectionId(coll);
|
||||
edgeCollections.push_back(_trx->documentCollection(cid));
|
||||
}
|
||||
_traverser.reset(new triagens::arango::traverser::DepthFirstTraverser(edgeCollections, opts));
|
||||
_traverser.reset(new triagens::arango::traverser::DepthFirstTraverser(edgeCollections,
|
||||
opts));
|
||||
// ep->_expressions));
|
||||
}
|
||||
if (!ep->usesInVariable()) {
|
||||
_vertexId = ep->getStartVertex();
|
||||
|
@ -206,6 +209,10 @@ int TraversalBlock::initialize () {
|
|||
return res;
|
||||
}
|
||||
|
||||
void TraversalBlock::executeFilterExpressions () {
|
||||
// TODO walk over simpleFilterExp and execute them
|
||||
}
|
||||
|
||||
int TraversalBlock::initializeCursor (AqlItemBlock* items,
|
||||
size_t pos) {
|
||||
int res = ExecutionBlock::initializeCursor(items, pos);
|
||||
|
@ -219,8 +226,6 @@ int TraversalBlock::initializeCursor (AqlItemBlock* items,
|
|||
|
||||
bool TraversalBlock::executeExpressions (AqlValue& pathValue) {
|
||||
TRI_ASSERT(_condition != nullptr);
|
||||
return true;
|
||||
|
||||
|
||||
auto& toReplace = _nonConstExpressions[0];
|
||||
auto exp = toReplace->expression;
|
||||
|
@ -376,6 +381,7 @@ AqlItemBlock* TraversalBlock::getSome (size_t, // atLeast,
|
|||
return nullptr;
|
||||
}
|
||||
_pos = 0; // this is in the first block
|
||||
executeFilterExpressions();
|
||||
}
|
||||
|
||||
// If we get here, we do have _buffer.front()
|
||||
|
@ -477,6 +483,7 @@ size_t TraversalBlock::skipSome (size_t atLeast, size_t atMost) {
|
|||
return skipped;
|
||||
}
|
||||
_pos = 0; // this is in the first block
|
||||
executeFilterExpressions();
|
||||
}
|
||||
|
||||
// If we get here, we do have _buffer.front()
|
||||
|
|
|
@ -282,6 +282,12 @@ namespace triagens {
|
|||
return _pathVar != nullptr;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief Executes the path-local filter expressions
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void executeFilterExpressions ();
|
||||
|
||||
};
|
||||
} // namespace triagens::aql
|
||||
} // namespace triagens
|
||||
|
|
|
@ -428,10 +428,12 @@ void TraversalNode::storeSimpleExpression(bool isEdgeAccess,
|
|||
|
||||
simpleTravererExpression e {
|
||||
isEdgeAccess,
|
||||
indexAccess,
|
||||
comparisonType,
|
||||
varAccess,
|
||||
compareTo};
|
||||
indexAccess,
|
||||
comparisonType,
|
||||
varAccess,
|
||||
compareTo,
|
||||
nullptr
|
||||
};
|
||||
_expressions.emplace_back(e);
|
||||
}
|
||||
|
||||
|
|
|
@ -55,6 +55,7 @@ namespace triagens {
|
|||
AstNodeType comparisonType;
|
||||
AstNode const* varAccess;
|
||||
AstNode const* compareTo;
|
||||
AqlValue const* evaluatedExpression;
|
||||
|
||||
void toJson (triagens::basics::Json& json,
|
||||
TRI_memory_zone_t* zone) const;
|
||||
|
|
Loading…
Reference in New Issue