1
0
Fork 0

Merge branch 'devel' of https://github.com/arangodb/arangodb into aql-multi-modify

This commit is contained in:
jsteemann 2015-12-03 10:16:59 +01:00
commit 840df0bf09
4 changed files with 37 additions and 17 deletions

View File

@ -50,6 +50,29 @@ v2.8.0 (XXXX-XX-XX)
- the initial synchronization now logs its progress so it can be queried using - the initial synchronization now logs its progress so it can be queried using
the regular replication status check APIs. the regular replication status check APIs.
- added `async` attribute for `sync` and `syncCollection` operations called from
the ArangoShell. Setthing this attribute to `true` will make the synchronization
job on the server go into the background, so that the shell does not block. The
status of the started asynchronous synchronization job can be queried from the
ArangoShell like this:
/* starts initial synchronization */
var replication = require("org/arangodb/replication");
var id = replication.sync({
endpoint: "tcp://master.domain.org:8529",
username: "myuser",
password: "mypasswd",
async: true
});
/* now query the id of the returned async job and print the status */
print(replication.getSyncResult(id));
The result of `getSyncResult()` will be `false` while the server-side job
has not completed, and different to `false` if it has completed. When it has
completed, all job result details will be returned by the call to `getSyncResult()`.
* fixed non-deterministic query results in some cluster queries * fixed non-deterministic query results in some cluster queries
* fixed issue #1589 * fixed issue #1589

View File

@ -13,4 +13,6 @@ supported:
- *SQRT(value)*: Returns the square root of *value* - *SQRT(value)*: Returns the square root of *value*
- *POW(base, exp)*: Returns the *base* to the exponent *exp*
- *RAND()*: Returns a pseudo-random number between 0 and 1 - *RAND()*: Returns a pseudo-random number between 0 and 1

View File

