mirror of https://gitee.com/bigwinds/arangodb
Merge branch 'devel' of https://github.com/arangodb/arangodb into aql-multi-modify
This commit is contained in:
commit
840df0bf09
23
CHANGELOG
23
CHANGELOG
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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) },
|
||||||
|
|
|
@ -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`
|
||||||
|
|
Loading…
Reference in New Issue