mirror of https://gitee.com/bigwinds/arangodb
Fixed multiple edge collections in Traverser. All aql-traverser tests seem to work
This commit is contained in:
parent
e8fc45a107
commit
7269fd3dc9
|
@ -853,7 +853,6 @@ bool DepthFirstTraverser::edgeMatchesConditions(VPackSlice e, size_t depth) {
|
||||||
TRI_ASSERT(exp != nullptr);
|
TRI_ASSERT(exp != nullptr);
|
||||||
|
|
||||||
if (exp->isEdgeAccess && !exp->matchesCheck(_trx, e)) {
|
if (exp->isEdgeAccess && !exp->matchesCheck(_trx, e)) {
|
||||||
LOG(INFO) << "Edge Match Condition";
|
|
||||||
++_filteredPaths;
|
++_filteredPaths;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -880,7 +879,6 @@ bool DepthFirstTraverser::vertexMatchesConditions(std::string const& v,
|
||||||
vertex = fetchVertexData(v);
|
vertex = fetchVertexData(v);
|
||||||
}
|
}
|
||||||
if (!exp->matchesCheck(_trx, VPackSlice(vertex->data()))) {
|
if (!exp->matchesCheck(_trx, VPackSlice(vertex->data()))) {
|
||||||
LOG(INFO) << "Vertex Match Condition";
|
|
||||||
++_filteredPaths;
|
++_filteredPaths;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -952,7 +950,6 @@ void DepthFirstTraverser::setStartVertex(std::string const& v) {
|
||||||
_vertices.emplace(v, vertex);
|
_vertices.emplace(v, vertex);
|
||||||
}
|
}
|
||||||
if (!exp->matchesCheck(_trx, VPackSlice(vertex->data()))) {
|
if (!exp->matchesCheck(_trx, VPackSlice(vertex->data()))) {
|
||||||
LOG(INFO) << "Start Vertex Match Condition";
|
|
||||||
++_filteredPaths;
|
++_filteredPaths;
|
||||||
_done = true;
|
_done = true;
|
||||||
return;
|
return;
|
||||||
|
@ -1027,8 +1024,6 @@ bool DepthFirstTraverser::EdgeGetter::nextCursor(std::string const& startVertex,
|
||||||
void DepthFirstTraverser::EdgeGetter::nextEdge(
|
void DepthFirstTraverser::EdgeGetter::nextEdge(
|
||||||
std::string const& startVertex, size_t& eColIdx, VPackValueLength*& last,
|
std::string const& startVertex, size_t& eColIdx, VPackValueLength*& last,
|
||||||
std::vector<std::string>& edges) {
|
std::vector<std::string>& edges) {
|
||||||
auto cursor = _cursors.top();
|
|
||||||
auto opRes = _results.top();
|
|
||||||
if (last == nullptr) {
|
if (last == nullptr) {
|
||||||
_posInCursor.push(0);
|
_posInCursor.push(0);
|
||||||
last = &_posInCursor.top();
|
last = &_posInCursor.top();
|
||||||
|
@ -1036,6 +1031,8 @@ void DepthFirstTraverser::EdgeGetter::nextEdge(
|
||||||
++(*last);
|
++(*last);
|
||||||
}
|
}
|
||||||
while (true) {
|
while (true) {
|
||||||
|
auto cursor = _cursors.top();
|
||||||
|
auto opRes = _results.top();
|
||||||
VPackSlice edge = opRes->slice();
|
VPackSlice edge = opRes->slice();
|
||||||
if (!edge.isArray() || edge.length() <= *last) {
|
if (!edge.isArray() || edge.length() <= *last) {
|
||||||
if (cursor->hasMore()) {
|
if (cursor->hasMore()) {
|
||||||
|
|
Loading…
Reference in New Issue