mirror of https://gitee.com/bigwinds/arangodb
Merge branch 'devel' of github.com:triAGENS/ArangoDB into devel
This commit is contained in:
commit
d30585ceb2
66
CHANGELOG
66
CHANGELOG
|
@ -1,28 +1,10 @@
|
|||
v1.5.0 (XXXX-XX-XX)
|
||||
-------------------
|
||||
|
||||
* allow vertex and edge filtering with user-defined functions in TRAVERSAL,
|
||||
TRAVERSAL_TREE and SHORTEST_PATH AQL functions:
|
||||
|
||||
// using user-defined AQL functions for edge and vertex filtering
|
||||
RETURN TRAVERSAL(friends, friendrelations, "friends/john", "outbound", {
|
||||
followEdges: "myfunctions::checkedge",
|
||||
filterVertices: "myfunctions::checkvertex"
|
||||
})
|
||||
|
||||
// using the following custom filter functions
|
||||
var aqlfunctions = require("org/arangodb/aql/functions");
|
||||
aqlfunctions.register("myfunctions::checkedge", function (config, vertex, edge, path) {
|
||||
return (edge.type !== 'dislikes'); // don't follow these edges
|
||||
}, false);
|
||||
|
||||
aqlfunctions.register("myfunctions::checkvertex", function (config, vertex, path) {
|
||||
if (vertex.isDeleted || ! vertex.isActive) {
|
||||
return [ "prune", "exclude" ]; // exclude these and don't follow them
|
||||
}
|
||||
return [ ]; // include everything else
|
||||
}, false);
|
||||
|
||||
* fail if invalid `strategy`, `order` or `itemOrder` attribute values
|
||||
are passed to the AQL TRAVERSAL function. Omitting these attributes
|
||||
is not considered an error, but specifying an invalid value for any
|
||||
of these attributes will make an AQL query fail.
|
||||
|
||||
* added SHORTEST_PATH AQL function
|
||||
|
||||
|
@ -54,8 +36,6 @@ v1.5.0 (XXXX-XX-XX)
|
|||
can also be enforced by setting the `X-Arango-Version` HTTP header in a
|
||||
client request to this API on a per-request basis.
|
||||
|
||||
* issue #748: add vertex filtering to AQL's TRAVERSAL[_TREE]() function
|
||||
|
||||
* allow direct access from the `db` object to collections whose names start
|
||||
with an underscore (e.g. db._users).
|
||||
|
||||
|
@ -167,9 +147,45 @@ v1.5.0 (XXXX-XX-XX)
|
|||
result of <collection>.getIndexes() for each index. This is
|
||||
currently only implemented for hash indices and skiplist indices.
|
||||
|
||||
v1.4.8 (xxxx-xx-xx)
|
||||
|
||||
v1.4.9 (XXXX-XX-XX)
|
||||
-------------------
|
||||
|
||||
* issue #755: TRAVERSAL does not use strategy, order and itemOrder options
|
||||
|
||||
these options were not honored when configuring a traversal via the AQL
|
||||
TRAVERSAL function. Now, these options are used if specified.
|
||||
|
||||
* allow vertex and edge filtering with user-defined functions in TRAVERSAL,
|
||||
TRAVERSAL_TREE and SHORTEST_PATH AQL functions:
|
||||
|
||||
// using user-defined AQL functions for edge and vertex filtering
|
||||
RETURN TRAVERSAL(friends, friendrelations, "friends/john", "outbound", {
|
||||
followEdges: "myfunctions::checkedge",
|
||||
filterVertices: "myfunctions::checkvertex"
|
||||
})
|
||||
|
||||
// using the following custom filter functions
|
||||
var aqlfunctions = require("org/arangodb/aql/functions");
|
||||
aqlfunctions.register("myfunctions::checkedge", function (config, vertex, edge, path) {
|
||||
return (edge.type !== 'dislikes'); // don't follow these edges
|
||||
}, false);
|
||||
|
||||
aqlfunctions.register("myfunctions::checkvertex", function (config, vertex, path) {
|
||||
if (vertex.isDeleted || ! vertex.isActive) {
|
||||
return [ "prune", "exclude" ]; // exclude these and don't follow them
|
||||
}
|
||||
return [ ]; // include everything else
|
||||
}, false);
|
||||
|
||||
* issue #748: add vertex filtering to AQL's TRAVERSAL[_TREE]() function
|
||||
|
||||
|
||||
v1.4.8 (2014-01-31)
|
||||
-------------------
|
||||
|
||||
* install foxx apps in the web interface
|
||||
|
||||
* fixed a segfault in the import API
|
||||
|
||||
|
||||
|
|
|
@ -633,14 +633,14 @@ function checkReverse (config) {
|
|||
result = true;
|
||||
}
|
||||
}
|
||||
else if (config.order === ArangoTraverser.PRE_ORDER) {
|
||||
else if (config.order === ArangoTraverser.PRE_ORDER) {
|
||||
// pre order
|
||||
if (config.itemOrder === ArangoTraverser.BACKWARD &&
|
||||
config.strategy === ArangoTraverser.BREADTH_FIRST) {
|
||||
config.strategy === ArangoTraverser.BREADTH_FIRST) {
|
||||
result = true;
|
||||
}
|
||||
else if (config.itemOrder === ArangoTraverser.FORWARD &&
|
||||
config.strategy === ArangoTraverser.DEPTH_FIRST) {
|
||||
config.strategy === ArangoTraverser.DEPTH_FIRST) {
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
@ -1202,7 +1202,7 @@ ArangoTraverser = function (config) {
|
|||
}
|
||||
if (typeof value === 'string') {
|
||||
value = value.toLowerCase().replace(/-/, "");
|
||||
if (map[value] !== null) {
|
||||
if (map[value] !== null && map[value] !== undefined) {
|
||||
return map[value];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -632,14 +632,14 @@ function checkReverse (config) {
|
|||
result = true;
|
||||
}
|
||||
}
|
||||
else if (config.order === ArangoTraverser.PRE_ORDER) {
|
||||
else if (config.order === ArangoTraverser.PRE_ORDER) {
|
||||
// pre order
|
||||
if (config.itemOrder === ArangoTraverser.BACKWARD &&
|
||||
config.strategy === ArangoTraverser.BREADTH_FIRST) {
|
||||
config.strategy === ArangoTraverser.BREADTH_FIRST) {
|
||||
result = true;
|
||||
}
|
||||
else if (config.itemOrder === ArangoTraverser.FORWARD &&
|
||||
config.strategy === ArangoTraverser.DEPTH_FIRST) {
|
||||
config.strategy === ArangoTraverser.DEPTH_FIRST) {
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
@ -1201,7 +1201,7 @@ ArangoTraverser = function (config) {
|
|||
}
|
||||
if (typeof value === 'string') {
|
||||
value = value.toLowerCase().replace(/-/, "");
|
||||
if (map[value] !== null) {
|
||||
if (map[value] !== null && map[value] !== undefined) {
|
||||
return map[value];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3851,7 +3851,9 @@ function TRAVERSAL_FUNC (func,
|
|||
maxIterations: params.maxIterations,
|
||||
uniqueness: params.uniqueness,
|
||||
expander: direction,
|
||||
strategy: params.strategy
|
||||
strategy: params.strategy,
|
||||
order: params.order,
|
||||
itemOrder: params.itemOrder
|
||||
};
|
||||
|
||||
if (params.followEdges) {
|
||||
|
@ -3923,10 +3925,13 @@ function GRAPH_SHORTEST_PATH (vertexCollection,
|
|||
direction,
|
||||
params) {
|
||||
"use strict";
|
||||
|
||||
if (params === undefined) {
|
||||
params = { };
|
||||
}
|
||||
|
||||
params.strategy = "dijkstra";
|
||||
params.itemorder = "forward";
|
||||
params.order = "forward";
|
||||
params.visitor = TRAVERSAL_VISITOR;
|
||||
|
||||
if (typeof params.distance === "string") {
|
||||
|
@ -3959,6 +3964,10 @@ function GRAPH_TRAVERSAL (vertexCollection,
|
|||
direction,
|
||||
params) {
|
||||
"use strict";
|
||||
|
||||
if (params === undefined) {
|
||||
params = { };
|
||||
}
|
||||
|
||||
params.visitor = TRAVERSAL_VISITOR;
|
||||
|
||||
|
|
Loading…
Reference in New Issue