mirror of https://gitee.com/bigwinds/arangodb
Fixed a bug with AQL EDGES() function. It did not include the correct
end of the edge when using inbound or outbound in combination with includeVertices. Reported at https://groups.google.com/forum/#!topic/arangodb/6yIpzLHprrk
This commit is contained in:
parent
06dbf2c4f9
commit
aa1242b67c
|
@ -7222,7 +7222,7 @@ function AQL_EDGES (edgeCollection,
|
||||||
if (options && options.includeVertices) {
|
if (options && options.includeVertices) {
|
||||||
for (let i = 0; i < result.length; ++i) {
|
for (let i = 0; i < result.length; ++i) {
|
||||||
try {
|
try {
|
||||||
result[i] = { edge: CLONE(result[i]), vertex: DOCUMENT_HANDLE(result[i]._from) };
|
result[i] = { edge: CLONE(result[i]), vertex: DOCUMENT_HANDLE(result[i]._to) };
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
}
|
}
|
||||||
|
@ -7234,7 +7234,7 @@ function AQL_EDGES (edgeCollection,
|
||||||
if (options && options.includeVertices) {
|
if (options && options.includeVertices) {
|
||||||
for (let i = 0; i < result.length; ++i) {
|
for (let i = 0; i < result.length; ++i) {
|
||||||
try {
|
try {
|
||||||
result[i] = { edge: CLONE(result[i]), vertex: DOCUMENT_HANDLE(result[i]._to) };
|
result[i] = { edge: CLONE(result[i]), vertex: DOCUMENT_HANDLE(result[i]._from) };
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
/// @author Jan Steemann
|
/// @author Jan Steemann
|
||||||
/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany
|
/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
var jsunity = require("jsunity");
|
var jsunity = require("jsunity");
|
||||||
var db = require("org/arangodb").db;
|
var db = require("org/arangodb").db;
|
||||||
var internal = require("internal");
|
var internal = require("internal");
|
||||||
|
@ -173,7 +172,125 @@ function ahuacatlQueryEdgesTestSuite () {
|
||||||
assertEqual(actual, [ ]);
|
assertEqual(actual, [ ]);
|
||||||
|
|
||||||
assertQueryError(errors.ERROR_ARANGO_COLLECTION_NOT_FOUND.code, "FOR e IN EDGES(UnitTestsAhuacatlEdge, 'thefox/thefox', 'outbound') SORT e.what RETURN e.what");
|
assertQueryError(errors.ERROR_ARANGO_COLLECTION_NOT_FOUND.code, "FOR e IN EDGES(UnitTestsAhuacatlEdge, 'thefox/thefox', 'outbound') SORT e.what RETURN e.what");
|
||||||
}
|
},
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief checks EDGES() with includeVertices
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
testEdgesAnyInclVertices : function () {
|
||||||
|
"use strict";
|
||||||
|
let actual;
|
||||||
|
const query = "FOR e IN EDGES(@@col, @start, @dir, null, {includeVertices: true}) SORT e.edge.what RETURN e.vertex._key";
|
||||||
|
let bindVars = {
|
||||||
|
"@col": "UnitTestsAhuacatlEdge",
|
||||||
|
"dir": "any"
|
||||||
|
};
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/v1";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, ["v2", "v3"]);
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/v2";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, ["v1", "v3", "v4"]);
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/v3";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, ["v1", "v2", "v4", "v6", "v7", "v6", "v7"]);
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/v8";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, [ ]);
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/thefox";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, [ ]);
|
||||||
|
|
||||||
|
bindVars.start = "thefox/thefox";
|
||||||
|
|
||||||
|
assertQueryError(errors.ERROR_ARANGO_COLLECTION_NOT_FOUND.code, query, bindVars);
|
||||||
|
},
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief checks EDGES() with includeVertices
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
testEdgesInInclVertices : function () {
|
||||||
|
"use strict";
|
||||||
|
let actual;
|
||||||
|
const query = "FOR e IN EDGES(@@col, @start, @dir, null, {includeVertices: true}) SORT e.edge.what RETURN e.vertex._key";
|
||||||
|
let bindVars = {
|
||||||
|
"@col": "UnitTestsAhuacatlEdge",
|
||||||
|
"dir": "inbound"
|
||||||
|
};
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/v1";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, []);
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/v2";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, ["v1", "v4"]);
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/v3";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, ["v1", "v2", "v6", "v7"]);
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/v8";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, [ ]);
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/thefox";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, [ ]);
|
||||||
|
|
||||||
|
bindVars.start = "thefox/thefox";
|
||||||
|
assertQueryError(errors.ERROR_ARANGO_COLLECTION_NOT_FOUND.code, query, bindVars);
|
||||||
|
},
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief checks EDGES() with includeVertices
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
testEdgesOutInclVertices : function () {
|
||||||
|
"use strict";
|
||||||
|
let actual;
|
||||||
|
const query = "FOR e IN EDGES(@@col, @start, @dir, null, {includeVertices: true}) SORT e.edge.what RETURN e.vertex._key";
|
||||||
|
let bindVars = {
|
||||||
|
"@col": "UnitTestsAhuacatlEdge",
|
||||||
|
"dir": "outbound"
|
||||||
|
};
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/v1";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, ["v2", "v3"]);
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/v2";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, ["v3"]);
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/v3";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, ["v4", "v6", "v7"]);
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/v8";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, [ ]);
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/v5";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, [ ]);
|
||||||
|
|
||||||
|
bindVars.start = "UnitTestsAhuacatlVertex/thefox";
|
||||||
|
actual = getQueryResults(query, bindVars);
|
||||||
|
assertEqual(actual, [ ]);
|
||||||
|
|
||||||
|
bindVars.start = "thefox/thefox";
|
||||||
|
assertQueryError(errors.ERROR_ARANGO_COLLECTION_NOT_FOUND.code, query, bindVars);
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1941,7 +2058,6 @@ if (internal.debugCanUseFailAt() && ! cluster.isCluster()) {
|
||||||
jsunity.run(ahuacatlQueryNeighborsErrorsSuite);
|
jsunity.run(ahuacatlQueryNeighborsErrorsSuite);
|
||||||
jsunity.run(ahuacatlQueryShortestpathErrorsSuite);
|
jsunity.run(ahuacatlQueryShortestpathErrorsSuite);
|
||||||
}
|
}
|
||||||
|
|
||||||
return jsunity.done();
|
return jsunity.done();
|
||||||
|
|
||||||
// Local Variables:
|
// Local Variables:
|
||||||
|
|
Loading…
Reference in New Issue