@ -203,13 +203,13 @@ std::unordered_map<std::string, Function const> const Executor::FunctionNames{
{ "ZIP", Function("ZIP", "AQL_ZIP", "l,l", true, true, false, true, true, &Functions::Zip) }, { "ZIP", Function("ZIP", "AQL_ZIP", "l,l", true, true, false, true, true, &Functions::Zip) },
// geo functions // geo functions
{ "NEAR", Function("NEAR", "AQL_NEAR", "h,n,n|nz,s", true, false, true, false, true, &Functions::Near, NotInCluster) }, { "NEAR", Function("NEAR", "AQL_NEAR", "hs,n,n|nz,s", true, false, true, false, true, &Functions::Near, NotInCluster) },
{ "WITHIN", Function("WITHIN", "AQL_WITHIN", "h,n,n,n|s", true, false, true, false, true, &Functions::Within, NotInCluster) }, { "WITHIN", Function("WITHIN", "AQL_WITHIN", "hs,n,n,n|s", true, false, true, false, true, &Functions::Within, NotInCluster) },
{ "WITHIN_RECTANGLE", Function("WITHIN_RECTANGLE", "AQL_WITHIN_RECTANGLE", "h,d,d,d,d", true, false, true, false, true) }, { "WITHIN_RECTANGLE", Function("WITHIN_RECTANGLE", "AQL_WITHIN_RECTANGLE", "hs,d,d,d,d", true, false, true, false, true) },
{ "IS_IN_POLYGON", Function("IS_IN_POLYGON", "AQL_IS_IN_POLYGON", "l,ln|nb", true, true, false, true, true) }, { "IS_IN_POLYGON", Function("IS_IN_POLYGON", "AQL_IS_IN_POLYGON", "l,ln|nb", true, true, false, true, true) },
// fulltext functions // fulltext functions
{ "FULLTEXT", Function("FULLTEXT", "AQL_FULLTEXT", "h,s,s|n", true, false, true, false, true, &Functions::Fulltext, NotInCluster) }, { "FULLTEXT", Function("FULLTEXT", "AQL_FULLTEXT", "hs,s,s|n", true, false, true, false, true, &Functions::Fulltext, NotInCluster) },
// graph functions // graph functions
{ "PATHS", Function("PATHS", "AQL_PATHS", "c,h|s,ba", true, false, true, false, false) }, { "PATHS", Function("PATHS", "AQL_PATHS", "c,h|s,ba", true, false, true, false, false) },
@ -217,14 +217,14 @@ std::unordered_map<std::string, Function const> const Executor::FunctionNames{
{ "SHORTEST_PATH", Function("SHORTEST_PATH", "AQL_SHORTEST_PATH", "h,h,s,s,s|a", true, false, true, false, false) }, { "SHORTEST_PATH", Function("SHORTEST_PATH", "AQL_SHORTEST_PATH", "h,h,s,s,s|a", true, false, true, false, false) },
{ "GRAPH_SHORTEST_PATH", Function("GRAPH_SHORTEST_PATH", "AQL_GRAPH_SHORTEST_PATH", "s,als,als|a", false, false, true, false, false) }, { "GRAPH_SHORTEST_PATH", Function("GRAPH_SHORTEST_PATH", "AQL_GRAPH_SHORTEST_PATH", "s,als,als|a", false, false, true, false, false) },
{ "GRAPH_DISTANCE_TO", Function("GRAPH_DISTANCE_TO", "AQL_GRAPH_DISTANCE_TO", "s,als,als|a", false, false, true, false, false) }, { "GRAPH_DISTANCE_TO", Function("GRAPH_DISTANCE_TO", "AQL_GRAPH_DISTANCE_TO", "s,als,als|a", false, false, true, false, false) },
{ "TRAVERSAL", Function("TRAVERSAL", "AQL_TRAVERSAL", "h,h,s,s|a", false, false, true, false, false) }, { "TRAVERSAL", Function("TRAVERSAL", "AQL_TRAVERSAL", "hs,hs,s,s|a", false, false, true, false, false) },
{ "GRAPH_TRAVERSAL", Function("GRAPH_TRAVERSAL", "AQL_GRAPH_TRAVERSAL", "s,als,s|a", false, false, true, false, false) }, { "GRAPH_TRAVERSAL", Function("GRAPH_TRAVERSAL", "AQL_GRAPH_TRAVERSAL", "s,als,s|a", false, false, true, false, false) },
{ "TRAVERSAL_TREE", Function("TRAVERSAL_TREE", "AQL_TRAVERSAL_TREE", "h,h,s,s,s|a", false, false, true, false, false) }, { "TRAVERSAL_TREE", Function("TRAVERSAL_TREE", "AQL_TRAVERSAL_TREE", "hs,hs,s,s,s|a", false, false, true, false, false) },
{ "GRAPH_TRAVERSAL_TREE", Function("GRAPH_TRAVERSAL_TREE", "AQL_GRAPH_TRAVERSAL_TREE", "s,als,s,s|a", false, false, true, false, false) }, { "GRAPH_TRAVERSAL_TREE", Function("GRAPH_TRAVERSAL_TREE", "AQL_GRAPH_TRAVERSAL_TREE", "s,als,s,s|a", false, false, true, false, false) },
{ "EDGES", Function("EDGES", "AQL_EDGES", "h,s,s|l,o", true, false, true, false, false, &Functions::Edges, NotInCluster) }, { "EDGES", Function("EDGES", "AQL_EDGES", "hs,s,s|l,o", true, false, true, false, false, &Functions::Edges, NotInCluster) },
{ "GRAPH_EDGES", Function("GRAPH_EDGES", "AQL_GRAPH_EDGES", "s,als|a", false, false, true, false, false) }, { "GRAPH_EDGES", Function("GRAPH_EDGES", "AQL_GRAPH_EDGES", "s,als|a", false, false, true, false, false) },
{ "GRAPH_VERTICES", Function("GRAPH_VERTICES", "AQL_GRAPH_VERTICES", "s,als|a", false, false, true, false, false) }, { "GRAPH_VERTICES", Function("GRAPH_VERTICES", "AQL_GRAPH_VERTICES", "s,als|a", false, false, true, false, false) },
{ "NEIGHBORS", Function("NEIGHBORS", "AQL_NEIGHBORS", "h,h,s,s|l,a", true, false, true, false, false, &Functions::Neighbors, NotInCluster) }, { "NEIGHBORS", Function("NEIGHBORS", "AQL_NEIGHBORS", "hs,hs,s,s|l,a", true, false, true, false, false, &Functions::Neighbors, NotInCluster) },
{ "GRAPH_NEIGHBORS", Function("GRAPH_NEIGHBORS", "AQL_GRAPH_NEIGHBORS", "s,als|a", false, false, true, false, false) }, { "GRAPH_NEIGHBORS", Function("GRAPH_NEIGHBORS", "AQL_GRAPH_NEIGHBORS", "s,als|a", false, false, true, false, false) },
{ "GRAPH_COMMON_NEIGHBORS", Function("GRAPH_COMMON_NEIGHBORS", "AQL_GRAPH_COMMON_NEIGHBORS", "s,als,als|a,a", false, false, true, false, false) }, { "GRAPH_COMMON_NEIGHBORS", Function("GRAPH_COMMON_NEIGHBORS", "AQL_GRAPH_COMMON_NEIGHBORS", "s,als,als|a,a", false, false, true, false, false) },
{ "GRAPH_COMMON_PROPERTIES", Function("GRAPH_COMMON_PROPERTIES", "AQL_GRAPH_COMMON_PROPERTIES", "s,als,als|a", false, false, true, false, false) }, { "GRAPH_COMMON_PROPERTIES", Function("GRAPH_COMMON_PROPERTIES", "AQL_GRAPH_COMMON_PROPERTIES", "s,als,als|a", false, false, true, false, false) },

View File

@ -152,14 +152,9 @@ OperationID ClusterComm::getOperationID () {
/// either in the callback or via poll. The caller has to call delete on /// either in the callback or via poll. The caller has to call delete on
/// the resulting ClusterCommResult*. The library takes ownerships of /// the resulting ClusterCommResult*. The library takes ownerships of
/// the pointers `headerFields` and `callback` and releases /// the pointers `headerFields` and `callback` and releases
/// the memory when the operation has been finished. If `freeBody` /// the memory when the operation has been finished. We use a shared_ptr
/// is `true`, then the library takes ownership of the pointer `body` /// for the body string such that it is possible to use the same body
/// as well and deletes it at the end. If `freeBody` is `false, it /// in multiple requests.
/// is the caller's responsibility to ensure that the object object
/// to which `body` points is retained until the full asynchronous
/// operation is finished and has been reported back to the caller
/// and that the object is destructed after the operation has finally
/// terminated.
/// ///
/// Arguments: `clientTransactionID` is a string coming from the client /// Arguments: `clientTransactionID` is a string coming from the client
/// and describing the transaction the client is doing, `coordTransactionID` /// and describing the transaction the client is doing, `coordTransactionID`