mirror of https://gitee.com/bigwinds/arangodb
4696 lines
183 KiB
Plaintext
4696 lines
183 KiB
Plaintext
v2.5.0-alpha2 (2015-02-16)
|
|
-------------------
|
|
|
|
* added optimizer rule `propagate-constant-attributes`
|
|
|
|
This rule will look inside `FILTER` conditions for constant value equality comparisons,
|
|
and insert the constant values in other places in `FILTER`s. For example, the rule will
|
|
insert `42` instead of `i.value` in the second `FILTER` of the following query:
|
|
|
|
FOR i IN c1 FOR j IN c2 FILTER i.value == 42 FILTER j.value == i.value RETURN 1
|
|
|
|
* added `filtered` value to AQL query execution statistics
|
|
|
|
This value indicates how many documents were filtered by `FilterNode`s in the AQL query.
|
|
Note that `IndexRangeNode`s can also filter documents by selecting only the required ranges
|
|
from the index. The `filtered` value will not include the work done by `IndexRangeNode`s,
|
|
but only the work performed by `FilterNode`s.
|
|
|
|
* added support for sparse hash and skiplist indexes
|
|
|
|
Hash and skiplist indexes can optionally be made sparse. Sparse indexes exclude documents
|
|
in which at least one of the index attributes is either not set or has a value of `null`.
|
|
|
|
As such documents are excluded from sparse indexes, they may contain fewer documents than
|
|
their non-sparse counterparts. This enables faster indexing and can lead to reduced memory
|
|
usage in case the indexed attribute does occur only in some, but not all documents of the
|
|
collection. Sparse indexes will also reduce the number of collisions in non-unique hash
|
|
indexes in case non-existing or optional attributes are indexed.
|
|
|
|
In order to create a sparse index, an object with the attribute `sparse` can be added to
|
|
the index creation commands:
|
|
|
|
db.collection.ensureHashIndex(attributeName, { sparse: true });
|
|
db.collection.ensureHashIndex(attributeName1, attributeName2, { sparse: true });
|
|
db.collection.ensureUniqueConstraint(attributeName, { sparse: true });
|
|
db.collection.ensureUniqueConstraint(attributeName1, attributeName2, { sparse: true });
|
|
|
|
db.collection.ensureSkiplist(attributeName, { sparse: true });
|
|
db.collection.ensureSkiplist(attributeName1, attributeName2, { sparse: true });
|
|
db.collection.ensureUniqueSkiplist(attributeName, { sparse: true });
|
|
db.collection.ensureUniqueSkiplist(attributeName1, attributeName2, { sparse: true });
|
|
|
|
When not explicitly set, the `sparse` attribute defaults to `false` for new indexes.
|
|
Other indexes than hash and skiplist do not support sparsity.
|
|
|
|
As sparse indexes may exclude some documents from the collection, they cannot be used for
|
|
all types of queries. Sparse hash indexes cannot be used to find documents for which at
|
|
least one of the indexed attributes has a value of `null`. For example, the following AQL
|
|
query cannot use a sparse index, even if one was created on attribute `attr`:
|
|
|
|
FOR doc In collection
|
|
FILTER doc.attr == null
|
|
RETURN doc
|
|
|
|
If the lookup value is non-constant, a sparse index may or may not be used, depending on
|
|
the other types of conditions in the query. If the optimizer can safely determine that
|
|
the lookup value cannot be `null`, a sparse index may be used. When uncertain, the optimizer
|
|
will not make use of a sparse index in a query in order to produce correct results.
|
|
|
|
For example, the following queries cannot use a sparse index on `attr` because the optimizer
|
|
will not know beforehand whether the comparsion values for `doc.attr` will include `null`:
|
|
|
|
FOR doc In collection
|
|
FILTER doc.attr == SOME_FUNCTION(...)
|
|
RETURN doc
|
|
|
|
FOR other IN otherCollection
|
|
FOR doc In collection
|
|
FILTER doc.attr == other.attr
|
|
RETURN doc
|
|
|
|
Sparse skiplist indexes can be used for sorting if the optimizer can safely detect that the
|
|
index range does not include `null` for any of the index attributes.
|
|
|
|
* inspection of AQL data-modification queries will now detect if the data-modification part
|
|
of the query can run in lockstep with the data retrieval part of the query, or if the data
|
|
retrieval part must be executed before the data modification can start.
|
|
|
|
Executing the two in lockstep allows using much smaller buffers for intermediate results
|
|
and starts the actual data-modification operations much earlier than if the two phases
|
|
were executed seperately.
|
|
|
|
* Allow dynamic attribute names in AQL object literals
|
|
|
|
This allows using arbitrary expressions to construct attribute names in object
|
|
literals specified in AQL queries. To disambiguate expressions and other unquoted
|
|
attribute names, dynamic attribute names need to be enclosed in brackets (`[` and `]`).
|
|
Example:
|
|
|
|
FOR i IN 1..100
|
|
RETURN { [ CONCAT('value-of-', i) ] : i }
|
|
|
|
* make AQL optimizer rule "use-index-for-sort" remove sort also in case a non-sorted
|
|
index (e.g. a hash index) is used for only equality lookups and all sort attributes
|
|
are covered by the index.
|
|
|
|
Example that does not require an extra sort (needs hash index on `value`):
|
|
|
|
FOR doc IN collection FILTER doc.value == 1 SORT doc.value RETURN doc
|
|
|
|
Another example that does not require an extra sort (with hash index on `value1`, `value2`):
|
|
|
|
FOR doc IN collection FILTER doc.value1 == 1 && doc.value2 == 2 SORT doc.value1, doc.value2 RETURN doc
|
|
|
|
* make AQL optimizer rule "use-index-for-sort" remove sort also in case the sort critieria
|
|
excludes the left-most index attributes, but the left-most index attributes are used
|
|
by the index for equality-only lookups.
|
|
|
|
Example that can use the index for sorting (needs skiplist index on `value1`, `value2`):
|
|
|
|
FOR doc IN collection FILTER doc.value1 == 1 SORT doc.value2 RETURN doc
|
|
|
|
* added selectivity estimates for primary index, edge index, and hash index
|
|
|
|
The selectivity estimates are returned by the `GET /_api/index` REST API method
|
|
in a sub-attribute `selectivityEstimate` for each index that supports it. This
|
|
attribute will be omitted for indexes that do not provide selectivity estimates.
|
|
If provided, the selectivity estimate will be a numeric value between 0 and 1.
|
|
|
|
Selectivity estimates will also be reported in the result of `collection.getIndexes()`
|
|
for all indexes that support this. If no selectivity estimate can be determined for
|
|
an index, the attribute `selectivityEstimate` will be omitted here, too.
|
|
|
|
The web interface also shows selectivity estimates for each index that supports this.
|
|
|
|
Currently the following index types can provide selectivity estimates:
|
|
- primary index
|
|
- edge index
|
|
- hash index (unique and non-unique)
|
|
|
|
No selectivity estimates will be provided when running in cluster mode.
|
|
|
|
* fixed issue #1226: arangod log issues
|
|
|
|
* added additional logger if arangod is started in foreground mode on a tty
|
|
|
|
* added AQL optimizer rule "move-calculations-down"
|
|
|
|
* use exclusive native SRWLocks on Windows instead of native mutexes
|
|
|
|
* added AQL functions MD5, SHA1, and RANDOM_TOKEN.
|
|
|
|
* reduced number of string allocations when parsing certain AQL queries
|
|
|
|
parsing numbers (integers or doubles) does not require a string allocation
|
|
per number anymore
|
|
|
|
* RequestContext#bodyParam now accepts arbitrary joi schemas and rejects invalid (but well-formed) request bodies.
|
|
|
|
* enforce that AQL user functions are wrapped inside JavaScript function () declarations
|
|
|
|
AQL user functions were always expected to be wrapped inside a JavaScript function, but previously
|
|
this was not enforced when registering a user function. Enforcing the AQL user functions to be contained
|
|
inside functions prevents functions from doing some unexpected things that may have led to undefined
|
|
behavior.
|
|
|
|
|
|
v2.4.4 (2015-XX-XX)
|
|
-------------------
|
|
|
|
* add custom visitor functionality for `GRAPH_NEIGHBORS` function, too
|
|
|
|
* increased default value of traversal option *maxIterations* to 100 times of its previous
|
|
default value
|
|
|
|
|
|
v2.4.3 (2015-02-06)
|
|
-------------------
|
|
|
|
* fix multi-threading with openssl when running under Windows
|
|
|
|
* fix timeout on socket operations when running under Windows
|
|
|
|
* Fixed an error in Foxx routing which caused some apps that worked in 2.4.1 to fail with status 500: `undefined is not a function` errors in 2.4.2
|
|
This error was occurring due to seldom internal rerouting introduced by the malformed application handler.
|
|
|
|
|
|
v2.4.2 (2015-01-30)
|
|
-------------------
|
|
|
|
* added custom visitor functionality for AQL traversals
|
|
|
|
This allows more complex result processing in traversals triggered by AQL. A few examples
|
|
are shown in [this article](http://jsteemann.github.io/blog/2015/01/28/using-custom-visitors-in-aql-graph-traversals/).
|
|
|
|
* improved number of results estimated for nodes of type EnumerateListNode and SubqueryNode
|
|
in AQL explain output
|
|
|
|
* added AQL explain helper to explain arbitrary AQL queries
|
|
|
|
The helper function prints the query execution plan and the indexes to be used in the
|
|
query. It can be invoked from the ArangoShell or the web interface as follows:
|
|
|
|
require("org/arangodb/aql/explainer").explain(query);
|
|
|
|
* enable use of indexes for certain AQL conditions with non-equality predicates, in
|
|
case the condition(s) also refer to indexed attributes
|
|
|
|
The following queries will now be able to use indexes:
|
|
|
|
FILTER a.indexed == ... && a.indexed != ...
|
|
FILTER a.indexed == ... && a.nonIndexed != ...
|
|
FILTER a.indexed == ... && ! (a.indexed == ...)
|
|
FILTER a.indexed == ... && ! (a.nonIndexed == ...)
|
|
FILTER a.indexed == ... && ! (a.indexed != ...)
|
|
FILTER a.indexed == ... && ! (a.nonIndexed != ...)
|
|
FILTER (a.indexed == ... && a.nonIndexed == ...) || (a.indexed == ... && a.nonIndexed == ...)
|
|
FILTER (a.indexed == ... && a.nonIndexed != ...) || (a.indexed == ... && a.nonIndexed != ...)
|
|
|
|
* Fixed spuriously occurring "collection not found" errors when running queries on local
|
|
collections on a cluster DB server
|
|
|
|
* Fixed upload of Foxx applications to the server for apps exceeding approx. 1 MB zipped.
|
|
|
|
* Malformed Foxx applications will now return a more useful error when any route is requested.
|
|
|
|
In Production a Foxx app mounted on /app will display an html page on /app/* stating a 503 Service temporarily not available.
|
|
It will not state any information about your Application.
|
|
Before it was a 404 Not Found without any information and not distinguishable from a correct not found on your route.
|
|
|
|
In Development Mode the html page also contains information about the error occured.
|
|
|
|
* Unhandled errors thrown in Foxx routes are now handled by the Foxx framework itself.
|
|
|
|
In Production the route will return a status 500 with a body {error: "Error statement"}.
|
|
In Development the route will return a status 500 with a body {error: "Error statement", stack: "..."}
|
|
|
|
Before, it was status 500 with a plain text stack including ArangoDB internal routing information.
|
|
|
|
* The Applications tab in web interface will now request development apps more often.
|
|
So if you have a fixed a syntax error in your app it should always be visible after reload.
|
|
|
|
|
|
v2.4.1 (2015-01-19)
|
|
-------------------
|
|
|
|
* improved WAL recovery output
|
|
|
|
* fixed certain OR optimizations in AQL optimizer
|
|
|
|
* better diagnostics for arangoimp
|
|
|
|
* fixed invalid result of HTTP REST API method `/_admin/foxx/rescan`
|
|
|
|
* fixed possible segmentation fault when passing a Buffer object into a V8 function
|
|
as a parameter
|
|
|
|
* updated AQB module to 1.8.0.
|
|
|
|
|
|
v2.4.0 (2015-01-13)
|
|
-------------------
|
|
|
|
* updated AQB module to 1.7.0.
|
|
|
|
* fixed V8 integration-related crashes
|
|
|
|
* make `fs.move(src, dest)` also fail when both `src` and `dest` are
|
|
existing directories. This ensures the same behavior of the move operation
|
|
on different platforms.
|
|
|
|
* fixed AQL insert operation for multi-shard collections in cluster
|
|
|
|
* added optional return value for AQL data-modification queries.
|
|
This allows returning the documents inserted, removed or updated with the query, e.g.
|
|
|
|
FOR doc IN docs REMOVE doc._key IN docs LET removed = OLD RETURN removed
|
|
FOR doc IN docs INSERT { } IN docs LET inserted = NEW RETURN inserted
|
|
FOR doc IN docs UPDATE doc._key WITH { } IN docs LET previous = OLD RETURN previous
|
|
FOR doc IN docs UPDATE doc._key WITH { } IN docs LET updated = NEW RETURN updated
|
|
|
|
The variables `OLD` and `NEW` are automatically available when a `REMOVE`, `INSERT`,
|
|
`UPDATE` or `REPLACE` statement is immediately followed by a `LET` statement.
|
|
Note that the `LET` and `RETURN` statements in data-modification queries are not as
|
|
flexible as the general versions of `LET` and `RETURN`. When returning documents from
|
|
data-modification operations, only a single variable can be assigned using `LET`, and
|
|
the assignment can only be either `OLD` or `NEW`, but not an arbitrary expression. The
|
|
`RETURN` statement also allows using the just-created variable only, and no arbitrary
|
|
expressions.
|
|
|
|
|
|
v2.4.0-beta1 (2014-12-26)
|
|
--------------------------
|
|
|
|
* fixed superstates in FoxxGenerator
|
|
|
|
* fixed issue #1065: Aardvark: added creation of documents and edges with _key property
|
|
|
|
* fixed issue #1198: Aardvark: current AQL editor query is now cached
|
|
|
|
* Upgraded V8 version from 3.16.14 to 3.29.59
|
|
|
|
The built-in version of V8 has been upgraded from 3.16.14 to 3.29.59.
|
|
This activates several ES6 (also dubbed *Harmony* or *ES.next*) features in
|
|
ArangoDB, both in the ArangoShell and the ArangoDB server. They can be
|
|
used for scripting and in server-side actions such as Foxx routes, traversals
|
|
etc.
|
|
|
|
The following ES6 features are available in ArangoDB 2.4 by default:
|
|
|
|
* iterators
|
|
* the `of` operator
|
|
* symbols
|
|
* predefined collections types (Map, Set etc.)
|
|
* typed arrays
|
|
|
|
Many other ES6 features are disabled by default, but can be made available by
|
|
starting arangod or arangosh with the appropriate options:
|
|
|
|
* arrow functions
|
|
* proxies
|
|
* generators
|
|
* String, Array, and Number enhancements
|
|
* constants
|
|
* enhanced object and numeric literals
|
|
|
|
To activate all these ES6 features in arangod or arangosh, start it with
|
|
the following options:
|
|
|
|
arangosh --javascript.v8-options="--harmony --harmony_generators"
|
|
|
|
More details on the available ES6 features can be found in
|
|
[this blog](https://jsteemann.github.io/blog/2014/12/19/using-es6-features-in-arangodb/).
|
|
|
|
* Added Foxx generator for building Hypermedia APIs
|
|
|
|
A more detailed description is [here](https://www.arangodb.com/2014/12/08/building-hypermedia-apis-foxxgenerator)
|
|
|
|
* New `Applications` tab in web interface:
|
|
|
|
The `applications` tab got a complete redesign.
|
|
It will now only show applications that are currently running on ArangoDB.
|
|
For a selected application, a new detailed view has been created.
|
|
This view provides a better overview of the app:
|
|
* author
|
|
* license
|
|
* version
|
|
* contributors
|
|
* download links
|
|
* API documentation
|
|
|
|
To install a new application, a new dialogue is now available.
|
|
It provides the features already available in the console application `foxx-manager` plus some more:
|
|
* install an application from Github
|
|
* install an application from a zip file
|
|
* install an application from ArangoDB's application store
|
|
* create a new application from scratch: this feature uses a generator to
|
|
create a Foxx application with pre-defined CRUD methods for a given list
|
|
of collections. The generated Foxx app can either be downloaded as a zip file or
|
|
be installed on the server. Starting with a new Foxx app has never been easier.
|
|
|
|
* fixed issue #1102: Aardvark: Layout bug in documents overview
|
|
|
|
The documents overview was entirely destroyed in some situations on Firefox.
|
|
We replaced the plugin we used there.
|
|
|
|
* fixed issue #1168: Aardvark: pagination buttons jumping
|
|
|
|
* fixed issue #1161: Aardvark: Click on Import JSON imports previously uploaded file
|
|
|
|
* removed configure options `--enable-all-in-one-v8`, `--enable-all-in-one-icu`,
|
|
and `--enable-all-in-one-libev`.
|
|
|
|
* global internal rename to fix naming incompatibilities with JSON:
|
|
|
|
Internal functions with names containing `array` have been renamed to `object`,
|
|
internal functions with names containing `list` have been renamed to `array`.
|
|
The renaming was mainly done in the C++ parts. The documentation has also been
|
|
adjusted so that the correct JSON type names are used in most places.
|
|
|
|
The change also led to the addition of a few function aliases in AQL:
|
|
|
|
* `TO_LIST` now is an alias of the new `TO_ARRAY`
|
|
* `IS_LIST` now is an alias of the new `IS_ARRAY`
|
|
* `IS_DOCUMENT` now is an alias of the new `IS_OBJECT`
|
|
|
|
The changed also renamed the option `mergeArrays` to `mergeObjects` for AQL
|
|
data-modification query options and HTTP document modification API
|
|
|
|
* AQL: added optimizer rule "remove-filter-covered-by-index"
|
|
|
|
This rule removes FilterNodes and CalculationNodes from an execution plan if the
|
|
filter is already covered by a previous IndexRangeNode. Removing the CalculationNode
|
|
and the FilterNode will speed up query execution because the query requires less
|
|
computation.
|
|
|
|
* AQL: added optimizer rule "remove-sort-rand"
|
|
|
|
This rule removes a `SORT RAND()` expression from a query and moves the random
|
|
iteration into the appropriate `EnumerateCollectionNode`. This is more efficient
|
|
than individually enumerating and then sorting randomly.
|
|
|
|
* AQL: range optimizations for IN and OR
|
|
|
|
This change enables usage of indexes for several additional cases. Filters containing
|
|
the `IN` operator can now make use of indexes, and multiple OR- or AND-combined filter
|
|
conditions can now also use indexes if the filters are accessing the same indexed
|
|
attribute.
|
|
|
|
Here are a few examples of queries that can now use indexes but couldn't before:
|
|
|
|
FOR doc IN collection
|
|
FILTER doc.indexedAttribute == 1 || doc.indexedAttribute > 99
|
|
RETURN doc
|
|
|
|
FOR doc IN collection
|
|
FILTER doc.indexedAttribute IN [ 3, 42 ] || doc.indexedAttribute > 99
|
|
RETURN doc
|
|
|
|
FOR doc IN collection
|
|
FILTER (doc.indexedAttribute > 2 && doc.indexedAttribute < 10) ||
|
|
(doc.indexedAttribute > 23 && doc.indexedAttribute < 42)
|
|
RETURN doc
|
|
|
|
* fixed issue #500: AQL parentheses issue
|
|
|
|
This change allows passing subqueries as AQL function parameters without using
|
|
duplicate brackets (e.g. `FUNC(query)` instead of `FUNC((query))`
|
|
|
|
* added optional `COUNT` clause to AQL `COLLECT`
|
|
|
|
This allows more efficient group count calculation queries, e.g.
|
|
|
|
FOR doc IN collection
|
|
COLLECT age = doc.age WITH COUNT INTO length
|
|
RETURN { age: age, count: length }
|
|
|
|
A count-only query is also possible:
|
|
|
|
FOR doc IN collection
|
|
COLLECT WITH COUNT INTO length
|
|
RETURN length
|
|
|
|
* fixed missing makeDirectory when fetching a Foxx application from a zip file
|
|
|
|
* fixed issue #1134: Change the default endpoint to localhost
|
|
|
|
This change will modify the IP address ArangoDB listens on to 127.0.0.1 by default.
|
|
This will make new ArangoDB installations unaccessible from clients other than
|
|
localhost unless changed. This is a security feature.
|
|
|
|
To make ArangoDB accessible from any client, change the server's configuration
|
|
(`--server.endpoint`) to either `tcp://0.0.0.0:8529` or the server's publicly
|
|
visible IP address.
|
|
|
|
* deprecated `Repository#modelPrototype`. Use `Repository#model` instead.
|
|
|
|
* IMPORTANT CHANGE: by default, system collections are included in replication and all
|
|
replication API return values. This will lead to user accounts and credentials
|
|
data being replicated from master to slave servers. This may overwrite
|
|
slave-specific database users.
|
|
|
|
If this is undesired, the `_users` collection can be excluded from replication
|
|
easily by setting the `includeSystem` attribute to `false` in the following commands:
|
|
|
|
* replication.sync({ includeSystem: false });
|
|
* replication.applier.properties({ includeSystem: false });
|
|
|
|
This will exclude all system collections (including `_aqlfunctions`, `_graphs` etc.)
|
|
from the initial synchronisation and the continuous replication.
|
|
|
|
If this is also undesired, it is also possible to specify a list of collections to
|
|
exclude from the initial synchronisation and the continuous replication using the
|
|
`restrictCollections` attribute, e.g.:
|
|
|
|
replication.applier.properties({
|
|
includeSystem: true,
|
|
restrictType: "exclude",
|
|
restrictCollections: [ "_users", "_graphs", "foo" ]
|
|
});
|
|
|
|
The HTTP API methods for fetching the replication inventory and for dumping collections
|
|
also support the `includeSystem` control flag via a URL parameter.
|
|
|
|
* removed DEPRECATED replication methods:
|
|
* `replication.logger.start()`
|
|
* `replication.logger.stop()`
|
|
* `replication.logger.properties()`
|
|
* HTTP PUT `/_api/replication/logger-start`
|
|
* HTTP PUT `/_api/replication/logger-stop`
|
|
* HTTP GET `/_api/replication/logger-config`
|
|
* HTTP PUT `/_api/replication/logger-config`
|
|
|
|
* fixed issue #1174, which was due to locking problems in distributed
|
|
AQL execution
|
|
|
|
* improved cluster locking for AQL avoiding deadlocks
|
|
|
|
* use DistributeNode for modifying queries with REPLACE and UPDATE, if
|
|
possible
|
|
|
|
|
|
v2.3.6 (2015-XX-XX)
|
|
-------------------
|
|
|
|
* fixed AQL subquery optimization that produced wrong result when multiple subqueries
|
|
directly followed each other and and a directly following `LET` statement did refer
|
|
to any but the first subquery.
|
|
|
|
|
|
v2.3.5 (2015-01-16)
|
|
-------------------
|
|
|
|
* fixed intermittent 404 errors in Foxx apps after mounting or unmounting apps
|
|
|
|
* fixed issue #1200: Expansion operator results in "Cannot call method 'forEach' of null"
|
|
|
|
* fixed issue #1199: Cannot unlink root node of plan
|
|
|
|
|
|
v2.3.4 (2014-12-23)
|
|
-------------------
|
|
|
|
* fixed cerberus path for MyArangoDB
|
|
|
|
|
|
v2.3.3 (2014-12-17)
|
|
-------------------
|
|
|
|
* fixed error handling in instanciation of distributed AQL queries, this
|
|
also fixes a bug in cluster startup with many servers
|
|
|
|
* issue #1185: parse non-fractional JSON numbers with exponent (e.g. `4e-261`)
|
|
|
|
* issue #1159: allow --server.request-timeout and --server.connect-timeout of 0
|
|
|
|
|
|
v2.3.2 (2014-12-09)
|
|
-------------------
|
|
|
|
* fixed issue #1177: Fix bug in the user app's storage
|
|
|
|
* fixed issue #1173: AQL Editor "Save current query" resets user password
|
|
|
|
* fixed missing makeDirectory when fetching a Foxx application from a zip file
|
|
|
|
* put in warning about default changed: fixed issue #1134: Change the default endpoint to localhost
|
|
|
|
* fixed issue #1163: invalid fullCount value returned from AQL
|
|
|
|
* fixed range operator precedence
|
|
|
|
* limit default maximum number of plans created by AQL optimizer to 256 (from 1024)
|
|
|
|
* make AQL optimizer not generate an extra plan if an index can be used, but modify
|
|
existing plans in place
|
|
|
|
* fixed AQL cursor ttl (time-to-live) issue
|
|
|
|
Any user-specified cursor ttl value was not honored since 2.3.0.
|
|
|
|
* fixed segfault in AQL query hash index setup with unknown shapes
|
|
|
|
* fixed memleaks
|
|
|
|
* added AQL optimizer rule for removing `INTO` from a `COLLECT` statement if not needed
|
|
|
|
* fixed issue #1131
|
|
|
|
This change provides the `KEEP` clause for `COLLECT ... INTO`. The `KEEP` clause
|
|
allows controlling which variables will be kept in the variable created by `INTO`.
|
|
|
|
* fixed issue #1147, must protect dispatcher ID for etcd
|
|
|
|
v2.3.1 (2014-11-28)
|
|
-------------------
|
|
|
|
* recreate password if missing during upgrade
|
|
|
|
* fixed issue #1126
|
|
|
|
* fixed non-working subquery index optimizations
|
|
|
|
* do not restrict summary of Foxx applications to 60 characters
|
|
|
|
* fixed display of "required" path parameters in Foxx application documentation
|
|
|
|
* added more optimizations of constants values in AQL FILTER conditions
|
|
|
|
* fixed invalid or-to-in optimization for FILTERs containing comparisons
|
|
with boolean values
|
|
|
|
* fixed replication of `_graphs` collection
|
|
|
|
* added AQL list functions `PUSH`, `POP`, `UNSHIFT`, `SHIFT`, `REMOVE_VALUES`,
|
|
`REMOVE_VALUE`, `REMOVE_NTH` and `APPEND`
|
|
|
|
* added AQL functions `CALL` and `APPLY` to dynamically call other functions
|
|
|
|
* fixed AQL optimizer cost estimation for LIMIT node
|
|
|
|
* prevent Foxx queues from permanently writing to the journal even when
|
|
server is idle
|
|
|
|
* fixed AQL COLLECT statement with INTO clause, which copied more variables
|
|
than v2.2 and thus lead to too much memory consumption.
|
|
This deals with #1107.
|
|
|
|
* fixed AQL COLLECT statement, this concerned every COLLECT statement,
|
|
only the first group had access to the values of the variables before
|
|
the COLLECT statement. This deals with #1127.
|
|
|
|
* fixed some AQL internals, where sometimes too many items were
|
|
fetched from upstream in the presence of a LIMIT clause. This should
|
|
generally improve performance.
|
|
|
|
|
|
v2.3.0 (2014-11-18)
|
|
-------------------
|
|
|
|
* fixed syslog flags. `--log.syslog` is deprecated and setting it has no effect,
|
|
`--log.facility` now works as described. Application name has been changed from
|
|
`triagens` to `arangod`. It can be changed using `--log.application`. The syslog
|
|
will only contain the actual log message. The datetime prefix is omiited.
|
|
|
|
* fixed deflate in SimpleHttpClient
|
|
|
|
* fixed issue #1104: edgeExamples broken or changed
|
|
|
|
* fixed issue #1103: Error while importing user queries
|
|
|
|
* fixed issue #1100: AQL: HAS() fails on doc[attribute_name]
|
|
|
|
* fixed issue #1098: runtime error when creating graph vertex
|
|
|
|
* hide system applications in **Applications** tab by default
|
|
|
|
Display of system applications can be toggled by using the *system applications*
|
|
toggle in the UI.
|
|
|
|
* added HTTP REST API for managing tasks (`/_api/tasks`)
|
|
|
|
* allow passing character lists as optional parameter to AQL functions `TRIM`,
|
|
`LTRIM` and `RTRIM`
|
|
|
|
These functions now support trimming using custom character lists. If no character
|
|
lists are specified, all whitespace characters will be removed as previously:
|
|
|
|
TRIM(" foobar\t \r\n ") // "foobar"
|
|
TRIM(";foo;bar;baz, ", "; ") // "foo;bar;baz"
|
|
|
|
* added AQL string functions `LTRIM`, `RTRIM`, `FIND_FIRST`, `FIND_LAST`, `SPLIT`,
|
|
`SUBSTITUTE`
|
|
|
|
* added AQL functions `ZIP`, `VALUES` and `PERCENTILE`
|
|
|
|
* made AQL functions `CONCAT` and `CONCAT_SEPARATOR` work with list arguments
|
|
|
|
* dynamically create extra dispatcher threads if required
|
|
|
|
* fixed issue #1097: schemas in the API docs no longer show required properties as optional
|
|
|
|
|
|
v2.3.0-beta2 (2014-11-08)
|
|
-------------------------
|
|
|
|
* front-end: new icons for uploading and downloading JSON documents into a collection
|
|
|
|
* front-end: fixed documents pagination css display error
|
|
|
|
* front-end: fixed flickering of the progress view
|
|
|
|
* front-end: fixed missing event for documents filter function
|
|
|
|
* front-end: jsoneditor: added CMD+Return (Mac) CTRL+Return (Linux/Win) shortkey for
|
|
saving a document
|
|
|
|
* front-end: added information tooltip for uploading json documents.
|
|
|
|
* front-end: added database management view to the collapsed navigation menu
|
|
|
|
* front-end: added collection truncation feature
|
|
|
|
* fixed issue #1086: arangoimp: Odd errors if arguments are not given properly
|
|
|
|
* performance improvements for AQL queries that use JavaScript-based expressions
|
|
internally
|
|
|
|
* added AQL geo functions `WITHIN_RECTANGLE` and `IS_IN_POLYGON`
|
|
|
|
* fixed non-working query results download in AQL editor of web interface
|
|
|
|
* removed debug print message in AQL editor query export routine
|
|
|
|
* fixed issue #1075: Aardvark: user name required even if auth is off #1075
|
|
|
|
The fix for this prefills the username input field with the current user's
|
|
accout name if any and `root` (the default username) otherwise. Additionally,
|
|
the tooltip text has been slightly adjusted.
|
|
|
|
* fixed issue #1069: Add 'raw' link to swagger ui so that the raw swagger
|
|
json can easily be retrieved
|
|
|
|
This adds a link to the Swagger API docs to an application's detail view in
|
|
the **Applications** tab of the web interface. The link produces the Swagger
|
|
JSON directly. If authentication is turned on, the link requires authentication,
|
|
too.
|
|
|
|
* documentation updates
|
|
|
|
|
|
v2.3.0-beta1 (2014-11-01)
|
|
-------------------------
|
|
|
|
* added dedicated `NOT IN` operator for AQL
|
|
|
|
Previously, a `NOT IN` was only achievable by writing a negated `IN` condition:
|
|
|
|
FOR i IN ... FILTER ! (i IN [ 23, 42 ]) ...
|
|
|
|
This can now alternatively be expressed more intuitively as follows:
|
|
|
|
FOR i IN ... FILTER i NOT IN [ 23, 42 ] ...
|
|
|
|
* added alternative logical operator syntax for AQL
|
|
|
|
Previously, the logical operators in AQL could only be written as:
|
|
- `&&`: logical and
|
|
- `||`: logical or
|
|
- `!`: negation
|
|
|
|
ArangoDB 2.3 introduces the alternative variants for these operators:
|
|
- `AND`: logical and
|
|
- `OR`: logical or
|
|
- `NOT`: negation
|
|
|
|
The new syntax is just an alternative to the old syntax, allowing easier
|
|
migration from SQL. The old syntax is still fully supported and will be.
|
|
|
|
* improved output of `ArangoStatement.parse()` and POST `/_api/query`
|
|
|
|
If an AQL query can be parsed without problems, The return value of
|
|
`ArangoStatement.parse()` now contains an attribute `ast` with the abstract
|
|
syntax tree of the query (before optimizations). Though this is an internal
|
|
representation of the query and is subject to change, it can be used to inspect
|
|
how ArangoDB interprets a given query.
|
|
|
|
* improved `ArangoStatement.explain()` and POST `/_api/explain`
|
|
|
|
The commands for explaining AQL queries have been improved.
|
|
|
|
* added command-line option `--javascript.v8-contexts` to control the number of
|
|
V8 contexts created in arangod.
|
|
|
|
Previously, the number of V8 contexts was equal to the number of server threads
|
|
(as specified by option `--server.threads`).
|
|
|
|
However, it may be sensible to create different amounts of threads and V8
|
|
contexts. If the option is not specified, the number of V8 contexts created
|
|
will be equal to the number of server threads. Thus no change in configuration
|
|
is required to keep the old behavior.
|
|
|
|
If you are using the default config files or merge them with your local config
|
|
files, please review if the default number of server threads is okay in your
|
|
environment. Additionally you should verify that the number of V8 contexts
|
|
created (as specified in option `--javascript.v8-contexts`) is okay.
|
|
|
|
* the number of server.threads specified is now the minimum of threads
|
|
started. There are situation in which threads are waiting for results of
|
|
distributed database servers. In this case the number of threads is
|
|
dynamically increased.
|
|
|
|
* removed index type "bitarray"
|
|
|
|
Bitarray indexes were only half-way documented and integrated in previous versions
|
|
of ArangoDB so their benefit was limited. The support for bitarray indexes has
|
|
thus been removed in ArangoDB 2.3. It is not possible to create indexes of type
|
|
"bitarray" with ArangoDB 2.3.
|
|
|
|
When a collection is openend that contains a bitarray index definition created
|
|
with a previous version of ArangoDB, ArangoDB will ignore it and log the following
|
|
warning:
|
|
|
|
index type 'bitarray' is not supported in this version of ArangoDB and is ignored
|
|
|
|
Future versions of ArangoDB may automatically remove such index definitions so the
|
|
warnings will eventually disappear.
|
|
|
|
* removed internal "_admin/modules/flush" in order to fix requireApp
|
|
|
|
* added basic support for handling binary data in Foxx
|
|
|
|
Requests with binary payload can be processed in Foxx applications by
|
|
using the new method `res.rawBodyBuffer()`. This will return the unparsed request
|
|
body as a Buffer object.
|
|
|
|
There is now also the method `req.requestParts()` available in Foxx to retrieve
|
|
the individual components of a multipart HTTP request.
|
|
|
|
Buffer objects can now be used when setting the response body of any Foxx action.
|
|
Additionally, `res.send()` has been added as a convenience method for returning
|
|
strings, JSON objects or buffers from a Foxx action:
|
|
|
|
res.send("<p>some HTML</p>");
|
|
res.send({ success: true });
|
|
res.send(new Buffer("some binary data"));
|
|
|
|
The convenience method `res.sendFile()` can now be used to easily return the
|
|
contents of a file from a Foxx action:
|
|
|
|
res.sendFile(applicationContext.foxxFilename("image.png"));
|
|
|
|
`fs.write` now accepts not only strings but also Buffer objects as second parameter:
|
|
|
|
fs.write(filename, "some data");
|
|
fs.write(filename, new Buffer("some binary data"));
|
|
|
|
`fs.readBuffer` can be used to return the contents of a file in a Buffer object.
|
|
|
|
* improved performance of insertion into non-unique hash indexes significantly in case
|
|
many duplicate keys are used in the index
|
|
|
|
* issue #1042: set time zone in log output
|
|
|
|
the command-line option `--log.use-local-time` was added to print dates and times in
|
|
the server-local timezone instead of UTC
|
|
|
|
* command-line options that require a boolean value now validate the
|
|
value given on the command-line
|
|
|
|
This prevents issues if no value is specified for an option that
|
|
requires a boolean value. For example, the following command-line would
|
|
have caused trouble in 2.2, because `--server.endpoint` would have been
|
|
used as the value for the `--server.disable-authentication` options
|
|
(which requires a boolean value):
|
|
|
|
arangod --server.disable-authentication --server.endpoint tcp://127.0.0.1:8529 data
|
|
|
|
In 2.3, running this command will fail with an error and requires to
|
|
be modified to:
|
|
|
|
arangod --server.disable-authentication true --server.endpoint tcp://127.0.0.1:8529 data
|
|
|
|
* improved performance of CSV import in arangoimp
|
|
|
|
* fixed issue #1027: Stack traces are off-by-one
|
|
|
|
* fixed issue #1026: Modules loaded in different files within the same app
|
|
should refer to the same module
|
|
|
|
* fixed issue #1025: Traversal not as expected in undirected graph
|
|
|
|
* added a _relation function in the general-graph module.
|
|
|
|
This deprecated _directedRelation and _undirectedRelation.
|
|
ArangoDB does not offer any constraints for undirected edges
|
|
which caused some confusion of users how undirected relations
|
|
have to be handled. Relation now only supports directed relations
|
|
and the user can actively simulate undirected relations.
|
|
|
|
* changed return value of Foxx.applicationContext#collectionName:
|
|
|
|
Previously, the function could return invalid collection names because
|
|
invalid characters were not replaced in the application name prefix, only
|
|
in the collection name passed.
|
|
|
|
Now, the function replaces invalid characters also in the application name
|
|
prefix, which might to slightly different results for application names that
|
|
contained any characters outside the ranges [a-z], [A-Z] and [0-9].
|
|
|
|
* prevent XSS in AQL editor and logs view
|
|
|
|
* integrated tutorial into ArangoShell and web interface
|
|
|
|
* added option `--backslash-escape` for arangoimp when running CSV file imports
|
|
|
|
* front-end: added download feature for (filtered) documents
|
|
|
|
* front-end: added download feature for the results of a user query
|
|
|
|
* front-end: added function to move documents to another collection
|
|
|
|
* front-end: added sort-by attribute to the documents filter
|
|
|
|
* front-end: added sorting feature to database, graph management and user management view.
|
|
|
|
* issue #989: front-end: Databases view not refreshing after deleting a database
|
|
|
|
* issue #991: front-end: Database search broken
|
|
|
|
* front-end: added infobox which shows more information about a document (_id, _rev, _key) or
|
|
an edge (_id, _rev, _key, _from, _to). The from and to attributes are clickable and redirect
|
|
to their document location.
|
|
|
|
* front-end: added edit-mode for deleting multiple documents at the same time.
|
|
|
|
* front-end: added delete button to the detailed document/edge view.
|
|
|
|
* front-end: added visual feedback for saving documents/edges inside the editor (error/success).
|
|
|
|
* front-end: added auto-focusing for the first input field in a modal.
|
|
|
|
* front-end: added validation for user input in a modal.
|
|
|
|
* front-end: user defined queries are now stored inside the database and are bound to the current
|
|
user, instead of using the local storage functionality of the browsers. The outcome of this is
|
|
that user defined queries are now independently usable from any device. Also queries can now be
|
|
edited through the standard document editor of the front-end through the _users collection.
|
|
|
|
* front-end: added import and export functionality for user defined queries.
|
|
|
|
* front-end: added new keywords and functions to the aql-editor theme
|
|
|
|
* front-end: applied tile-style to the graph view
|
|
|
|
* front-end: now using the new graph api including multi-collection support
|
|
|
|
* front-end: foxx apps are now deleteable
|
|
|
|
* front-end: foxx apps are now installable and updateable through github, if github is their
|
|
origin.
|
|
|
|
* front-end: added foxx app version control. Multiple versions of a single foxx app are now
|
|
installable and easy to manage and are also arranged in groups.
|
|
|
|
* front-end: the user-set filter of a collection is now stored until the user navigates to
|
|
another collection.
|
|
|
|
* front-end: fetching and filtering of documents, statistics, and query operations are now
|
|
handled with asynchronous ajax calls.
|
|
|
|
* front-end: added progress indicator if the front-end is waiting for a server operation.
|
|
|
|
* front-end: fixed wrong count of documents in the documents view of a collection.
|
|
|
|
* front-end: fixed unexpected styling of the manage db view and navigation.
|
|
|
|
* front-end: fixed wrong handling of select fields in a modal view.
|
|
|
|
* front-end: fixed wrong positioning of some tooltips.
|
|
|
|
* automatically call `toJSON` function of JavaScript objects (if present)
|
|
when serializing them into database documents. This change allows
|
|
storing JavaScript date objects in the database in a sensible manner.
|
|
|
|
|
|
v2.2.7 (2014-11-19)
|
|
-------------------
|
|
|
|
* fixed issue #998: Incorrect application URL for non-system Foxx apps
|
|
|
|
* fixed issue #1079: AQL editor: keyword WITH in UPDATE query is not highlighted
|
|
|
|
* fix memory leak in cluster nodes
|
|
|
|
* fixed registration of AQL user-defined functions in Web UI (JS shell)
|
|
|
|
* fixed error display in Web UI for certain errors
|
|
(now error message is printed instead of 'undefined')
|
|
|
|
* fixed issue #1059: bug in js module console
|
|
|
|
* fixed issue #1056: "fs": zip functions fail with passwords
|
|
|
|
* fixed issue #1063: Docs: measuring unit of --wal.logfile-size?
|
|
|
|
* fixed issue #1062: Docs: typo in 14.2 Example data
|
|
|
|
|
|
v2.2.6 (2014-10-20)
|
|
-------------------
|
|
|
|
* fixed issue #972: Compilation Issue
|
|
|
|
* fixed issue #743: temporary directories are now unique and one can read
|
|
off the tool that created them, if empty, they are removed atexit
|
|
|
|
* Highly improved performance of all AQL GRAPH_* functions.
|
|
|
|
* Orphan collections in general graphs can now be found via GRAPH_VERTICES
|
|
if either "any" or no direction is defined
|
|
|
|
* Fixed documentation for AQL function GRAPH_NEIGHBORS.
|
|
The option "vertexCollectionRestriction" is meant to filter the target
|
|
vertices only, and should not filter the path.
|
|
|
|
* Fixed a bug in GRAPH_NEIGHBORS which enforced only empty results
|
|
under certain conditions
|
|
|
|
|
|
v2.2.5 (2014-10-09)
|
|
-------------------
|
|
|
|
* fixed issue #961: allow non-JSON values in undocument request bodies
|
|
|
|
* fixed issue 1028: libicu is now statically linked
|
|
|
|
* fixed cached lookups of collections on the server, which may have caused spurious
|
|
problems after collection rename operations
|
|
|
|
|
|
v2.2.4 (2014-10-01)
|
|
-------------------
|
|
|
|
* fixed accessing `_from` and `_to` attributes in `collection.byExample` and
|
|
`collection.firstExample`
|
|
|
|
These internal attributes were not handled properly in the mentioned functions, so
|
|
searching for them did not always produce documents
|
|
|
|
* fixed issue #1030: arangoimp 2.2.3 crashing, not logging on large Windows CSV file
|
|
|
|
* fixed issue #1025: Traversal not as expected in undirected graph
|
|
|
|
* fixed issue #1020
|
|
|
|
This requires re-introducing the startup option `--database.force-sync-properties`.
|
|
|
|
This option can again be used to force fsyncs of collection, index and database properties
|
|
stored as JSON strings on disk in files named `parameter.json`. Syncing these files after
|
|
a write may be necessary if the underlying storage does not sync file contents by itself
|
|
in a "sensible" amount of time after a file has been written and closed.
|
|
|
|
The default value is `true` so collection, index and database properties will always be
|
|
synced to disk immediately. This affects creating, renaming and dropping collections as
|
|
well as creating and dropping databases and indexes. Each of these operations will perform
|
|
an additional fsync on the `parameter.json` file if the option is set to `true`.
|
|
|
|
It might be sensible to set this option to `false` for workloads that create and drop a
|
|
lot of collections (e.g. test runs).
|
|
|
|
Document operations such as creating, updating and dropping documents are not affected
|
|
by this option.
|
|
|
|
* fixed issue #1016: AQL editor bug
|
|
|
|
* fixed issue #1014: WITHIN function returns wrong distance
|
|
|
|
* fixed AQL shortest path calculation in function `GRAPH_SHORTEST_PATH` to return
|
|
complete vertex objects instead of just vertex ids
|
|
|
|
* allow changing of attributes of documents stored in server-side JavaScript variables
|
|
|
|
Previously, the following did not work:
|
|
|
|
var doc = db.collection.document(key);
|
|
doc._key = "abc"; // overwriting internal attributes not supported
|
|
doc.value = 123; // overwriting existing attributes not supported
|
|
|
|
Now, modifying documents stored in server-side variables (e.g. `doc` in the above case)
|
|
is supported. Modifying the variables will not update the documents in the database,
|
|
but will modify the JavaScript object (which can be written back to the database using
|
|
`db.collection.update` or `db.collection.replace`)
|
|
|
|
* fixed issue #997: arangoimp apparently doesn't support files >2gig on Windows
|
|
|
|
large file support (requires using `_stat64` instead of `stat`) is now supported on
|
|
Windows
|
|
|
|
|
|
v2.2.3 (2014-09-02)
|
|
-------------------
|
|
|
|
* added `around` for Foxx controller
|
|
|
|
* added `type` option for HTTP API `GET /_api/document?collection=...`
|
|
|
|
This allows controlling the type of results to be returned. By default, paths to
|
|
documents will be returned, e.g.
|
|
|
|
[
|
|
`/_api/document/test/mykey1`,
|
|
`/_api/document/test/mykey2`,
|
|
...
|
|
]
|
|
|
|
To return a list of document ids instead of paths, the `type` URL parameter can be
|
|
set to `id`:
|
|
|
|
[
|
|
`test/mykey1`,
|
|
`test/mykey2`,
|
|
...
|
|
]
|
|
|
|
To return a list of document keys only, the `type` URL parameter can be set to `key`:
|
|
|
|
[
|
|
`mykey1`,
|
|
`mykey2`,
|
|
...
|
|
]
|
|
|
|
|
|
* properly capitalize HTTP response header field names in case the `x-arango-async`
|
|
HTTP header was used in a request.
|
|
|
|
* fixed several documentation issues
|
|
|
|
* speedup for several general-graph functions, AQL functions starting with `GRAPH_`
|
|
and traversals
|
|
|
|
|
|
v2.2.2 (2014-08-08)
|
|
-------------------
|
|
|
|
* allow storing non-reserved attribute names starting with an underscore
|
|
|
|
Previous versions of ArangoDB parsed away all attribute names that started with an
|
|
underscore (e.g. `_test', '_foo', `_bar`) on all levels of a document (root level
|
|
and sub-attribute levels). While this behavior was documented, it was unintuitive and
|
|
prevented storing documents inside other documents, e.g.:
|
|
|
|
{
|
|
"_key" : "foo",
|
|
"_type" : "mydoc",
|
|
"references" : [
|
|
{
|
|
"_key" : "something",
|
|
"_rev" : "...",
|
|
"value" : 1
|
|
},
|
|
{
|
|
"_key" : "something else",
|
|
"_rev" : "...",
|
|
"value" : 2
|
|
}
|
|
]
|
|
}
|
|
|
|
In the above example, previous versions of ArangoDB removed all attributes and
|
|
sub-attributes that started with underscores, meaning the embedded documents would lose
|
|
some of their attributes. 2.2.2 should preserve such attributes, and will also allow
|
|
storing user-defined attribute names on the top-level even if they start with underscores
|
|
(such as `_type` in the above example).
|
|
|
|
* fix conversion of JavaScript String, Number and Boolean objects to JSON.
|
|
|
|
Objects created in JavaScript using `new Number(...)`, `new String(...)`, or
|
|
`new Boolean(...)` were not converted to JSON correctly.
|
|
|
|
* fixed a race condition on task registration (i.e. `require("org/arangodb/tasks").register()`)
|
|
|
|
this race condition led to undefined behavior when a just-created task with no offset and
|
|
no period was instantly executed and deleted by the task scheduler, before the `register`
|
|
function returned to the caller.
|
|
|
|
* changed run-tests.sh to execute all suitable tests.
|
|
|
|
* switch to new version of gyp
|
|
|
|
* fixed upgrade button
|
|
|
|
|
|
v2.2.1 (2014-07-24)
|
|
-------------------
|
|
|
|
* fixed hanging write-ahead log recovery for certain cases that involved dropping
|
|
databases
|
|
|
|
* fixed issue with --check-version: when creating a new database the check failed
|
|
|
|
* issue #947 Foxx applicationContext missing some properties
|
|
|
|
* fixed issue with --check-version: when creating a new database the check failed
|
|
|
|
* added startup option `--wal.suppress-shape-information`
|
|
|
|
Setting this option to `true` will reduce memory and disk space usage and require
|
|
less CPU time when modifying documents or edges. It should therefore be turned on
|
|
for standalone ArangoDB servers. However, for servers that are used as replication
|
|
masters, setting this option to `true` will effectively disable the usage of the
|
|
write-ahead log for replication, so it should be set to `false` for any replication
|
|
master servers.
|
|
|
|
The default value for this option is `false`.
|
|
|
|
* added optional `ttl` attribute to specify result cursor expiration for HTTP API method
|
|
`POST /_api/cursor`
|
|
|
|
The `ttl` attribute can be used to prevent cursor results from timing out too early.
|
|
|
|
* issue #947: Foxx applicationContext missing some properties
|
|
|
|
* (reported by Christian Neubauer):
|
|
|
|
The problem was that in Google's V8, signed and unsigned chars are not always declared cleanly.
|
|
so we need to force v8 to compile with forced signed chars which is done by the Flag:
|
|
-fsigned-char
|
|
at least it is enough to follow the instructions of compiling arango on rasperry
|
|
and add "CFLAGS='-fsigned-char'" to the make command of V8 and remove the armv7=0
|
|
|
|
* Fixed a bug with the replication client. In the case of single document
|
|
transactions the collection was not write locked.
|
|
|
|
|
|
v2.2.0 (2014-07-10)
|
|
-------------------
|
|
|
|
* The replication methods `logger.start`, `logger.stop` and `logger.properties` are
|
|
no-ops in ArangoDB 2.2 as there is no separate replication logger anymore. Data changes
|
|
are logged into the write-ahead log in ArangoDB 2.2, and not separately by the
|
|
replication logger. The replication logger object is still there in ArangoDB 2.2 to
|
|
ensure backwards-compatibility, however, logging cannot be started, stopped or
|
|
configured anymore. Using any of these methods will do nothing.
|
|
|
|
This also affects the following HTTP API methods:
|
|
- `PUT /_api/replication/logger-start`
|
|
- `PUT /_api/replication/logger-stop`
|
|
- `GET /_api/replication/logger-config`
|
|
- `PUT /_api/replication/logger-config`
|
|
|
|
Using any of these methods is discouraged from now on as they will be removed in
|
|
future versions of ArangoDB.
|
|
|
|
* INCOMPATIBLE CHANGE: replication of transactions has changed. Previously, transactions
|
|
were logged on a master in one big block and shipped to a slave in one block, too.
|
|
Now transactions will be logged and replicated as separate entries, allowing transactions
|
|
to be bigger and also ensure replication progress.
|
|
|
|
This change also affects the behavior of the `stop` method of the replication applier.
|
|
If the replication applier is now stopped manually using the `stop` method and later
|
|
restarted using the `start` method, any transactions that were unfinished at the
|
|
point of stopping will be aborted on a slave, even if they later commit on the master.
|
|
|
|
In ArangoDB 2.2, stopping the replication applier manually should be avoided unless the
|
|
goal is to stop replication permanently or to do a full resync with the master anyway.
|
|
If the replication applier still must be stopped, it should be made sure that the
|
|
slave has fetched and applied all pending operations from a master, and that no
|
|
extra transactions are started on the master before the `stop` command on the slave
|
|
is executed.
|
|
|
|
Replication of transactions in ArangoDB 2.2 might also lock the involved collections on
|
|
the slave while a transaction is either committed or aborted on the master and the
|
|
change has been replicated to the slave. This change in behavior may be important for
|
|
slave servers that are used for read-scaling. In order to avoid long lasting collection
|
|
locks on the slave, transactions should be kept small.
|
|
|
|
The `_replication` system collection is not used anymore in ArangoDB 2.2 and its usage is
|
|
discouraged.
|
|
|
|
* INCOMPATIBLE CHANGE: the figures reported by the `collection.figures` method
|
|
now only reflect documents and data contained in the journals and datafiles of
|
|
collections. Documents or deletions contained only in the write-ahead log will
|
|
not influence collection figures until the write-ahead log garbage collection
|
|
kicks in. The figures for a collection might therefore underreport the total
|
|
resource usage of a collection.
|
|
|
|
Additionally, the attributes `lastTick` and `uncollectedLogfileEntries` have been
|
|
added to the result of the `figures` operation and the HTTP API method
|
|
`PUT /_api/collection/figures`
|
|
|
|
* added `insert` method as an alias for `save`. Documents can now be inserted into
|
|
a collection using either method:
|
|
|
|
db.test.save({ foo: "bar" });
|
|
db.test.insert({ foo: "bar" });
|
|
|
|
* added support for data-modification AQL queries
|
|
|
|
* added AQL keywords `INSERT`, `UPDATE`, `REPLACE` and `REMOVE` (and `WITH`) to
|
|
support data-modification AQL queries.
|
|
|
|
Unquoted usage of these keywords for attribute names in AQL queries will likely
|
|
fail in ArangoDB 2.2. If any such attribute name needs to be used in a query, it
|
|
should be enclosed in backticks to indicate the usage of a literal attribute
|
|
name.
|
|
|
|
For example, the following query will fail in ArangoDB 2.2 with a parse error:
|
|
|
|
FOR i IN foo RETURN i.remove
|
|
|
|
and needs to be rewritten like this:
|
|
|
|
FOR i IN foo RETURN i.`remove`
|
|
|
|
* disallow storing of JavaScript objects that contain JavaScript native objects
|
|
of type `Date`, `Function`, `RegExp` or `External`, e.g.
|
|
|
|
db.test.save({ foo: /bar/ });
|
|
db.test.save({ foo: new Date() });
|
|
|
|
will now print
|
|
|
|
Error: <data> cannot be converted into JSON shape: could not shape document
|
|
|
|
Previously, objects of these types were silently converted into an empty object
|
|
(i.e. `{ }`).
|
|
|
|
To store such objects in a collection, explicitly convert them into strings
|
|
like this:
|
|
|
|
db.test.save({ foo: String(/bar/) });
|
|
db.test.save({ foo: String(new Date()) });
|
|
|
|
* The replication methods `logger.start`, `logger.stop` and `logger.properties` are
|
|
no-ops in ArangoDB 2.2 as there is no separate replication logger anymore. Data changes
|
|
are logged into the write-ahead log in ArangoDB 2.2, and not separately by the
|
|
replication logger. The replication logger object is still there in ArangoDB 2.2 to
|
|
ensure backwards-compatibility, however, logging cannot be started, stopped or
|
|
configured anymore. Using any of these methods will do nothing.
|
|
|
|
This also affects the following HTTP API methods:
|
|
- `PUT /_api/replication/logger-start`
|
|
- `PUT /_api/replication/logger-stop`
|
|
- `GET /_api/replication/logger-config`
|
|
- `PUT /_api/replication/logger-config`
|
|
|
|
Using any of these methods is discouraged from now on as they will be removed in
|
|
future versions of ArangoDB.
|
|
|
|
* INCOMPATIBLE CHANGE: replication of transactions has changed. Previously, transactions
|
|
were logged on a master in one big block and shipped to a slave in one block, too.
|
|
Now transactions will be logged and replicated as separate entries, allowing transactions
|
|
to be bigger and also ensure replication progress.
|
|
|
|
This change also affects the behavior of the `stop` method of the replication applier.
|
|
If the replication applier is now stopped manually using the `stop` method and later
|
|
restarted using the `start` method, any transactions that were unfinished at the
|
|
point of stopping will be aborted on a slave, even if they later commit on the master.
|
|
|
|
In ArangoDB 2.2, stopping the replication applier manually should be avoided unless the
|
|
goal is to stop replication permanently or to do a full resync with the master anyway.
|
|
If the replication applier still must be stopped, it should be made sure that the
|
|
slave has fetched and applied all pending operations from a master, and that no
|
|
extra transactions are started on the master before the `stop` command on the slave
|
|
is executed.
|
|
|
|
Replication of transactions in ArangoDB 2.2 might also lock the involved collections on
|
|
the slave while a transaction is either committed or aborted on the master and the
|
|
change has been replicated to the slave. This change in behavior may be important for
|
|
slave servers that are used for read-scaling. In order to avoid long lasting collection
|
|
locks on the slave, transactions should be kept small.
|
|
|
|
The `_replication` system collection is not used anymore in ArangoDB 2.2 and its usage is
|
|
discouraged.
|
|
|
|
* INCOMPATIBLE CHANGE: the figures reported by the `collection.figures` method
|
|
now only reflect documents and data contained in the journals and datafiles of
|
|
collections. Documents or deletions contained only in the write-ahead log will
|
|
not influence collection figures until the write-ahead log garbage collection
|
|
kicks in. The figures for a collection might therefore underreport the total
|
|
resource usage of a collection.
|
|
|
|
Additionally, the attributes `lastTick` and `uncollectedLogfileEntries` have been
|
|
added to the result of the `figures` operation and the HTTP API method
|
|
`PUT /_api/collection/figures`
|
|
|
|
* added `insert` method as an alias for `save`. Documents can now be inserted into
|
|
a collection using either method:
|
|
|
|
db.test.save({ foo: "bar" });
|
|
db.test.insert({ foo: "bar" });
|
|
|
|
* added support for data-modification AQL queries
|
|
|
|
* added AQL keywords `INSERT`, `UPDATE`, `REPLACE` and `REMOVE` (and `WITH`) to
|
|
support data-modification AQL queries.
|
|
|
|
Unquoted usage of these keywords for attribute names in AQL queries will likely
|
|
fail in ArangoDB 2.2. If any such attribute name needs to be used in a query, it
|
|
should be enclosed in backticks to indicate the usage of a literal attribute
|
|
name.
|
|
|
|
For example, the following query will fail in ArangoDB 2.2 with a parse error:
|
|
|
|
FOR i IN foo RETURN i.remove
|
|
|
|
and needs to be rewritten like this:
|
|
|
|
FOR i IN foo RETURN i.`remove`
|
|
|
|
* disallow storing of JavaScript objects that contain JavaScript native objects
|
|
of type `Date`, `Function`, `RegExp` or `External`, e.g.
|
|
|
|
db.test.save({ foo: /bar/ });
|
|
db.test.save({ foo: new Date() });
|
|
|
|
will now print
|
|
|
|
Error: <data> cannot be converted into JSON shape: could not shape document
|
|
|
|
Previously, objects of these types were silently converted into an empty object
|
|
(i.e. `{ }`).
|
|
|
|
To store such objects in a collection, explicitly convert them into strings
|
|
like this:
|
|
|
|
db.test.save({ foo: String(/bar/) });
|
|
db.test.save({ foo: String(new Date()) });
|
|
|
|
* honor startup option `--server.disable-statistics` when deciding whether or not
|
|
to start periodic statistics collection jobs
|
|
|
|
Previously, the statistics collection jobs were started even if the server was
|
|
started with the `--server.disable-statistics` flag being set to `true`
|
|
|
|
* removed startup option `--random.no-seed`
|
|
|
|
This option had no effect in previous versions of ArangoDB and was thus removed.
|
|
|
|
* removed startup option `--database.remove-on-drop`
|
|
|
|
This option was used for debugging only.
|
|
|
|
* removed startup option `--database.force-sync-properties`
|
|
|
|
This option is now superfluous as collection properties are now stored in the
|
|
write-ahead log.
|
|
|
|
* introduced write-ahead log
|
|
|
|
All write operations in an ArangoDB server instance are automatically logged
|
|
to the server's write-ahead log. The write-ahead log is a set of append-only
|
|
logfiles, and it is used in case of a crash recovery and for replication.
|
|
Data from the write-ahead log will eventually be moved into the journals or
|
|
datafiles of collections, allowing the server to remove older write-ahead log
|
|
logfiles. Figures of collections will be updated when data are moved from the
|
|
write-ahead log into the journals or datafiles of collections.
|
|
|
|
Cross-collection transactions in ArangoDB should benefit considerably by this
|
|
change, as less writes than in previous versions are required to ensure the data
|
|
of multiple collections are atomcially and durably committed. All data-modifying
|
|
operations inside transactions (insert, update, remove) will write their
|
|
operations into the write-ahead log directly, making transactions with multiple
|
|
operations also require less physical memory than in previous versions of ArangoDB,
|
|
that required all transaction data to fit into RAM.
|
|
|
|
The `_trx` system collection is not used anymore in ArangoDB 2.2 and its usage is
|
|
discouraged.
|
|
|
|
The data in the write-ahead log can also be used in the replication context.
|
|
The `_replication` collection that was used in previous versions of ArangoDB to
|
|
store all changes on the server is not used anymore in ArangoDB 2.2. Instead,
|
|
slaves can read from a master's write-ahead log to get informed about most
|
|
recent changes. This removes the need to store data-modifying operations in
|
|
both the actual place and the `_replication` collection.
|
|
|
|
* removed startup option `--server.disable-replication-logger`
|
|
|
|
This option is superfluous in ArangoDB 2.2. There is no dedicated replication
|
|
logger in ArangoDB 2.2. There is now always the write-ahead log, and it is also
|
|
used as the server's replication log. Specifying the startup option
|
|
`--server.disable-replication-logger` will do nothing in ArangoDB 2.2, but the
|
|
option should not be used anymore as it might be removed in a future version.
|
|
|
|
* changed behavior of replication logger
|
|
|
|
There is no dedicated replication logger in ArangoDB 2.2 as there is the
|
|
write-ahead log now. The existing APIs for starting and stopping the replication
|
|
logger still exist in ArangoDB 2.2 for downwards-compatibility, but calling
|
|
the start or stop operations are no-ops in ArangoDB 2.2. When querying the
|
|
replication logger status via the API, the server will always report that the
|
|
replication logger is running. Configuring the replication logger is a no-op
|
|
in ArangoDB 2.2, too. Changing the replication logger configuration has no
|
|
effect. Instead, the write-ahead log configuration can be changed.
|
|
|
|
* removed MRuby integration for arangod
|
|
|
|
ArangoDB had an experimental MRuby integration in some of the publish builds.
|
|
This wasn't continuously developed, and so it has been removed in ArangoDB 2.2.
|
|
|
|
This change has led to the following startup options being superfluous:
|
|
|
|
- `--ruby.gc-interval`
|
|
- `--ruby.action-directory`
|
|
- `--ruby.modules-path`
|
|
- `--ruby.startup-directory`
|
|
|
|
Specifying these startup options will do nothing in ArangoDB 2.2, but the
|
|
options should be avoided from now on as they might be removed in future versions.
|
|
|
|
* reclaim index memory when last document in collection is deleted
|
|
|
|
Previously, deleting documents from a collection did not lead to index sizes being
|
|
reduced. Instead, the already allocated index memory was re-used when a collection
|
|
was refilled.
|
|
|
|
Now, index memory for primary indexes and hash indexes is reclaimed instantly when
|
|
the last document from a collection is removed.
|
|
|
|
* inlined and optimized functions in hash indexes
|
|
|
|
* added AQL TRANSLATE function
|
|
|
|
This function can be used to perform lookups from static lists, e.g.
|
|
|
|
LET countryNames = { US: "United States", UK: "United Kingdom", FR: "France" }
|
|
RETURN TRANSLATE("FR", countryNames)
|
|
|
|
* fixed datafile debugger
|
|
|
|
* fixed check-version for empty directory
|
|
|
|
* moved try/catch block to the top of routing chain
|
|
|
|
* added mountedApp function for foxx-manager
|
|
|
|
* fixed issue #883: arango 2.1 - when starting multi-machine cluster, UI web
|
|
does not change to cluster overview
|
|
|
|
* fixed dfdb: should not start any other V8 threads
|
|
|
|
* cleanup of version-check, added module org/arangodb/database-version,
|
|
added --check-version option
|
|
|
|
* fixed issue #881: [2.1.0] Bombarded (every 10 sec or so) with
|
|
"WARNING format string is corrupt" when in non-system DB Dashboard
|
|
|
|
* specialized primary index implementation to allow faster hash table
|
|
rebuilding and reduce lookups in datafiles for the actual value of `_key`.
|
|
|
|
* issue #862: added `--overwrite` option to arangoimp
|
|
|
|
* removed number of property lookups for documents during AQL queries that
|
|
access documents
|
|
|
|
* prevent buffering of long print results in arangosh's and arangod's print
|
|
command
|
|
|
|
this change will emit buffered intermediate print results and discard the
|
|
output buffer to quickly deliver print results to the user, and to prevent
|
|
constructing very large buffers for large results
|
|
|
|
* removed sorting of attribute names for use in a collection's shaper
|
|
|
|
sorting attribute names was done on document insert to keep attributes
|
|
of a collection in sorted order for faster comparisons. The sort order
|
|
of attributes was only used in one particular and unlikely case, so it
|
|
was removed. Collections with many different attribute names should
|
|
benefit from this change by faster inserts and slightly less memory usage.
|
|
|
|
* fixed a bug in arangodump which got the collection name in _from and _to
|
|
attributes of edges wrong (all were "_unknown")
|
|
|
|
* fixed a bug in arangorestore which did not recognise wrong _from and _to
|
|
attributes of edges
|
|
|
|
* improved error detection and reporting in arangorestore
|
|
|
|
|
|
v2.1.1 (2014-06-06)
|
|
-------------------
|
|
|
|
* fixed dfdb: should not start any other V8 threads
|
|
|
|
* signature for collection functions was modified
|
|
|
|
The basic change was the substitution of the input parameter of the
|
|
function by an generic options object which can contain multiple
|
|
option parameter of the function.
|
|
Following functions were modified
|
|
remove
|
|
removeBySample
|
|
replace
|
|
replaceBySample
|
|
update
|
|
updateBySample
|
|
|
|
Old signature is yet supported but it will be removed in future versions
|
|
|
|
v2.1.0 (2014-05-29)
|
|
-------------------
|
|
|
|
* implemented upgrade procedure for clusters
|
|
|
|
* fixed communication issue with agency which prevented reconnect
|
|
after an agent failure
|
|
|
|
* fixed cluster dashboard in the case that one but not all servers
|
|
in the cluster are down
|
|
|
|
* fixed a bug with coordinators creating local database objects
|
|
in the wrong order (_system needs to be done first)
|
|
|
|
* improved cluster dashboard
|
|
|
|
|
|
v2.1.0-rc2 (2014-05-25)
|
|
-----------------------
|
|
|
|
* fixed issue #864: Inconsistent behavior of AQL REVERSE(list) function
|
|
|
|
|
|
v2.1.0-rc1 (XXXX-XX-XX)
|
|
-----------------------
|
|
|
|
* added server-side periodic task management functions:
|
|
|
|
- require("org/arangodb/tasks").register(): registers a periodic task
|
|
- require("org/arangodb/tasks").unregister(): unregisters and removes a
|
|
periodic task
|
|
- require("org/arangodb/tasks").get(): retrieves a specific tasks or all
|
|
existing tasks
|
|
|
|
the previous undocumented function `internal.definePeriodic` is now
|
|
deprecated and will be removed in a future release.
|
|
|
|
* decrease the size of some seldomly used system collections on creation.
|
|
|
|
This will make these collections use less disk space and mapped memory.
|
|
|
|
* added AQL date functions
|
|
|
|
* added AQL FLATTEN() list function
|
|
|
|
* added index memory statistics to `db.<collection>.figures()` function
|
|
|
|
The `figures` function will now return a sub-document `indexes`, which lists
|
|
the number of indexes in the `count` sub-attribute, and the total memory
|
|
usage of the indexes in bytes in the `size` sub-attribute.
|
|
|
|
* added AQL CURRENT_DATABASE() function
|
|
|
|
This function returns the current database's name.
|
|
|
|
* added AQL CURRENT_USER() function
|
|
|
|
This function returns the current user from an AQL query. The current user is the
|
|
username that was specified in the `Authorization` HTTP header of the request. If
|
|
authentication is turned off or the query was executed outside a request context,
|
|
the function will return `null`.
|
|
|
|
* fixed issue #796: Searching with newline chars broken?
|
|
|
|
fixed slightly different handling of backslash escape characters in a few
|
|
AQL functions. Now handling of escape sequences should be consistent, and
|
|
searching for newline characters should work the same everywhere
|
|
|
|
* added OpenSSL version check for configure
|
|
|
|
It will report all OpenSSL versions < 1.0.1g as being too old.
|
|
`configure` will only complain about an outdated OpenSSL version but not stop.
|
|
|
|
* require C++ compiler support (requires g++ 4.8, clang++ 3.4 or Visual Studio 13)
|
|
|
|
* less string copying returning JSONified documents from ArangoDB, e.g. via
|
|
HTTP GET `/_api/document/<collection>/<document>`
|
|
|
|
* issue #798: Lower case http headers from arango
|
|
|
|
This change allows returning capitalized HTTP headers, e.g.
|
|
`Content-Length` instead of `content-length`.
|
|
The HTTP spec says that headers are case-insensitive, but
|
|
in fact several clients rely on a specific case in response
|
|
headers.
|
|
This change will capitalize HTTP headers if the `X-Arango-Version`
|
|
request header is sent by the client and contains a value of at
|
|
least `20100` (for version 2.1). The default value for the
|
|
compatibility can also be set at server start, using the
|
|
`--server.default-api-compatibility` option.
|
|
|
|
* simplified usage of `db._createStatement()`
|
|
|
|
Previously, the function could not be called with a query string parameter as
|
|
follows:
|
|
|
|
db._createStatement(queryString);
|
|
|
|
Calling it as above resulted in an error because the function expected an
|
|
object as its parameter. From now on, it's possible to call the function with
|
|
just the query string.
|
|
|
|
* make ArangoDB not send back a `WWW-Authenticate` header to a client in case the
|
|
client sends the `X-Omit-WWW-Authenticate` HTTP header.
|
|
|
|
This is done to prevent browsers from showing their built-in HTTP authentication
|
|
dialog for AJAX requests that require authentication.
|
|
ArangoDB will still return an HTTP 401 (Unauthorized) if the request doesn't
|
|
contain valid credentials, but it will omit the `WWW-Authenticate` header,
|
|
allowing clients to bypass the browser's authentication dialog.
|
|
|
|
* added REST API method HTTP GET `/_api/job/job-id` to query the status of an
|
|
async job without potentially fetching it from the list of done jobs
|
|
|
|
* fixed non-intuitive behaviour in jobs API: previously, querying the status
|
|
of an async job via the API HTTP PUT `/_api/job/job-id` removed a currently
|
|
executing async job from the list of queryable jobs on the server.
|
|
Now, when querying the result of an async job that is still executing,
|
|
the job is kept in the list of queryable jobs so its result can be fetched
|
|
by a subsequent request.
|
|
|
|
* use a new data structure for the edge index of an edge collection. This
|
|
improves the performance for the creation of the edge index and in
|
|
particular speeds up removal of edges in graphs. Note however that
|
|
this change might change the order in which edges starting at
|
|
or ending in a vertex are returned. However, this order was never
|
|
guaranteed anyway and it is not sensible to guarantee any particular
|
|
order.
|
|
|
|
* provide a size hint to edge and hash indexes when initially filling them
|
|
this will lead to less re-allocations when populating these indexes
|
|
|
|
this may speed up building indexes when opening an existing collection
|
|
|
|
* don't requeue identical context methods in V8 threads in case a method is
|
|
already registered
|
|
|
|
* removed arangod command line option `--database.remove-on-compacted`
|
|
|
|
* export the sort attribute for graph traversals to the HTTP interface
|
|
|
|
* add support for arangodump/arangorestore for clusters
|
|
|
|
|
|
v2.0.8 (XXXX-XX-XX)
|
|
-------------------
|
|
|
|
* fixed too-busy iteration over skiplists
|
|
|
|
Even when a skiplist query was restricted by a limit clause, the skiplist
|
|
index was queried without the limit. this led to slower-than-necessary
|
|
execution times.
|
|
|
|
* fixed timeout overflows on 32 bit systems
|
|
|
|
this bug has led to problems when select was called with a high timeout
|
|
value (2000+ seconds) on 32bit systems that don't have a forgiving select
|
|
implementation. when the call was made on these systems, select failed
|
|
so no data would be read or sent over the connection
|
|
|
|
this might have affected some cluster-internal operations.
|
|
|
|
* fixed ETCD issues on 32 bit systems
|
|
|
|
ETCD was non-functional on 32 bit systems at all. The first call to the
|
|
watch API crashed it. This was because atomic operations worked on data
|
|
structures that were not properly aligned on 32 bit systems.
|
|
|
|
* fixed issue #848: db.someEdgeCollection.inEdge does not return correct
|
|
value when called the 2nd time after a .save to the edge collection
|
|
|
|
|
|
v2.0.7 (2014-05-05)
|
|
-------------------
|
|
|
|
* issue #839: Foxx Manager missing "unfetch"
|
|
|
|
* fixed a race condition at startup
|
|
|
|
this fixes undefined behavior in case the logger was involved directly at
|
|
startup, before the logger initialization code was called. This should have
|
|
occurred only for code that was executed before the invocation of main(),
|
|
e.g. during ctor calls of statically defined objects.
|
|
|
|
|
|
v2.0.6 (2014-04-22)
|
|
-------------------
|
|
|
|
* fixed issue #835: arangosh doesn't show correct database name
|
|
|
|
|
|
|
|
v2.0.5 (2014-04-21)
|
|
-------------------
|
|
|
|
* Fixed a caching problem in IE JS Shell
|
|
|
|
* added cancelation for async jobs
|
|
|
|
* upgraded to new gyp for V8
|
|
|
|
* new Windows installer
|
|
|
|
|
|
v2.0.4 (2014-04-14)
|
|
-------------------
|
|
|
|
* fixed cluster authentication front-end issues for Firefox and IE, there are
|
|
still problems with Chrome
|
|
|
|
|
|
v2.0.3 (2014-04-14)
|
|
-------------------
|
|
|
|
* fixed AQL optimizer bug
|
|
|
|
* fixed front-end issues
|
|
|
|
* added password change dialog
|
|
|
|
|
|
v2.0.2 (2014-04-06)
|
|
-------------------
|
|
|
|
* during cluster startup, do not log (somewhat expected) connection errors with
|
|
log level error, but with log level info
|
|
|
|
* fixed dashboard modals
|
|
|
|
* fixed connection check for cluster planning front end: firefox does
|
|
not support async:false
|
|
|
|
* document how to persist a cluster plan in order to relaunch an existing
|
|
cluster later
|
|
|
|
|
|
v2.0.1 (2014-03-31)
|
|
-------------------
|
|
|
|
* make ArangoDB not send back a `WWW-Authenticate` header to a client in case the
|
|
client sends the `X-Omit-WWW-Authenticate` HTTP header.
|
|
|
|
This is done to prevent browsers from showing their built-in HTTP authentication
|
|
dialog for AJAX requests that require authentication.
|
|
ArangoDB will still return an HTTP 401 (Unauthorized) if the request doesn't
|
|
contain valid credentials, but it will omit the `WWW-Authenticate` header,
|
|
allowing clients to bypass the browser's authentication dialog.
|
|
|
|
* fixed isses in arango-dfdb:
|
|
|
|
the dfdb was not able to unload certain system collections, so these couldn't be
|
|
inspected with the dfdb sometimes. Additionally, it did not truncate corrupt
|
|
markers from datafiles under some circumstances
|
|
|
|
* added `changePassword` attribute for users
|
|
|
|
* fixed non-working "save" button in collection edit view of web interface
|
|
clicking the save button did nothing. one had to press enter in one of the input
|
|
fields to send modified form data
|
|
|
|
* fixed V8 compile error on MacOS X
|
|
|
|
* prevent `body length: -9223372036854775808` being logged in development mode for
|
|
some Foxx HTTP responses
|
|
|
|
* fixed several bugs in web interface dashboard
|
|
|
|
* fixed issue #783: coffee script not working in manifest file
|
|
|
|
* fixed issue #783: coffee script not working in manifest file
|
|
|
|
* fixed issue #781: Cant save current query from AQL editor ui
|
|
|
|
* bumped version in `X-Arango-Version` compatibility header sent by arangosh and other
|
|
client tools from `1.5` to `2.0`.
|
|
|
|
* fixed startup options for arango-dfdb, added details option for arango-dfdb
|
|
|
|
* fixed display of missing error messages and codes in arangosh
|
|
|
|
* when creating a collection via the web interface, the collection type was always
|
|
"document", regardless of the user's choice
|
|
|
|
|
|
v2.0.0 (2014-03-10)
|
|
-------------------
|
|
|
|
* first 2.0 release
|
|
|
|
|
|
v2.0.0-rc2 (2014-03-07)
|
|
-----------------------
|
|
|
|
* fixed cluster authorization
|
|
|
|
|
|
v2.0.0-rc1 (2014-02-28)
|
|
-----------------------
|
|
|
|
* added sharding :-)
|
|
|
|
* added collection._dbName attribute to query the name of the database from a collection
|
|
|
|
more detailed documentation on the sharding and cluster features can be found in the user
|
|
manual, section **Sharding**
|
|
|
|
* INCOMPATIBLE CHANGE: using complex values in AQL filter conditions with operators other
|
|
than equality (e.g. >=, >, <=, <) will disable usage of skiplist indexes for filter
|
|
evaluation.
|
|
|
|
For example, the following queries will be affected by change:
|
|
|
|
FOR doc IN docs FILTER doc.value < { foo: "bar" } RETURN doc
|
|
FOR doc IN docs FILTER doc.value >= [ 1, 2, 3 ] RETURN doc
|
|
|
|
The following queries will not be affected by the change:
|
|
|
|
FOR doc IN docs FILTER doc.value == 1 RETURN doc
|
|
FOR doc IN docs FILTER doc.value == "foo" RETURN doc
|
|
FOR doc IN docs FILTER doc.value == [ 1, 2, 3 ] RETURN doc
|
|
FOR doc IN docs FILTER doc.value == { foo: "bar" } RETURN doc
|
|
|
|
* INCOMPATIBLE CHANGE: removed undocumented method `collection.saveOrReplace`
|
|
|
|
this feature was never advertised nor documented nor tested.
|
|
|
|
* INCOMPATIBLE CHANGE: removed undocumented REST API method `/_api/simple/BY-EXAMPLE-HASH`
|
|
|
|
this feature was never advertised nor documented nor tested.
|
|
|
|
* added explicit startup parameter `--server.reuse-address`
|
|
|
|
This flag can be used to control whether sockets should be acquired with the SO_REUSEADDR
|
|
flag.
|
|
|
|
Regardless of this setting, sockets on Windows are always acquired using the
|
|
SO_EXCLUSIVEADDRUSE flag.
|
|
|
|
* removed undocumented REST API method GET `/_admin/database-name`
|
|
|
|
* added user validation API at POST `/_api/user/<username>`
|
|
|
|
* slightly improved users management API in `/_api/user`:
|
|
|
|
Previously, when creating a new user via HTTP POST, the username needed to be
|
|
passed in an attribute `username`. When users were returned via this API,
|
|
the usernames were returned in an attribute named `user`. This was slightly
|
|
confusing and was changed in 2.0 as follows:
|
|
|
|
- when adding a user via HTTP POST, the username can be specified in an attribute
|
|
`user`. If this attribute is not used, the API will look into the attribute `username`
|
|
as before and use that value.
|
|
- when users are returned via HTTP GET, the usernames are still returned in an
|
|
attribute `user`.
|
|
|
|
This change should be fully downwards-compatible with the previous version of the API.
|
|
|
|
* added AQL SLICE function to extract slices from lists
|
|
|
|
* made module loader more node compatible
|
|
|
|
* the startup option `--javascript.package-path` for arangosh is now deprecated and does
|
|
nothing. Using it will not cause an error, but the option is ignored.
|
|
|
|
* added coffee script support
|
|
|
|
* Several UI improvements.
|
|
|
|
* Exchanged icons in the graphviewer toolbar
|
|
|
|
* always start networking and HTTP listeners when starting the server (even in
|
|
console mode)
|
|
|
|
* 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.
|
|
|
|
* issue #751: Create database through API should return HTTP status code 201
|
|
|
|
By default, the server now returns HTTP 201 (created) when creating a new
|
|
database successfully. To keep compatibility with older ArangoDB versions, the
|
|
startup parameter `--server.default-api-compatibility` can be set to a value
|
|
of `10400` to indicate API compatibility with ArangoDB 1.4. The compatibility
|
|
can also be enforced by setting the `X-Arango-Version` HTTP header in a
|
|
client request to this API on a per-request basis.
|
|
|
|
* allow direct access from the `db` object to collections whose names start
|
|
with an underscore (e.g. db._users).
|
|
|
|
Previously, access to such collections via the `db` object was possible from
|
|
arangosh, but not from arangod (and thus Foxx and actions). The only way
|
|
to access such collections from these places was via the `db._collection(<name>)`
|
|
workaround.
|
|
|
|
* allow `\n` (as well as `\r\n`) as line terminator in batch requests sent to
|
|
`/_api/batch` HTTP API.
|
|
|
|
* use `--data-binary` instead of `--data` parameter in generated cURL examples
|
|
|
|
* issue #703: Also show path of logfile for fm.config()
|
|
|
|
* issue #675: Dropping a collection used in "graph" module breaks the graph
|
|
|
|
* added "static" Graph.drop() method for graphs API
|
|
|
|
* fixed issue #695: arangosh server.password error
|
|
|
|
* use pretty-printing in `--console` mode by default
|
|
|
|
* simplified ArangoDB startup options
|
|
|
|
Some startup options are now superfluous or their usage is simplified. The
|
|
following options have been changed:
|
|
|
|
* `--javascript.modules-path`: this option has been removed. The modules paths
|
|
are determined by arangod and arangosh automatically based on the value of
|
|
`--javascript.startup-directory`.
|
|
|
|
If the option is set on startup, it is ignored so startup will not abort with
|
|
an error `unrecognized option`.
|
|
|
|
* `--javascript.action-directory`: this option has been removed. The actions
|
|
directory is determined by arangod automatically based on the value of
|
|
`--javascript.startup-directory`.
|
|
|
|
If the option is set on startup, it is ignored so startup will not abort with
|
|
an error `unrecognized option`.
|
|
|
|
* `--javascript.package-path`: this option is still available but it is not
|
|
required anymore to set the standard package paths (e.g. `js/npm`). arangod
|
|
will automatically use this standard package path regardless of whether it
|
|
was specified via the options.
|
|
|
|
It is possible to use this option to add additional package paths to the
|
|
standard value.
|
|
|
|
Configuration files included with arangod are adjusted accordingly.
|
|
|
|
* layout of the graphs tab adapted to better fit with the other tabs
|
|
|
|
* database selection is moved to the bottom right corner of the web interface
|
|
|
|
* removed priority queue index type
|
|
|
|
this feature was never advertised nor documented nor tested.
|
|
|
|
* display internal attributes in document source view of web interface
|
|
|
|
* removed separate shape collections
|
|
|
|
When upgrading to ArangoDB 2.0, existing collections will be converted to include
|
|
shapes and attribute markers in the datafiles instead of using separate files for
|
|
shapes.
|
|
|
|
When a collection is converted, existing shapes from the SHAPES directory will
|
|
be written to a new datafile in the collection directory, and the SHAPES directory
|
|
will be removed afterwards.
|
|
|
|
This saves up to 2 MB of memory and disk space for each collection
|
|
(savings are higher, the less different shapes there are in a collection).
|
|
Additionally, one less file descriptor per opened collection will be used.
|
|
|
|
When creating a new collection, the amount of sync calls may be reduced. The same
|
|
may be true for documents with yet-unknown shapes. This may help performance
|
|
in these cases.
|
|
|
|
* added AQL functions `NTH` and `POSITION`
|
|
|
|
* added signal handler for arangosh to save last command in more cases
|
|
|
|
* added extra prompt placeholders for arangosh:
|
|
- `%e`: current endpoint
|
|
- `%u`: current user
|
|
|
|
* added arangosh option `--javascript.gc-interval` to control amount of
|
|
garbage collection performed by arangosh
|
|
|
|
* fixed issue #651: Allow addEdge() to take vertex ids in the JS library
|
|
|
|
* removed command-line option `--log.format`
|
|
|
|
In previous versions, this option did not have an effect for most log messages, so
|
|
it got removed.
|
|
|
|
* removed C++ logger implementation
|
|
|
|
Logging inside ArangoDB is now done using the LOG_XXX() macros. The LOGGER_XXX()
|
|
macros are gone.
|
|
|
|
* added collection status "loading"
|
|
|
|
|
|
v1.4.16 (XXXX-XX-XX)
|
|
--------------------
|
|
|
|
* fixed too eager datafile deletion
|
|
|
|
this issue could have caused a crash when the compaction had marked datafiles as obsolete
|
|
and they were removed while "old" temporary query results still pointed to the old datafile
|
|
positions
|
|
|
|
* fixed issue #826: Replication fails when a collection's configuration changes
|
|
|
|
|
|
v1.4.15 (2014-04-19)
|
|
--------------------
|
|
|
|
* bugfix for AQL query optimiser
|
|
|
|
the following type of query was too eagerly optimised, leading to errors in code-generation:
|
|
|
|
LET a = (FOR i IN [] RETURN i) LET b = (FOR i IN [] RETURN i) RETURN 1
|
|
|
|
the problem occurred when both lists in the subqueries were empty. In this case invalid code
|
|
was generated and the query couldn't be executed.
|
|
|
|
|
|
v1.4.14 (2014-04-05)
|
|
--------------------
|
|
|
|
* fixed race conditions during shape / attribute insertion
|
|
|
|
A race condition could have led to spurios `cannot find attribute #xx` or
|
|
`cannot find shape #xx` (where xx is a number) warning messages being logged
|
|
by the server. This happened when a new attribute was inserted and at the same
|
|
time was queried by another thread.
|
|
|
|
Also fixed a race condition that may have occurred when a thread tried to
|
|
access the shapes / attributes hash tables while they were resized. In this
|
|
cases, the shape / attribute may have been hashed to a wrong slot.
|
|
|
|
* fixed a memory barrier / cpu synchronisation problem with libev, affecting
|
|
Windows with Visual Studio 2013 (probably earlier versions are affected, too)
|
|
|
|
The issue is described in detail here:
|
|
http://lists.schmorp.de/pipermail/libev/2014q1/002318.html
|
|
|
|
|
|
v1.4.13 (2014-03-14)
|
|
--------------------
|
|
|
|
* added diagnostic output for Foxx application upload
|
|
|
|
* allow dump & restore from ArangoDB 1.4 with an ArangoDB 2.0 server
|
|
|
|
* allow startup options `temp-path` and `default-language` to be specified from the arangod
|
|
configuration file and not only from the command line
|
|
|
|
* fixed too eager compaction
|
|
|
|
The compaction will now wait for several seconds before trying to re-compact the same
|
|
collection. Additionally, some other limits have been introduced for the compaction.
|
|
|
|
|
|
v1.4.12 (2014-03-05)
|
|
--------------------
|
|
|
|
* fixed display bug in web interface which caused the following problems:
|
|
- documents were displayed in web interface as being empty
|
|
- document attributes view displayed many attributes with content "undefined"
|
|
- document source view displayed many attributes with name "TYPEOF" and value "undefined"
|
|
- an alert popping up in the browser with message "Datatables warning..."
|
|
|
|
* re-introduced old-style read-write locks to supports Windows versions older than
|
|
Windows 2008R2 and Windows 7. This should re-enable support for Windows Vista and
|
|
Windows 2008.
|
|
|
|
|
|
v1.4.11 (2014-02-27)
|
|
--------------------
|
|
|
|
* added SHORTEST_PATH AQL function
|
|
|
|
this calculates the shortest paths between two vertices, using the Dijkstra
|
|
algorithm, employing a min-heap
|
|
|
|
By default, ArangoDB does not know the distance between any two vertices and
|
|
will use a default distance of 1. A custom distance function can be registered
|
|
as an AQL user function to make the distance calculation use any document
|
|
attributes or custom logic:
|
|
|
|
RETURN SHORTEST_PATH(cities, motorways, "cities/CGN", "cities/MUC", "outbound", {
|
|
paths: true,
|
|
distance: "myfunctions::citydistance"
|
|
})
|
|
|
|
// using the following custom distance function
|
|
var aqlfunctions = require("org/arangodb/aql/functions");
|
|
aqlfunctions.register("myfunctions::distance", function (config, vertex1, vertex2, edge) {
|
|
return Math.sqrt(Math.pow(vertex1.x - vertex2.x) + Math.pow(vertex1.y - vertex2.y));
|
|
}, false);
|
|
|
|
* fixed bug in Graph.pathTo function
|
|
|
|
* fixed small memleak in AQL optimiser
|
|
|
|
* fixed access to potentially uninitialised variable when collection had a cap constraint
|
|
|
|
|
|
v1.4.10 (2014-02-21)
|
|
--------------------
|
|
|
|
* fixed graph constructor to allow graph with some parameter to be used
|
|
|
|
* added node.js "events" and "stream"
|
|
|
|
* updated npm packages
|
|
|
|
* added loading of .json file
|
|
|
|
* Fixed http return code in graph api with waitForSync parameter.
|
|
|
|
* Fixed documentation in graph, simple and index api.
|
|
|
|
* removed 2 tests due to change in ruby library.
|
|
|
|
* issue #756: set access-control-expose-headers on CORS response
|
|
|
|
the following headers are now whitelisted by ArangoDB in CORS responses:
|
|
- etag
|
|
- content-encoding
|
|
- content-length
|
|
- location
|
|
- server
|
|
- x-arango-errors
|
|
- x-arango-async-id
|
|
|
|
|
|
v1.4.9 (2014-02-07)
|
|
-------------------
|
|
|
|
* return a document's current etag in response header for HTTP HEAD requests on
|
|
documents that return an HTTP 412 (precondition failed) error. This allows
|
|
retrieving the document's current revision easily.
|
|
|
|
* added AQL function `SKIPLIST` to directly access skiplist indexes from AQL
|
|
|
|
This is a shortcut method to use a skiplist index for retrieving specific documents in
|
|
indexed order. The function capability is rather limited, but it may be used
|
|
for several cases to speed up queries. The documents are returned in index order if
|
|
only one condition is used.
|
|
|
|
/* return all documents with mycollection.created > 12345678 */
|
|
FOR doc IN SKIPLIST(mycollection, { created: [[ '>', 12345678 ]] })
|
|
RETURN doc
|
|
|
|
/* return first document with mycollection.created > 12345678 */
|
|
FOR doc IN SKIPLIST(mycollection, { created: [[ '>', 12345678 ]] }, 0, 1)
|
|
RETURN doc
|
|
|
|
/* return all documents with mycollection.created between 12345678 and 123456790 */
|
|
FOR doc IN SKIPLIST(mycollection, { created: [[ '>', 12345678 ], [ '<=', 123456790 ]] })
|
|
RETURN doc
|
|
|
|
/* return all documents with mycollection.a equal 1 and .b equal 2 */
|
|
FOR doc IN SKIPLIST(mycollection, { a: [[ '==', 1 ]], b: [[ '==', 2 ]] })
|
|
RETURN doc
|
|
|
|
The function requires a skiplist index with the exact same attributes to
|
|
be present on the specified colelction. All attributes present in the skiplist
|
|
index must be specified in the conditions specified for the `SKIPLIST` function.
|
|
Attribute declaration order is important, too: attributes must be specified in the
|
|
same order in the condition as they have been declared in the skiplist index.
|
|
|
|
* added command-line option `--server.disable-authentication-unix-sockets`
|
|
|
|
with this option, authentication can be disabled for all requests coming
|
|
in via UNIX domain sockets, enabling clients located on the same host as
|
|
the ArangoDB server to connect without authentication.
|
|
Other connections (e.g. TCP/IP) are not affected by this option.
|
|
|
|
The default value for this option is `false`.
|
|
Note: this option is only supported on platforms that support Unix domain
|
|
sockets.
|
|
|
|
* call global arangod instance destructor on shutdown
|
|
|
|
* 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
|
|
|
|
|
|
v1.4.7 (2014-01-23)
|
|
-------------------
|
|
|
|
* issue #744: Add usage example arangoimp from Command line
|
|
|
|
* issue #738: added __dirname, __filename pseudo-globals. Fixes #733. (@by pluma)
|
|
|
|
* mount all Foxx applications in system apps directory on startup
|
|
|
|
|
|
v1.4.6 (2014-01-20)
|
|
-------------------
|
|
|
|
* issue #736: AQL function to parse collection and key from document handle
|
|
|
|
* added fm.rescan() method for Foxx-Manager
|
|
|
|
* fixed issue #734: foxx cookie and route problem
|
|
|
|
* added method `fm.configJson` for arangosh
|
|
|
|
* include `startupPath` in result of API `/_api/foxx/config`
|
|
|
|
|
|
v1.4.5 (2014-01-15)
|
|
-------------------
|
|
|
|
* fixed issue #726: Alternate Windows Install Method
|
|
|
|
* fixed issue #716: dpkg -P doesn't remove everything
|
|
|
|
* fixed bugs in description of HTTP API `_api/index`
|
|
|
|
* fixed issue #732: Rest API GET revision number
|
|
|
|
* added missing documentation for several methods in HTTP API `/_api/edge/...`
|
|
|
|
* fixed typos in description of HTTP API `_api/document`
|
|
|
|
* defer evaluation of AQL subqueries and logical operators (lazy evaluation)
|
|
|
|
* Updated font in WebFrontend, it now contains a version that renders properly on windows
|
|
|
|
* generally allow function return values as call parameters to AQL functions
|
|
|
|
* fixed potential deadlock in global context method execution
|
|
|
|
* added override file "arangod.conf.local" (and co)
|
|
|
|
|
|
v1.4.4 (2013-12-24)
|
|
-------------------
|
|
|
|
* uid and gid are now set in the scripts, there is no longer a separate config file for
|
|
arangod when started from a script
|
|
|
|
* foxx-manager is now an alias for arangosh
|
|
|
|
* arango-dfdb is now an alias for arangod, moved from bin to sbin
|
|
|
|
* changed from readline to linenoise for Windows
|
|
|
|
* added --install-service and --uninstall-service for Windows
|
|
|
|
* removed --daemon and --supervisor for Windows
|
|
|
|
* arangosh and arangod now uses the config-file which maps the binary name, i. e. if you
|
|
rename arangosh to foxx-manager it will use the config file foxx-manager.conf
|
|
|
|
* fixed lock file for Windows
|
|
|
|
* fixed issue #711, #687: foxx-manager throws internal errors
|
|
|
|
* added `--server.ssl-protocol` option for client tools
|
|
this allows connecting from arangosh, arangoimp, arangoimp etc. to an ArangoDB
|
|
server that uses a non-default value for `--server.ssl-protocol`. The default
|
|
value for the SSL protocol is 4 (TLSv1). If the server is configured to use a
|
|
different protocol, it was not possible to connect to it with the client tools.
|
|
|
|
* added more detailed request statistics
|
|
|
|
This adds the number of async-executed HTTP requests plus the number of HTTP
|
|
requests per individual HTTP method type.
|
|
|
|
* added `--force` option for arangorestore
|
|
this option allows continuing a restore operation even if the server reports errors
|
|
in the middle of the restore operation
|
|
|
|
* better error reporting for arangorestore
|
|
in case the server returned an HTTP error, arangorestore previously reported this
|
|
error as `internal error` without any details only. Now server-side errors are
|
|
reported by arangorestore with the server's error message
|
|
|
|
* include more system collections in dumps produced by arangodump
|
|
previously some system collections were intentionally excluded from dumps, even if the
|
|
dump was run with `--include-system-collections`. for example, the collections `_aal`,
|
|
`_modules`, `_routing`, and `_users` were excluded. This makes sense in a replication
|
|
context but not always in a dump context.
|
|
When specifying `--include-system-collections`, arangodump will now include the above-
|
|
mentioned collections in the dump, too. Some other system collections are still excluded
|
|
even when the dump is run with `--include-system-collections`, for example `_replication`
|
|
and `_trx`.
|
|
|
|
* fixed issue #701: ArangoStatement undefined in arangosh
|
|
|
|
* fixed typos in configuration files
|
|
|
|
|
|
v1.4.3 (2013-11-25)
|
|
-------------------
|
|
|
|
* fixed a segfault in the AQL optimiser, occurring when a constant non-list value was
|
|
used on the right-hand side of an IN operator that had a collection attribute on the
|
|
left-hand side
|
|
|
|
* issue #662:
|
|
|
|
Fixed access violation errors (crashes) in the Windows version, occurring under some
|
|
circumstances when accessing databases with multiple clients in parallel
|
|
|
|
* fixed issue #681: Problem with ArchLinux PKGBUILD configuration
|
|
|
|
|
|
v1.4.2 (2013-11-20)
|
|
-------------------
|
|
|
|
* fixed issue #669: Tiny documentation update
|
|
|
|
* ported Windows version to use native Windows API SRWLocks (slim read-write locks)
|
|
and condition variables instead of homemade versions
|
|
|
|
MSDN states the following about the compatibility of SRWLocks and Condition Variables:
|
|
|
|
Minimum supported client:
|
|
Windows Server 2008 [desktop apps | Windows Store apps]
|
|
|
|
Minimum supported server:
|
|
Windows Vista [desktop apps | Windows Store apps]
|
|
|
|
* fixed issue #662: ArangoDB on Windows hanging
|
|
|
|
This fixes a deadlock issue that occurred on Windows when documents were written to
|
|
a collection at the same time when some other thread tried to drop the collection.
|
|
|
|
* fixed file-based logging in Windows
|
|
|
|
the logger complained on startup if the specified log file already existed
|
|
|
|
* fixed startup of server in daemon mode (`--daemon` startup option)
|
|
|
|
* fixed a segfault in the AQL optimiser
|
|
|
|
* issue #671: Method graph.measurement does not exist
|
|
|
|
* changed Windows condition variable implementation to use Windows native
|
|
condition variables
|
|
|
|
This is an attempt to fix spurious Windows hangs as described in issue #662.
|
|
|
|
* added documentation for JavaScript traversals
|
|
|
|
* added --code-page command-line option for Windows version of arangosh
|
|
|
|
* fixed a problem when creating edges via the web interface.
|
|
|
|
The problem only occurred if a collection was created with type "document
|
|
collection" via the web interface, and afterwards was dropped and re-created
|
|
with type "edge collection". If the web interface page was not reloaded,
|
|
the old collection type (document) was cached, making the subsequent creation
|
|
of edges into the (seeming-to-be-document) collection fail.
|
|
|
|
The fix is to not cache the collection type in the web interface. Users of
|
|
an older version of the web interface can reload the collections page if they
|
|
are affected.
|
|
|
|
* fixed a caching problem in arangosh: if a collection was created using the web
|
|
interface, and then removed via arangosh, arangosh did not actually drop the
|
|
collection due to caching.
|
|
|
|
Because the `drop` operation was not carried out, this caused misleading error
|
|
messages when trying to re-create the collection (e.g. `cannot create collection:
|
|
duplicate name`).
|
|
|
|
* fixed ALT-introduced characters for arangosh console input on Windows
|
|
|
|
The Windows readline port was not able to handle characters that are built
|
|
using CTRL or ALT keys. Regular characters entered using the CTRL or ALT keys
|
|
were silently swallowed and not passed to the terminal input handler.
|
|
|
|
This did not seem to cause problems for the US keyboard layout, but was a
|
|
severe issue for keyboard layouts that require the ALT (or ALT-GR) key to
|
|
construct characters. For example, entering the character `{` with a German
|
|
keyboard layout requires pressing ALT-GR + 9.
|
|
|
|
* fixed issue #665: Hash/skiplist combo madness bit my ass
|
|
|
|
this fixes a problem with missing/non-deterministic rollbacks of inserts in
|
|
case of a unique constraint violation into a collection with multiple secondary
|
|
indexes (with at least one of them unique)
|
|
|
|
* fixed issue #664: ArangoDB installer on windows requires drive c:
|
|
|
|
* partly fixed issue #662: ArangoDB on Windows hanging
|
|
|
|
This fixes dropping databases on Windows. In previous 1.4 versions on Windows,
|
|
one shape collection file was not unloaded and removed when dropping a database,
|
|
leaving one directory and one shape collection file in the otherwise-dropped
|
|
database directory.
|
|
|
|
* fixed issue #660: updated documentation on indexes
|
|
|
|
|
|
v1.4.1 (2013-11-08)
|
|
-------------------
|
|
|
|
* performance improvements for skip-list deletes
|
|
|
|
|
|
v1.4.1-rc1 (2013-11-07)
|
|
-----------------------
|
|
|
|
* fixed issue #635: Web-Interface should have a "Databases" Menu for Management
|
|
|
|
* fixed issue #624: Web-Interface is missing a Database selector
|
|
|
|
* fixed segfault in bitarray query
|
|
|
|
* fixed issue #656: Cannot create unique index through web interface
|
|
|
|
* fixed issue #654: bitarray index makes server down
|
|
|
|
* fixed issue #653: Slow query
|
|
|
|
* fixed issue #650: Randonmess of any() should be improved
|
|
|
|
* made AQL `DOCUMENT()` function polymorphic and work with just one parameter.
|
|
|
|
This allows using the `DOCUMENT` function like this:
|
|
|
|
DOCUMENT('users/john')
|
|
DOCUMENT([ 'users/john', 'users/amy' ])
|
|
|
|
in addition to the existing use cases:
|
|
|
|
DOCUMENT(users, 'users/john')
|
|
DOCUMENT(users, 'john')
|
|
DOCUMENT(users, [ 'users/john' ])
|
|
DOCUMENT(users, [ 'users/john', 'users/amy' ])
|
|
DOCUMENT(users, [ 'john', 'amy' ])
|
|
|
|
* simplified usage of ArangoDB batch API
|
|
|
|
It is not necessary anymore to send the batch boundary in the HTTP `Content-Type`
|
|
header. Previously, the batch API expected the client to send a Content-Type header
|
|
of`multipart/form-data; boundary=<some boundary value>`. This is still supported in
|
|
ArangoDB 2.0, but clients can now also omit this header. If the header is not
|
|
present in a client request, ArangoDB will ignore the request content type and
|
|
read the MIME boundary from the beginning of the request body.
|
|
|
|
This also allows using the batch API with the Swagger "Try it out" feature (which is
|
|
not too good at sending a different or even dynamic content-type request header).
|
|
|
|
* added API method GET `/_api/database/user`
|
|
|
|
This returns the list of databases a specific user can see without changing the
|
|
username/passwd.
|
|
|
|
* issue #424: Documentation about IDs needs to be upgraded
|
|
|
|
|
|
v1.4.0 (2013-10-29)
|
|
-------------------
|
|
|
|
* fixed issue #648: /batch API is missing from Web Interface API Docummentation (Swagger)
|
|
|
|
* fixed issue #647: Icon tooltips missing
|
|
|
|
* fixed issue #646: index creation in web interface
|
|
|
|
* fixed issue #645: Allow jumping from edge to linked vertices
|
|
|
|
* merged PR for issue #643: Some minor corrections and a link to "Downloads"
|
|
|
|
* fixed issue #642: Completion of error handling
|
|
|
|
* fixed issue #639: compiling v1.4 on maverick produces warnings on -Wstrict-null-sentinel
|
|
|
|
* fixed issue #634: Web interface bug: Escape does not always propagate
|
|
|
|
* fixed issue #620: added startup option `--server.default-api-compatibility`
|
|
|
|
This adds the following changes to the ArangoDB server and clients:
|
|
- the server provides a new startup option `--server.default-api-compatibility`.
|
|
This option can be used to determine the compatibility of (some) server API
|
|
return values. The value for this parameter is a server version number,
|
|
calculated as follows: `10000 * major + 100 * minor` (e.g. `10400` for ArangoDB
|
|
1.3). The default value is `10400` (1.4), the minimum allowed value is `10300`
|
|
(1.3).
|
|
|
|
When setting this option to a value lower than the current server version,
|
|
the server might respond with old-style results to "old" clients, increasing
|
|
compatibility with "old" (non-up-to-date) clients.
|
|
|
|
- the server will on each incoming request check for an HTTP header
|
|
`x-arango-version`. Clients can optionally set this header to the API
|
|
version number they support. For example, if a client sends the HTTP header
|
|
`x-arango-version: 10300`, the server will pick this up and might send ArangoDB
|
|
1.3-style responses in some situations.
|
|
|
|
Setting either the startup parameter or using the HTTP header (or both) allows
|
|
running "old" clients with newer versions of ArangoDB, without having to adjust
|
|
the clients too much.
|
|
|
|
- the `location` headers returned by the server for the APIs `/_api/document/...`
|
|
and `/_api/collection/...` will have different values depending on the used API
|
|
version. If the API compatibility is `10300`, the `location` headers returned
|
|
will look like this:
|
|
|
|
location: /_api/document/....
|
|
|
|
whereas when an API compatibility of `10400` or higher is used, the `location`
|
|
headers will look like this:
|
|
|
|
location: /_db/<database name>/_api/document/...
|
|
|
|
Please note that even in the presence of this, old API versions still may not
|
|
be supported forever by the server.
|
|
|
|
* fixed issue #643: Some minor corrections and a link to "Downloads" by @frankmayer
|
|
|
|
* started issue #642: Completion of error handling
|
|
|
|
* fixed issue #639: compiling v1.4 on maverick produces warnings on
|
|
-Wstrict-null-sentinel
|
|
|
|
* fixed issue #621: Standard Config needs to be fixed
|
|
|
|
* added function to manage indexes (web interface)
|
|
|
|
* improved server shutdown time by signalling shutdown to applicationserver,
|
|
logging, cleanup and compactor threads
|
|
|
|
* added foxx-manager `replace` command
|
|
|
|
* added foxx-manager `installed` command (a more intuitive alias for `list`)
|
|
|
|
* fixed issue #617: Swagger API is missing '/_api/version'
|
|
|
|
* fixed issue #615: Swagger API: Some commands have no parameter entry forms
|
|
|
|
* fixed issue #614: API : Typo in : Request URL /_api/database/current
|
|
|
|
* fixed issue #609: Graph viz tool - different background color
|
|
|
|
* fixed issue #608: arangosh config files - eventually missing in the manual
|
|
|
|
* fixed issue #607: Admin interface: no core documentation
|
|
|
|
* fixed issue #603: Aardvark Foxx App Manager
|
|
|
|
* fixed a bug in type-mapping between AQL user functions and the AQL layer
|
|
|
|
The bug caused errors like the following when working with collection documents
|
|
in an AQL user function:
|
|
|
|
TypeError: Cannot assign to read only property '_id' of #<ShapedJson>
|
|
|
|
* create less system collections when creating a new database
|
|
|
|
This is achieved by deferring collection creation until the collections are actually
|
|
needed by ArangoDB. The following collections are affected by the change:
|
|
- `_fishbowl`
|
|
- `_structures`
|
|
|
|
|
|
v1.4.0-beta2 (2013-10-14)
|
|
-------------------------
|
|
|
|
* fixed compaction on Windows
|
|
|
|
The compaction on Windows did not ftruncate the cleaned datafiles to a smaller size.
|
|
This has been fixed so not only the content of the files is cleaned but also files
|
|
are re-created with potentially smaller sizes.
|
|
|
|
* only the following system collections will be excluded from replication from now on:
|
|
- `_replication`
|
|
- `_trx`
|
|
- `_users`
|
|
- `_aal`
|
|
- `_fishbowl`
|
|
- `_modules`
|
|
- `_routing`
|
|
|
|
Especially the following system collections will now be included in replication:
|
|
- `_aqlfunctions`
|
|
- `_graphs`
|
|
|
|
In previous versions of ArangoDB, all system collections were excluded from the
|
|
replication.
|
|
|
|
The change also caused a change in the replication logger and applier:
|
|
in previous versions of ArangoDB, only a collection's id was logged for an operation.
|
|
This has not caused problems for non-system collections but for system collections
|
|
there ids might differ. In addition to a collection id ArangoDB will now also log the
|
|
name of a collection for each replication event.
|
|
|
|
The replication applier will now look for the collection name attribute in logged
|
|
events preferrably.
|
|
|
|
* added database selection to arango-dfdb
|
|
|
|
* provide foxx-manager, arangodump, and arangorestore in Windows build
|
|
|
|
* ArangoDB 1.4 will refuse to start if option `--javascript.app-path` is not set.
|
|
|
|
* added startup option `--server.allow-method-override`
|
|
|
|
This option can be set to allow overriding the HTTP request method in a request using
|
|
one of the following custom headers:
|
|
|
|
- x-http-method-override
|
|
- x-http-method
|
|
- x-method-override
|
|
|
|
This allows bypassing proxies and tools that would otherwise just let certain types of
|
|
requests pass. Enabling this option may impose a security risk, so it should only be
|
|
used in very controlled environments.
|
|
|
|
The default value for this option is `false` (no method overriding allowed).
|
|
|
|
* added "details" URL parameter for bulk import API
|
|
|
|
Setting the `details` URL parameter to `true` in a call to POST `/_api/import` will make
|
|
the import return details about non-imported documents in the `details` attribute. If
|
|
`details` is `false` or omitted, no `details` attribute will be present in the response.
|
|
This is the same behavior that previous ArangoDB versions exposed.
|
|
|
|
* added "complete" option for bulk import API
|
|
|
|
Setting the `complete` URL parameter to `true` in a call to POST `/_api/import` will make
|
|
the import completely fail if at least one of documents cannot be imported successfully.
|
|
|
|
It defaults to `false`, which will make ArangoDB continue importing the other documents
|
|
from the import even if some documents cannot be imported. This is the same behaviour that
|
|
previous ArangoDB versions exposed.
|
|
|
|
* added missing swagger documentation for `/_api/log`
|
|
|
|
* calling `/_api/logs` (or `/_admin/logs`) is only permitted from the `_system` database now.
|
|
|
|
Calling this API method for/from other database will result in an HTTP 400.
|
|
|
|
' ported fix from https://github.com/novus/nvd3/commit/0894152def263b8dee60192f75f66700cea532cc
|
|
|
|
This prevents JavaScript errors from occurring in Chrome when in the admin interface,
|
|
section "Dashboard".
|
|
|
|
* show current database name in web interface (bottom right corner)
|
|
|
|
* added missing documentation for /_api/import in swagger API docs
|
|
|
|
* allow specification of database name for replication sync command replication applier
|
|
|
|
This allows syncing from a master database with a different name than the slave database.
|
|
|
|
* issue #601: Show DB in prompt
|
|
|
|
arangosh now displays the database name as part of the prompt by default.
|
|
|
|
Can change the prompt by using the `--prompt` option, e.g.
|
|
|
|
> arangosh --prompt "my db is named \"%d\"> "
|
|
|
|
|
|
v1.4.0-beta1 (2013-10-01)
|
|
-------------------------
|
|
|
|
* make the Foxx manager use per-database app directories
|
|
|
|
Each database now has its own subdirectory for Foxx applications. Each database
|
|
can thus use different Foxx applications if required. A Foxx app for a specific
|
|
database resides in `<app-path>/databases/<database-name>/<app-name>`.
|
|
|
|
System apps are shared between all databases. They reside in `<app-path>/system/<app-name>`.
|
|
|
|
* only trigger an engine reset in development mode for URLs starting with `/dev/`
|
|
|
|
This prevents ArangoDB from reloading all Foxx applications when it is not
|
|
actually necessary.
|
|
|
|
* changed error code from 10 (bad parameter) to 1232 (invalid key generator) for
|
|
errors that are due to an invalid key generator specification when creating a new
|
|
collection
|
|
|
|
* automatic detection of content-type / mime-type for Foxx assets based on filenames,
|
|
added possibility to override auto detection
|
|
|
|
* added endpoint management API at `/_api/endpoint`
|
|
|
|
* changed HTTP return code of PUT `/_api/cursor` from 400 to 404 in case a
|
|
non-existing cursor is referred to
|
|
|
|
* issue #360: added support for asynchronous requests
|
|
|
|
Incoming HTTP requests with the headers `x-arango-async: true` or
|
|
`x-arango-async: store` will be answered by the server instantly with a generic
|
|
HTTP 202 (Accepted) response.
|
|
|
|
The actual requests will be queued and processed by the server asynchronously,
|
|
allowing the client to continue sending other requests without waiting for the
|
|
server to process the actually requested operation.
|
|
|
|
The exact point in time when a queued request is executed is undefined. If an
|
|
error occurs during execution of an asynchronous request, the client will not
|
|
be notified by the server.
|
|
|
|
The maximum size of the asynchronous task queue can be controlled using the new
|
|
option `--scheduler.maximal-queue-size`. If the queue contains this many number of
|
|
tasks and a new asynchronous request comes in, the server will reject it with an
|
|
HTTP 500 (internal server error) response.
|
|
|
|
Results of incoming requests marked with header `x-arango-async: true` will be
|
|
discarded by the server immediately. Clients have no way of accessing the result
|
|
of such asynchronously executed request. This is just _fire and forget_.
|
|
|
|
To later retrieve the result of an asynchronously executed request, clients can
|
|
mark a request with the header `x-arango-async: keep`. This makes the server
|
|
store the result of the request in memory until explicitly fetched by a client
|
|
via the `/_api/job` API. The `/_api/job` API also provides methods for basic
|
|
inspection of which pending or already finished requests there are on the server,
|
|
plus ways for garbage collecting unneeded results.
|
|
|
|
* Added new option `--scheduler.maximal-queue-size`.
|
|
|
|
* issue #590: Manifest Lint
|
|
|
|
* added data dump and restore tools, arangodump and arangorestore.
|
|
|
|
arangodump can be used to create a logical dump of an ArangoDB database, or
|
|
just dedicated collections. It can be used to dump both a collection's structure
|
|
(properties and indexes) and data (documents).
|
|
|
|
arangorestore can be used to restore data from a dump created with arangodump.
|
|
arangorestore currently does not re-create any indexes, and doesn't yet handle
|
|
referenced documents in edges propertly when doing just partial restores.
|
|
This will be fixed until 1.4 stable.
|
|
|
|
* introduced `--server.database` option for arangosh, arangoimp, and arangob.
|
|
|
|
The option allows these client tools to use a certain database for their actions.
|
|
In arangosh, the current database can be switched at any time using the command
|
|
|
|
db._useDatabase(<name>);
|
|
|
|
When no database is specified, all client tools will assume they should use the
|
|
default database `_system`. This is done for downwards-compatibility reasons.
|
|
|
|
* added basic multi database support (alpha)
|
|
|
|
New databases can be created using the REST API POST `/_api/database` and the
|
|
shell command `db._createDatabase(<name>)`.
|
|
|
|
The default database in ArangoDB is called `_system`. This database is always
|
|
present and cannot be deleted by the user. When an older version of ArangoDB is
|
|
upgraded to 1.4, the previously only database will automatically become the
|
|
`_system` database.
|
|
|
|
New databases can be created with the above commands, and can be deleted with the
|
|
REST API DELETE `/_api/database/<name>` or the shell command `db._dropDatabase(<name>);`.
|
|
|
|
Deleting databases is still unstable in ArangoDB 1.4 alpha and might crash the
|
|
server. This will be fixed until 1.4 stable.
|
|
|
|
To access a specific database via the HTTP REST API, the `/_db/<name>/` prefix
|
|
can be used in all URLs. ArangoDB will check if an incoming request starts with
|
|
this prefix, and will automatically pick the database name from it. If the prefix
|
|
is not there, ArangoDB will assume the request is made for the default database
|
|
(`_system`). This is done for downwards-compatibility reasons.
|
|
|
|
That means, the following URL pathnames are logically identical:
|
|
|
|
/_api/document/mycollection/1234
|
|
/_db/_system/document/mycollection/1234
|
|
|
|
To access a different database (e.g. `test`), the URL pathname would look like this:
|
|
|
|
/_db/test/document/mycollection/1234
|
|
|
|
New databases can also be created and existing databases can only be dropped from
|
|
within the default database (`_system`). It is not possible to drop the `_system`
|
|
database itself.
|
|
|
|
Cross-database operations are unintended and unsupported. The intention of the
|
|
multi-database feature is to have the possibility to have a few databases managed
|
|
by ArangoDB in parallel, but to only access one database at a time from a connection
|
|
or a request.
|
|
|
|
When accessing the web interface via the URL pathname `/_admin/html/` or `/_admin/aardvark`,
|
|
the web interface for the default database (`_system`) will be displayed.
|
|
To access the web interface for a different database, the database name can be
|
|
put into the URLs as a prefix, e.g. `/_db/test/_admin/html` or
|
|
`/_db/test/_admin/aardvark`.
|
|
|
|
All internal request handlers and also all user-defined request handlers and actions
|
|
(including Foxx) will only get to see the unprefixed URL pathnames (i.e. excluding
|
|
any database name prefix). This is to ensure downwards-compatibility.
|
|
|
|
To access the name of the requested database from any action (including Foxx), use
|
|
use `req.database`.
|
|
|
|
For example, when calling the URL `/myapp/myaction`, the content of `req.database`
|
|
will be `_system` (the default database because no database got specified) and the
|
|
content of `req.url` will be `/myapp/myaction`.
|
|
|
|
When calling the URL `/_db/test/myapp/myaction`, the content of `req.database` will be
|
|
`test`, and the content of `req.url` will still be `/myapp/myaction`.
|
|
|
|
* Foxx now excludes files starting with . (dot) when bundling assets
|
|
|
|
This mitigates problems with editor swap files etc.
|
|
|
|
* made the web interface a Foxx application
|
|
|
|
This change caused the files for the web interface to be moved from `html/admin` to
|
|
`js/apps/aardvark` in the file system.
|
|
|
|
The base URL for the admin interface changed from `_admin/html/index.html` to
|
|
`_admin/aardvark/index.html`.
|
|
|
|
The "old" redirection to `_admin/html/index.html` will now produce a 404 error.
|
|
|
|
When starting ArangoDB with the `--upgrade` option, this will automatically be remedied
|
|
by putting in a redirection from `/` to `/_admin/aardvark/index.html`, and from
|
|
`/_admin/html/index.html` to `/_admin/aardvark/index.html`.
|
|
|
|
This also obsoletes the following configuration (command-line) options:
|
|
- `--server.admin-directory`
|
|
- `--server.disable-admin-interface`
|
|
|
|
when using these now obsolete options when the server is started, no error is produced
|
|
for downwards-compatibility.
|
|
|
|
* changed User-Agent value sent by arangoimp, arangosh, and arangod from "VOC-Agent" to
|
|
"ArangoDB"
|
|
|
|
* changed journal file creation behavior as follows:
|
|
|
|
Previously, a journal file for a collection was always created when a collection was
|
|
created. When a journal filled up and became full, the current journal was made a
|
|
datafile, and a new (empty) journal was created automatically. There weren't many
|
|
intended situations when a collection did not have at least one journal.
|
|
|
|
This is changed now as follows:
|
|
- when a collection is created, no journal file will be created automatically
|
|
- when there is a write into a collection without a journal, the journal will be
|
|
created lazily
|
|
- when there is a write into a collection with a full journal, a new journal will
|
|
be created automatically
|
|
|
|
From the end user perspective, nothing should have changed, except that there is now
|
|
less disk usage for empty collections. Disk usage of infrequently updated collections
|
|
might also be reduced significantly by running the `rotate()` method of a collection,
|
|
and not writing into a collection subsequently.
|
|
|
|
* added method `collection.rotate()`
|
|
|
|
This allows premature rotation of a collection's current journal file into a (read-only)
|
|
datafile. The purpose of using `rotate()` is to prematurely allow compaction (which is
|
|
performed on datafiles only) on data, even if the journal was not filled up completely.
|
|
|
|
Using `rotate()` may make sense in the following scenario:
|
|
|
|
c = db._create("test");
|
|
for (i = 0; i < 1000; ++i) {
|
|
c.save(...); // insert lots of data here
|
|
}
|
|
|
|
...
|
|
c.truncate(); // collection is now empty
|
|
// only data in datafiles will be compacted by following compaction runs
|
|
// all data in the current journal would not be compacted
|
|
|
|
// calling rotate will make the current journal a datafile, and thus make it
|
|
// eligible for compaction
|
|
c.rotate();
|
|
|
|
Using `rotate()` may also be useful when data in a collection is known to not change
|
|
in the immediate future. After having completed all write operations on a collection,
|
|
performing a `rotate()` will reduce the size of the current journal to the actually
|
|
required size (remember that journals are pre-allocated with a specific size) before
|
|
making the journal a datafile. Thus `rotate()` may cause disk space savings, even if
|
|
the datafiles does not qualify for compaction after rotation.
|
|
|
|
Note: rotating the journal is asynchronous, so that the actual rotation may be executed
|
|
after `rotate()` returns to the caller.
|
|
|
|
* changed compaction to merge small datafiles together (up to 3 datafiles are merged in
|
|
a compaction run)
|
|
|
|
In the regular case, this should leave less small datafiles stay around on disk and allow
|
|
using less file descriptors in total.
|
|
|
|
* added AQL MINUS function
|
|
|
|
* added AQL UNION_DISTINCT function (more efficient than combination of `UNIQUE(UNION())`)
|
|
|
|
* updated mruby to 2013-08-22
|
|
|
|
* issue #587: Add db._create() in help for startup arangosh
|
|
|
|
* issue #586: Share a link on installation instructions in the User Manual
|
|
|
|
* issue #585: Bison 2.4 missing on Mac for custom build
|
|
|
|
* issue #584: Web interface images broken in devel
|
|
|
|
* issue #583: Small documentation update
|
|
|
|
* issue #581: Parameter binding for attributes
|
|
|
|
* issue #580: Small improvements (by @guidoreina)
|
|
|
|
* issue #577: Missing documentation for collection figures in implementor manual
|
|
|
|
* issue #576: Get disk usage for collections and graphs
|
|
|
|
This extends the result of the REST API for /_api/collection/figures with
|
|
the attributes `compactors.count`, `compactors.fileSize`, `shapefiles.count`,
|
|
and `shapefiles.fileSize`.
|
|
|
|
* issue #575: installing devel version on mac (low prio)
|
|
|
|
* issue #574: Documentation (POST /_admin/routing/reload)
|
|
|
|
* issue #558: HTTP cursors, allow count to ignore LIMIT
|
|
|
|
|
|
v1.4.0-alpha1 (2013-08-02)
|
|
--------------------------
|
|
|
|
* added replication. check online manual for details.
|
|
|
|
* added server startup options `--server.disable-replication-logger` and
|
|
`--server.disable-replication-applier`
|
|
|
|
* removed action deployment tool, this now handled with Foxx and its manager or
|
|
by kaerus node utility
|
|
|
|
* fixed a server crash when using byExample / firstExample inside a transaction
|
|
and the collection contained a usable hash/skiplist index for the example
|
|
|
|
* defineHttp now only expects a single context
|
|
|
|
* added collection detail dialog (web interface)
|
|
|
|
Shows collection properties, figures (datafiles, journals, attributes, etc.)
|
|
and indexes.
|
|
|
|
* added documents filter (web interface)
|
|
|
|
Allows searching for documents based on attribute values. One or many filter
|
|
conditions can be defined, using comparison operators such as '==', '<=', etc.
|
|
|
|
* improved AQL editor (web interface)
|
|
|
|
Editor supports keyboard shortcuts (Submit, Undo, Redo, Select).
|
|
Editor allows saving and reusing of user-defined queries.
|
|
Added example queries to AQL editor.
|
|
Added comment button.
|
|
|
|
* added document import (web interface)
|
|
|
|
Allows upload of JSON-data from files. Files must have an extension of .json.
|
|
|
|
* added dashboard (web interface)
|
|
|
|
Shows the status of replication and multiple system charts, e.g.
|
|
Virtual Memory Size, Request Time, HTTP Connections etc.
|
|
|
|
* added API method `/_api/graph` to query all graphs with all properties.
|
|
|
|
* added example queries in web interface AQL editor
|
|
|
|
* added arango.reconnect(<host>) method for arangosh to dynamically switch server or
|
|
user name
|
|
|
|
* added AQL range operator `..`
|
|
|
|
The `..` operator can be used to easily iterate over a sequence of numeric
|
|
values. It will produce a list of values in the defined range, with both bounding
|
|
values included.
|
|
|
|
Example:
|
|
|
|
2010..2013
|
|
|
|
will produce the following result:
|
|
|
|
[ 2010, 2011, 2012, 2013 ]
|
|
|
|
* added AQL RANGE function
|
|
|
|
* added collection.first(count) and collection.last(count) document access functions
|
|
|
|
These functions allow accessing the first or last n documents in a collection. The order
|
|
is determined by document insertion/update time.
|
|
|
|
* added AQL INTERSECTION function
|
|
|
|
* INCOMPATIBLE CHANGE: changed AQL user function namespace resolution operator from `:` to `::`
|
|
|
|
AQL user-defined functions were introduced in ArangoDB 1.3, and the namespace resolution
|
|
operator for them was the single colon (`:`). A function call looked like this:
|
|
|
|
RETURN mygroup:myfunc()
|
|
|
|
The single colon caused an ambiguity in the AQL grammar, making it indistinguishable from
|
|
named attributes or the ternary operator in some cases, e.g.
|
|
|
|
{ mygroup:myfunc ? mygroup:myfunc }
|
|
|
|
The change of the namespace resolution operator from `:` to `::` fixes this ambiguity.
|
|
|
|
Existing user functions in the database will be automatically fixed when starting ArangoDB
|
|
1.4 with the `--upgrade` option. However, queries using user-defined functions need to be
|
|
adjusted on the client side to use the new operator.
|
|
|
|
* allow multiple AQL LET declarations separated by comma, e.g.
|
|
LET a = 1, b = 2, c = 3
|
|
|
|
* more useful AQL error messages
|
|
|
|
The error position (line/column) is more clearly indicated for parse errors.
|
|
Additionally, if a query references a collection that cannot be found, the error
|
|
message will give a hint on the collection name
|
|
|
|
* changed return value for AQL `DOCUMENT` function in case document is not found
|
|
|
|
Previously, when the AQL `DOCUMENT` function was called with the id of a document and
|
|
the document could not be found, it returned `undefined`. This value is not part of the
|
|
JSON type system and this has caused some problems.
|
|
Starting with ArangoDB 1.4, the `DOCUMENT` function will return `null` if the document
|
|
looked for cannot be found.
|
|
|
|
In case the function is called with a list of documents, it will continue to return all
|
|
found documents, and will not return `null` for non-found documents. This has not changed.
|
|
|
|
* added single line comments for AQL
|
|
|
|
Single line comments can be started with a double forward slash: `//`.
|
|
They end at the end of the line, or the end of the query string, whichever is first.
|
|
|
|
* fixed documentation issues #567, #568, #571.
|
|
|
|
* added collection.checksum(<withData>) method to calculate CRC checksums for
|
|
collections
|
|
|
|
This can be used to
|
|
- check if data in a collection has changed
|
|
- compare the contents of two collections on different ArangoDB instances
|
|
|
|
* issue #565: add description line to aal.listAvailable()
|
|
|
|
* fixed several out-of-memory situations when double freeing or invalid memory
|
|
accesses could happen
|
|
|
|
* less msyncing during the creation of collections
|
|
|
|
This is achieved by not syncing the initial (standard) markers in shapes collections.
|
|
After all standard markers are written, the shapes collection will get synced.
|
|
|
|
* renamed command-line option `--log.filter` to `--log.source-filter` to avoid
|
|
misunderstandings
|
|
|
|
* introduced new command-line option `--log.content-filter` to optionally restrict
|
|
logging to just specific log messages (containing the filter string, case-sensitive).
|
|
|
|
For example, to filter on just log entries which contain `ArangoDB`, use:
|
|
|
|
--log.content-filter "ArangoDB"
|
|
|
|
* added optional command-line option `--log.requests-file` to log incoming HTTP
|
|
requests to a file.
|
|
|
|
When used, all HTTP requests will be logged to the specified file, containing the
|
|
client IP address, HTTP method, requests URL, HTTP response code, and size of the
|
|
response body.
|
|
|
|
* added a signal handler for SIGUSR1 signal:
|
|
|
|
when ArangoDB receives this signal, it will respond all further incoming requests
|
|
with an HTTP 503 (Service Unavailable) error. This will be the case until another
|
|
SIGUSR1 signal is caught. This will make ArangoDB start serving requests regularly
|
|
again. Note: this is not implemented on Windows.
|
|
|
|
* limited maximum request URI length to 16384 bytes:
|
|
|
|
Incoming requests with longer request URIs will be responded to with an HTTP
|
|
414 (Request-URI Too Long) error.
|
|
|
|
* require version 1.0 or 1.1 in HTTP version signature of requests sent by clients:
|
|
|
|
Clients sending requests with a non-HTTP 1.0 or non-HTTP 1.1 version number will
|
|
be served with an HTTP 505 (HTTP Version Not Supported) error.
|
|
|
|
* updated manual on indexes:
|
|
|
|
using system attributes such as `_id`, `_key`, `_from`, `_to`, `_rev` in indexes is
|
|
disallowed and will be rejected by the server. This was the case since ArangoDB 1.3,
|
|
but was not properly documented.
|
|
|
|
* issue #563: can aal become a default object?
|
|
|
|
aal is now a prefab object in arangosh
|
|
|
|
* prevent certain system collections from being renamed, dropped, or even unloaded.
|
|
|
|
Which restrictions there are for which system collections may vary from release to
|
|
release, but users should in general not try to modify system collections directly
|
|
anyway.
|
|
|
|
Note: there are no such restrictions for user-created collections.
|
|
|
|
* issue #559: added Foxx documentation to user manual
|
|
|
|
* added server startup option `--server.authenticate-system-only`. This option can be
|
|
used to restrict the need for HTTP authentication to internal functionality and APIs,
|
|
such as `/_api/*` and `/_admin/*`.
|
|
Setting this option to `true` will thus force authentication for the ArangoDB APIs
|
|
and the web interface, but allow unauthenticated requests for other URLs (including
|
|
user defined actions and Foxx applications).
|
|
The default value of this option is `false`, meaning that if authentication is turned
|
|
on, authentication is still required for *all* incoming requests. Only by setting the
|
|
option to `true` this restriction is lifted and authentication becomes required for
|
|
URLs starting with `/_` only.
|
|
|
|
Please note that authentication still needs to be enabled regularly by setting the
|
|
`--server.disable-authentication` parameter to `false`. Otherwise no authentication
|
|
will be required for any URLs as before.
|
|
|
|
* protect collections against unloading when there are still document barriers around.
|
|
|
|
* extended cap constraints to optionally limit the active data size in a collection to
|
|
a specific number of bytes.
|
|
|
|
The arguments for creating a cap constraint are now:
|
|
`collection.ensureCapConstraint(<count>, <byteSize>);`
|
|
|
|
It is supported to specify just a count as in ArangoDB 1.3 and before, to specify
|
|
just a fileSize, or both. The first met constraint will trigger the automated
|
|
document removal.
|
|
|
|
* added `db._exists(doc)` and `collection.exists(doc)` for easy document existence checks
|
|
|
|
* added API `/_api/current-database` to retrieve information about the database the
|
|
client is currently connected to (note: the API `/_api/current-database` has been
|
|
removed in the meantime. The functionality is accessible via `/_api/database/current`
|
|
now).
|
|
|
|
* ensure a proper order of tick values in datafiles/journals/compactors.
|
|
any new files written will have the _tick values of their markers in order. for
|
|
older files, there are edge cases at the beginning and end of the datafiles when
|
|
_tick values are not properly in order.
|
|
|
|
* prevent caching of static pages in PathHandler.
|
|
whenever a static page is requested that is served by the general PathHandler, the
|
|
server will respond to HTTP GET requests with a "Cache-Control: max-age=86400" header.
|
|
|
|
* added "doCompact" attribute when creating collections and to collection.properties().
|
|
The attribute controls whether collection datafiles are compacted.
|
|
|
|
* changed the HTTP return code from 400 to 404 for some cases when there is a referral
|
|
to a non-existing collection or document.
|
|
|
|
* introduced error code 1909 `too many iterations` that is thrown when graph traversals
|
|
hit the `maxIterations` threshold.
|
|
|
|
* optionally limit traversals to a certain number of iterations
|
|
the limitation can be achieved via the traversal API by setting the `maxIterations`
|
|
attribute, and also via the AQL `TRAVERSAL` and `TRAVERSAL_TREE` functions by setting
|
|
the same attribute. If traversals are not limited by the end user, a server-defined
|
|
limit for `maxIterations` may be used to prevent server-side traversals from running
|
|
endlessly.
|
|
|
|
* added graph traversal API at `/_api/traversal`
|
|
|
|
* added "API" link in web interface, pointing to REST API generated with Swagger
|
|
|
|
* moved "About" link in web interface into "links" menu
|
|
|
|
* allow incremental access to the documents in a collection from out of AQL
|
|
this allows reading documents from a collection chunks when a full collection scan
|
|
is required. memory usage might be must lower in this case and queries might finish
|
|
earlier if there is an additional LIMIT statement
|
|
|
|
* changed AQL COLLECT to use a stable sort, so any previous SORT order is preserved
|
|
|
|
* issue #547: Javascript error in the web interface
|
|
|
|
* issue #550: Make AQL graph functions support key in addition to id
|
|
|
|
* issue #526: Unable to escape when an errorneous command is entered into the js shell
|
|
|
|
* issue #523: Graph and vertex methods for the javascript api
|
|
|
|
* issue #517: Foxx: Route parameters with captial letters fail
|
|
|
|
* issue #512: Binded Parameters for LIMIT
|
|
|
|
|
|
v1.3.3 (2013-08-01)
|
|
-------------------
|
|
|
|
* issue #570: updateFishbowl() fails once
|
|
|
|
* updated and fixed generated examples
|
|
|
|
* issue #559: added Foxx documentation to user manual
|
|
|
|
* added missing error reporting for errors that happened during import of edges
|
|
|
|
|
|
v1.3.2 (2013-06-21)
|
|
-------------------
|
|
|
|
* fixed memleak in internal.download()
|
|
|
|
* made the shape-collection journal size adaptive:
|
|
if too big shapes come in, a shape journal will be created with a big-enough size
|
|
automatically. the maximum size of a shape journal is still restricted, but to a
|
|
very big value that should never be reached in practice.
|
|
|
|
* fixed a segfault that occurred when inserting documents with a shape size bigger
|
|
than the default shape journal size (2MB)
|
|
|
|
* fixed a locking issue in collection.truncate()
|
|
|
|
* fixed value overflow in accumulated filesizes reported by collection.figures()
|
|
|
|
* issue #545: AQL FILTER unnecessary (?) loop
|
|
|
|
* issue #549: wrong return code with --daemon
|
|
|
|
|
|
v1.3.1 (2013-05-24)
|
|
-------------------
|
|
|
|
* removed currently unused _ids collection
|
|
|
|
* fixed usage of --temp-path in aranogd and arangosh
|
|
|
|
* issue #540: suppress return of temporary internal variables in AQL
|
|
|
|
* issue #530: ReferenceError: ArangoError is not a constructor
|
|
|
|
* issue #535: Problem with AQL user functions javascript API
|
|
|
|
* set --javascript.app-path for test execution to prevent startup error
|
|
|
|
* issue #532: Graph _edgesCache returns invalid data?
|
|
|
|
* issue #531: Arangod errors
|
|
|
|
* issue #529: Really weird transaction issue
|
|
|
|
* fixed usage of --temp-path in aranogd and arangosh
|
|
|
|
|
|
v1.3.0 (2013-05-10)
|
|
-------------------
|
|
|
|
* fixed problem on restart ("datafile-xxx is not sealed") when server was killed
|
|
during a compaction run
|
|
|
|
* fixed leak when using cursors with very small batchSize
|
|
|
|
* issue #508: `unregistergroup` function not mentioned in http interface docs
|
|
|
|
* issue #507: GET /_api/aqlfunction returns code inside parentheses
|
|
|
|
* fixed issue #489: Bug in aal.install
|
|
|
|
* fixed issue 505: statistics not populated on MacOS
|
|
|
|
|
|
v1.3.0-rc1 (2013-04-24)
|
|
-----------------------
|
|
|
|
* updated documentation for 1.3.0
|
|
|
|
* added node modules and npm packages
|
|
|
|
* changed compaction to only compact datafiles with more at least 10% of dead
|
|
documents (byte size-wise)
|
|
|
|
* issue #498: fixed reload of authentication info when using
|
|
`require("org/arangodb/users").reload()`
|
|
|
|
* issue #495: Passing an empty array to create a document results in a
|
|
"phantom" document
|
|
|
|
* added more precision for requests statistics figures
|
|
|
|
* added "sum" attribute for individual statistics results in statistics API
|
|
at /_admin/statistics
|
|
|
|
* made "limit" an optional parameter in AQL function NEAR().
|
|
limit can now be either omitted completely, or set to 0. If so, an internal
|
|
default value (currently 100) will be applied for the limit.
|
|
|
|
* issue #481
|
|
|
|
* added "attributes.count" to output of `collection.figures()`
|
|
this also affects the REST API /_api/collection/<name>/figures
|
|
|
|
* added IndexedPropertyGetter for ShapedJson objects
|
|
|
|
* added API for user-defined AQL functions
|
|
|
|
* issue #475: A better error message for deleting a non-existent graph
|
|
|
|
* issue #474: Web interface problems with the JS Shell
|
|
|
|
* added missing documentation for AQL UNION function
|
|
|
|
* added transaction support.
|
|
This provides ACID transactions for ArangoDB. Transactions can be invoked
|
|
using the `db._executeTransaction()` function, or the `/_api/transaction`
|
|
REST API.
|
|
|
|
* switched to semantic versioning (at least for alpha & alpha naming)
|
|
|
|
* added saveOrReplace() for server-side JS
|
|
|
|
v1.3.alpha1 (2013-04-05)
|
|
------------------------
|
|
|
|
* cleanup of Module, Package, ArangoApp and modules "internal", "fs", "console"
|
|
|
|
* use Error instead of string in throw to allow stack-trace
|
|
|
|
* issue #454: error while creation of Collection
|
|
|
|
* make `collection.count()` not recalculate the number of documents on the fly, but
|
|
use some internal document counters.
|
|
|
|
* issue #457: invalid string value in web interface
|
|
|
|
* make datafile id (datafile->_fid) identical to the numeric part of the filename.
|
|
E.g. the datafile `journal-123456.db` will now have a datafile marker with the same
|
|
fid (i.e. `123456`) instead of a different value. This change will only affect
|
|
datafiles that are created with 1.3 and not any older files.
|
|
The intention behind this change is to make datafile debugging easier.
|
|
|
|
* consistently discard document attributes with reserved names (system attributes)
|
|
but without any known meaning, for example `_test`, `_foo`, ...
|
|
|
|
Previously, these attributes were saved with the document regularly in some cases,
|
|
but were discarded in other cases.
|
|
Now these attributes are discarded consistently. "Real" system attributes such as
|
|
`_key`, `_from`, `_to` are not affected and will work as before.
|
|
|
|
Additionally, attributes with an empty name (``) are discarded when documents are
|
|
saved.
|
|
|
|
Though using reserved or empty attribute names in documents was not really and
|
|
consistently supported in previous versions of ArangoDB, this change might cause
|
|
an incompatibility for clients that rely on this feature.
|
|
|
|
* added server startup flag `--database.force-sync-properties` to force syncing of
|
|
collection properties on collection creation, deletion and on property update.
|
|
The default value is true to mimic the behavior of previous versions of ArangoDB.
|
|
If set to false, collection properties are written to disk but no call to sync()
|
|
is made.
|
|
|
|
* added detailed output of server version and components for REST APIs
|
|
`/_admin/version` and `/_api/version`. To retrieve this extended information,
|
|
call the REST APIs with URL parameter `details=true`.
|
|
|
|
* issue #443: For git-based builds include commit hash in version
|
|
|
|
* adjust startup log output to be more compact, less verbose
|
|
|
|
* set the required minimum number of file descriptors to 256.
|
|
On server start, this number is enforced on systems that have rlimit. If the limit
|
|
cannot be enforced, starting the server will fail.
|
|
Note: 256 is considered to be the absolute minimum value. Depending on the use case
|
|
for ArangoDB, a much higher number of file descriptors should be used.
|
|
|
|
To avoid checking & potentially changing the number of maximum open files, use the
|
|
startup option `--server.descriptors-minimum 0`
|
|
|
|
* fixed shapedjson to json conversion for special numeric values (NaN, +inf, -inf).
|
|
Before, "NaN", "inf", or "-inf" were written into the JSONified output, but these
|
|
values are not allowed in JSON. Now, "null" is written to the JSONified output as
|
|
required.
|
|
|
|
* added AQL functions VARIANCE_POPULATION(), VARIANCE_SAMPLE(), STDDEV_POPULATION(),
|
|
STDDEV_SAMPLE(), AVERAGE(), MEDIAN() to calculate stastical values for lists
|
|
|
|
* added AQL SQRT() function
|
|
|
|
* added AQL TRIM(), LEFT() and RIGHT() string functions
|
|
|
|
* fixed issue #436: GET /_api/document on edge
|
|
|
|
* make AQL REVERSE() and LENGTH() functions work on strings, too
|
|
|
|
* disabled DOT generation in `make doxygen`. this speeds up docs generation
|
|
|
|
* renamed startup option `--dispatcher.report-intervall` to `--dispatcher.report-interval`
|
|
|
|
* renamed startup option `--scheduler.report-intervall` to `--scheduler.report-interval`
|
|
|
|
* slightly changed output of REST API method /_admin/log.
|
|
Previously, the log messages returned also contained the date and log level, now
|
|
they will only contain the log message, and no date and log level information.
|
|
This information can be re-created by API users from the `timestamp` and `level`
|
|
attributes of the result.
|
|
|
|
* removed configure option `--enable-zone-debug`
|
|
memory zone debugging is now automatically turned on when compiling with ArangoDB
|
|
`--enable-maintainer-mode`
|
|
|
|
* removed configure option `--enable-arangob`
|
|
arangob is now always included in the build
|
|
|
|
|
|
v1.2.3 (XXXX-XX-XX)
|
|
-------------------
|
|
|
|
* added optional parameter `edgexamples` for AQL function EDGES() and NEIGHBORS()
|
|
|
|
* added AQL function NEIGHBORS()
|
|
|
|
* added freebsd support
|
|
|
|
* fixed firstExample() query with `_id` and `_key` attributes
|
|
|
|
* issue triAGENS/ArangoDB-PHP#55: AQL optimiser may have mis-optimised duplicate
|
|
filter statements with limit
|
|
|
|
|
|
v1.2.2 (2013-03-26)
|
|
-------------------
|
|
|
|
* fixed save of objects with common sub-objects
|
|
|
|
* issue #459: fulltext internal memory allocation didn't scale well
|
|
This fix improves loading times for collections with fulltext indexes that have
|
|
lots of equal words indexed.
|
|
|
|
* issue #212: auto-increment support
|
|
|
|
The feature can be used by creating a collection with the extra `keyOptions`
|
|
attribute as follows:
|
|
|
|
db._create("mycollection", { keyOptions: { type: "autoincrement", offset: 1, increment: 10, allowUserKeys: true } });
|
|
|
|
The `type` attribute will make sure the keys will be auto-generated if no
|
|
`_key` attribute is specified for a document.
|
|
|
|
The `allowUserKeys` attribute determines whether users might still supply own
|
|
`_key` values with documents or if this is considered an error.
|
|
|
|
The `increment` value determines the actual increment value, whereas the `offset`
|
|
value can be used to seed to value sequence with a specific starting value.
|
|
This will be useful later in a multi-master setup, when multiple servers can use
|
|
different auto-increment seed values and thus generate non-conflicting auto-increment values.
|
|
|
|
The default values currently are:
|
|
|
|
- `allowUserKeys`: `true`
|
|
- `offset`: `0`
|
|
- `increment`: `1`
|
|
|
|
The only other available key generator type currently is `traditional`.
|
|
The `traditional` key generator will auto-generate keys in a fashion as ArangoDB
|
|
always did (some increasing integer value, with a more or less unpredictable
|
|
increment value).
|
|
|
|
Note that for the `traditional` key generator there is only the option to disallow
|
|
user-supplied keys and give the server the sole responsibility for key generation.
|
|
This can be achieved by setting the `allowUserKeys` property to `false`.
|
|
|
|
This change also introduces the following errors that API implementors may want to check
|
|
the return values for:
|
|
|
|
- 1222: `document key unexpected`: will be raised when a document is created with
|
|
a `_key` attribute, but the underlying collection was set up with the `keyOptions`
|
|
attribute `allowUserKeys: false`.
|
|
|
|
- 1225: `out of keys`: will be raised when the auto-increment key generator runs
|
|
out of keys. This may happen when the next key to be generated is 2^64 or higher.
|
|
In practice, this will only happen if the values for `increment` or `offset` are
|
|
not set appropriately, or if users are allowed to supply own keys, those keys
|
|
are near the 2^64 threshold, and later the auto-increment feature kicks in and
|
|
generates keys that cross that threshold.
|
|
|
|
In practice it should not occur with proper configuration and proper usage of the
|
|
collections.
|
|
|
|
This change may also affect the following REST APIs:
|
|
- POST `/_api/collection`: the server does now accept the optional `keyOptions`
|
|
attribute in the second parameter
|
|
- GET `/_api/collection/properties`: will return the `keyOptions` attribute as part
|
|
of the collection's properties. The previous optional attribute `createOptions`
|
|
is now gone.
|
|
|
|
* fixed `ArangoStatement.explain()` method with bind variables
|
|
|
|
* fixed misleading "cursor not found" error message in arangosh that occurred when
|
|
`count()` was called for client-side cursors
|
|
|
|
* fixed handling of empty attribute names, which may have crashed the server under
|
|
certain circumstances before
|
|
|
|
* fixed usage of invalid pointer in error message output when index description could
|
|
not be opened
|
|
|
|
|
|
v1.2.1 (2013-03-14)
|
|
-------------------
|
|
|
|
* issue #444: please darken light color in arangosh
|
|
|
|
* issue #442: pls update post install info on osx
|
|
|
|
* fixed conversion of special double values (NaN, -inf, +inf) when converting from
|
|
shapedjson to JSON
|
|
|
|
* fixed compaction of markers (location of _key was not updated correctly in memory,
|
|
leading to _keys pointing to undefined memory after datafile rotation)
|
|
|
|
* fixed edge index key pointers to use document master pointer plus offset instead
|
|
of direct _key address
|
|
|
|
* fixed case when server could not create any more journal or compactor files.
|
|
Previously a wrong status code may have been returned, and not being able to create
|
|
a new compactor file may have led to an infinite loop with error message
|
|
"could not create compactor".
|
|
|
|
* fixed value truncation for numeric filename parts when renaming datafiles/journals
|
|
|
|
|
|
v1.2.0 (2013-03-01)
|
|
-------------------
|
|
|
|
* by default statistics are now switch off; in order to enable comment out
|
|
the "disable-statistics = yes" line in "arangod.conf"
|
|
|
|
* fixed issue #435: csv parser skips data at buffer border
|
|
|
|
* added server startup option `--server.disable-statistics` to turn off statistics
|
|
gathering without recompilation of ArangoDB.
|
|
This partly addresses issue #432.
|
|
|
|
* fixed dropping of indexes without collection name, e.g.
|
|
`db.xxx.dropIndex("123456");`
|
|
Dropping an index like this failed with an assertion error.
|
|
|
|
* fixed issue #426: arangoimp should be able to import edges into edge collections
|
|
|
|
* fixed issue #425: In case of conflict ArangoDB returns HTTP 400 Bad request
|
|
(with 1207 Error) instead of HTTP 409 Conflict
|
|
|
|
* fixed too greedy token consumption in AQL for negative values:
|
|
e.g. in the statement `RETURN { a: 1 -2 }` the minus token was consumed as part
|
|
of the value `-2`, and not interpreted as the binary arithmetic operator
|
|
|
|
|
|
v1.2.beta3 (2013-02-22)
|
|
-----------------------
|
|
|
|
* issue #427: ArangoDB Importer Manual has no navigation links (previous|home|next)
|
|
|
|
* issue #319: Documentation missing for Emergency console and incomplete for datafile debugger.
|
|
|
|
* issue #370: add documentation for reloadRouting and flushServerModules
|
|
|
|
* issue #393: added REST API for user management at /_api/user
|
|
|
|
* issue #393, #128: added simple cryptographic functions for user actions in module "crypto":
|
|
* require("org/arangodb/crypto").md5()
|
|
* require("org/arangodb/crypto").sha256()
|
|
* require("org/arangodb/crypto").rand()
|
|
|
|
* added replaceByExample() Javascript and REST API method
|
|
|
|
* added updateByExample() Javascript and REST API method
|
|
|
|
* added optional "limit" parameter for removeByExample() Javascript and REST API method
|
|
|
|
* fixed issue #413
|
|
|
|
* updated bundled V8 version from 3.9.4 to 3.16.14.1
|
|
Note: the Windows version used a more recent version (3.14.0.1) and was not updated.
|
|
|
|
* fixed issue #404: keep original request url in request object
|
|
|
|
|
|
v1.2.beta2 (2013-02-15)
|
|
-----------------------
|
|
|
|
* fixed issue #405: 1.2 compile warnings
|
|
|
|
* fixed issue #333: [debian] Group "arangodb" is not used when starting vie init.d script
|
|
|
|
* added optional parameter 'excludeSystem' to GET /_api/collection
|
|
This parameter can be used to disable returning system collections in the list
|
|
of all collections.
|
|
|
|
* added AQL functions KEEP() and UNSET()
|
|
|
|
* fixed issue #348: "HTTP Interface for Administration and Monitoring"
|
|
documentation errors.
|
|
|
|
* fix stringification of specific positive int64 values. Stringification of int64
|
|
values with the upper 32 bits cleared and the 33rd bit set were broken.
|
|
|
|
* issue #395: Collection properties() function should return 'isSystem' for
|
|
Javascript and REST API
|
|
|
|
* make server stop after upgrade procedure when invoked with `--upgrade option`.
|
|
When started with the `--upgrade` option, the server will perfom
|
|
the upgrade, and then exit with a status code indicating the result of the
|
|
upgrade (0 = success, 1 = failure). To start the server regularly in either
|
|
daemon or console mode, the `--upgrade` option must not be specified.
|
|
This change was introduced to allow init.d scripts check the result of
|
|
the upgrade procedure, even in case an upgrade was successful.
|
|
this was introduced as part of issue #391.
|
|
|
|
* added AQL function EDGES()
|
|
|
|
* added more crash-protection when reading corrupted collections at startup
|
|
|
|
* added documentation for AQL function CONTAINS()
|
|
|
|
* added AQL function LIKE()
|
|
|
|
* replaced redundant error return code 1520 (Unable to open collection) with error code
|
|
1203 (Collection not found). These error codes have the same meanings, but one of
|
|
them was returned from AQL queries only, the other got thrown by other parts of
|
|
ArangoDB. Now, error 1203 (Collection not found) is used in AQL too in case a
|
|
non-existing collection is used.
|
|
|
|
v1.2.beta1 (2013-02-01)
|
|
-----------------------
|
|
|
|
* fixed issue #382: [Documentation error] Maschine... should be Machine...
|
|
|
|
* unified history file locations for arangod, arangosh, and arangoirb.
|
|
- The readline history for arangod (emergency console) is now stored in file
|
|
$HOME/.arangod. It was stored in $HOME/.arango before.
|
|
- The readline history for arangosh is still stored in $HOME/.arangosh.
|
|
- The readline history for arangoirb is now stored in $HOME/.arangoirb. It was
|
|
stored in $HOME/.arango-mrb before.
|
|
|
|
* fixed issue #381: _users user should have a unique constraint
|
|
|
|
* allow negative list indexes in AQL to access elements from the end of a list,
|
|
e.g. ```RETURN values[-1]``` will return the last element of the `values` list.
|
|
|
|
* collection ids, index ids, cursor ids, and document revision ids created and
|
|
returned by ArangoDB are now returned as strings with numeric content inside.
|
|
This is done to prevent some value overrun/truncation in any part of the
|
|
complete client/server workflow.
|
|
In ArangoDB 1.1 and before, these values were previously returned as
|
|
(potentially very big) integer values. This may cause problems (clipping, overrun,
|
|
precision loss) for clients that do not support big integers natively and store
|
|
such values in IEEE754 doubles internally. This type loses precision after about
|
|
52 bits and is thus not safe to hold an id.
|
|
Javascript and 32 bit-PHP are examples for clients that may cause such problems.
|
|
Therefore, ids are now returned by ArangoDB as strings, with the string
|
|
content being the integer value as before.
|
|
|
|
Example for documents ("_rev" attribute):
|
|
- Document returned by ArangoDB 1.1: { "_rev": 1234, ... }
|
|
- Document returned by ArangoDB 1.2: { "_rev": "1234", ... }
|
|
|
|
Example for collections ("id" attribute / "_id" property):
|
|
- Collection returned by ArangoDB 1.1: { "id": 9327643, "name": "test", ... }
|
|
- Collection returned by ArangoDB 1.2: { "id": "9327643", "name": "test", ... }
|
|
|
|
Example for cursors ("id" attribute):
|
|
- Collection returned by ArangoDB 1.1: { "id": 11734292, "hasMore": true, ... }
|
|
- Collection returned by ArangoDB 1.2: { "id": "11734292", "hasMore": true, ... }
|
|
|
|
* global variables are not automatically available anymore when starting the
|
|
arangod Javascript emergency console (i.e. ```arangod --console```).
|
|
|
|
Especially, the variables `db`, `edges`, and `internal` are not available
|
|
anymore. `db` and `internal` can be made available in 1.2 by
|
|
```var db = require("org/arangodb").db;``` and
|
|
```var internal = require("internal");```, respectively.
|
|
The reason for this change is to get rid of global variables in the server
|
|
because this will allow more specific inclusion of functionality.
|
|
|
|
For convenience, the global variable `db` is still available by default in
|
|
arangosh. The global variable `edges`, which since ArangoDB 1.1 was kind of
|
|
a redundant wrapper of `db`, has been removed in 1.2 completely.
|
|
Please use `db` instead, and if creating an edge collection, use the explicit
|
|
```db._createEdgeCollection()``` command.
|
|
|
|
* issue #374: prevent endless redirects when calling admin interface with
|
|
unexpected URLs
|
|
|
|
* issue #373: TRAVERSAL() `trackPaths` option does not work. Instead `paths` does work
|
|
|
|
* issue #358: added support for CORS
|
|
|
|
* honor optional waitForSync property for document removal, replace, update, and
|
|
save operations in arangosh. The waitForSync parameter for these operations
|
|
was previously honored by the REST API and on the server-side, but not when
|
|
the waitForSync parameter was specified for a document operation in arangosh.
|
|
|
|
* calls to db.collection.figures() and /_api/collection/<collection>/figures now
|
|
additionally return the number of shapes used in the collection in the
|
|
extra attribute "shapes.count"
|
|
|
|
* added AQL TRAVERSAL_TREE() function to return a hierchical result from a traversal
|
|
|
|
* added AQL TRAVERSAL() function to return the results from a traversal
|
|
|
|
* added AQL function ATTRIBUTES() to return the attribute names of a document
|
|
|
|
* removed internal server-side AQL functions from global scope.
|
|
|
|
Now the AQL internal functions can only be accessed via the exports of the
|
|
ahuacatl module, which can be included via ```require("org/arangodb/ahuacatl")```.
|
|
It shouldn't be necessary for clients to access this module at all, but
|
|
internal code may use this module.
|
|
|
|
The previously global AQL-related server-side functions were moved to the
|
|
internal namespace. This produced the following function name changes on
|
|
the server:
|
|
|
|
old name new name
|
|
------------------------------------------------------
|
|
AHUACATL_RUN => require("internal").AQL_QUERY
|
|
AHUACATL_EXPLAIN => require("internal").AQL_EXPLAIN
|
|
AHUACATL_PARSE => require("internal").AQL_PARSE
|
|
|
|
Again, clients shouldn't have used these functions at all as there is the
|
|
ArangoStatement object to execute AQL queries.
|
|
|
|
* fixed issue #366: Edges index returns strange description
|
|
|
|
* added AQL function MATCHES() to check a document against a list of examples
|
|
|
|
* added documentation and tests for db.collection.removeByExample
|
|
|
|
* added --progress option for arangoimp. This will show the percentage of the input
|
|
file that has been processed by arangoimp while the import is still running. It can
|
|
be used as a rough indicator of progress for the entire import.
|
|
|
|
* make the server log documents that cannot be imported via /_api/import into the
|
|
logfile using the warning log level. This may help finding illegal documents in big
|
|
import runs.
|
|
|
|
* check on server startup whether the database directory and all collection directories
|
|
are writable. if not, the server startup will be aborted. this prevents serious
|
|
problems with collections being non-writable and this being detected at some pointer
|
|
after the server has been started
|
|
|
|
* allow the following AQL constructs: FUNC(...)[...], FUNC(...).attribute
|
|
|
|
* fixed issue #361: Bug in Admin Interface. Header disappears when clicking new collection
|
|
|
|
* Added in-memory only collections
|
|
|
|
Added collection creation parameter "isVolatile":
|
|
if set to true, the collection is created as an in-memory only collection,
|
|
meaning that all document data of that collection will reside in memory only,
|
|
and will not be stored permanently to disk.
|
|
This means that all collection data will be lost when the collection is unloaded
|
|
or the server is shut down.
|
|
As this collection type does not have datafile disk overhead for the regular
|
|
document operations, it may be faster than normal disk-backed collections. The
|
|
actual performance gains strongly depend on the underlying OS, filesystem, and
|
|
settings though.
|
|
This collection type should be used for caches only and not for any sensible data
|
|
that cannot be re-created otherwise.
|
|
Some platforms, namely Windows, currently do not support this collection type.
|
|
When creating an in-memory collection on such platform, an error message will be
|
|
returned by ArangoDB telling the user the platform does not support it.
|
|
|
|
Note: in-memory collections are an experimental feature. The feature might
|
|
change drastically or even be removed altogether in a future version of ArangoDB.
|
|
|
|
* fixed issue #353: Please include "pretty print" in Emergency Console
|
|
|
|
* fixed issue #352: "pretty print" console.log
|
|
This was achieved by adding the dump() function for the "internal" object
|
|
|
|
* reduced insertion time for edges index
|
|
Inserting into the edges index now avoids costly comparisons in case of a hash
|
|
collision, reducing the prefilling/loading timer for bigger edge collections
|
|
|
|
* added fulltext queries to AQL via FULLTEXT() function. This allows search
|
|
fulltext indexes from an AQL query to find matching documents
|
|
|
|
* added fulltext index type. This index type allows indexing words and prefixes of
|
|
words from a specific document attribute. The index can be queries using a
|
|
SimpleQueryFull object, the HTTP REST API at /_api/simple/fulltext, or via AQL
|
|
|
|
* added collection.revision() method to determine whether a collection has changed.
|
|
The revision method returns a revision string that can be used by client programs
|
|
for equality/inequality comparisons. The value returned by the revision method
|
|
should be treated by clients as an opaque string and clients should not try to
|
|
figure out the sense of the revision id. This is still useful enough to check
|
|
whether data in a collection has changed.
|
|
|
|
* issue #346: adaptively determine NUMBER_HEADERS_PER_BLOCK
|
|
|
|
* issue #338: arangosh cursor positioning problems
|
|
|
|
* issue #326: use limit optimisation with filters
|
|
|
|
* issue #325: use index to avoid sorting
|
|
|
|
* issue #324: add limit optimisation to AQL
|
|
|
|
* removed arango-password script and added Javascript functionality to add/delete
|
|
users instead. The functionality is contained in module `users` and can be invoked
|
|
as follows from arangosh and arangod:
|
|
* require("users").save("name", "passwd");
|
|
* require("users").replace("name", "newPasswd");
|
|
* require("users").remove("name");
|
|
* require("users").reload();
|
|
These functions are intentionally not offered via the web interface.
|
|
This also addresses issue #313
|
|
|
|
* changed print output in arangosh and the web interface for JSON objects.
|
|
Previously, printing a JSON object in arangosh resulted in the attribute values
|
|
being printed as proper JSON, but attribute names were printed unquoted and
|
|
unescaped. This was fine for the purpose of arangosh, but lead to invalid
|
|
JSON being produced. Now, arangosh will produce valid JSON that can be used
|
|
to send it back to ArangoDB or use it with arangoimp etc.
|
|
|
|
* fixed issue #300: allow importing documents via the REST /_api/import API
|
|
from a JSON list, too.
|
|
So far, the API only supported importing from a format that had one JSON object
|
|
on each line. This is sometimes inconvenient, e.g. when the result of an AQL
|
|
query or any other list is to be imported. This list is a JSON list and does not
|
|
necessary have a document per line if pretty-printed.
|
|
arangoimp now supports the JSON list format, too. However, the format requires
|
|
arangoimp and the server to read the entire dataset at once. If the dataset is
|
|
too big (bigger than --max-upload-size) then the import will be rejected. Even if
|
|
increased, the entire list must fit in memory on both the client and the server,
|
|
and this may be more resource-intensive than importing individual lines in chunks.
|
|
|
|
* removed unused parameter --reuse-ids for arangoimp. This parameter did not have
|
|
any effect in 1.2, was never publicly announced and did evil (TM) things.
|
|
|
|
* fixed issue #297 (partly): added whitespace between command line and
|
|
command result in arangosh, added shell colors for better usability
|
|
|
|
* fixed issue #296: system collections not usable from AQL
|
|
|
|
* fixed issue #295: deadlock on shutdown
|
|
|
|
* fixed issue #293: AQL queries should exploit edges index
|
|
|
|
* fixed issue #292: use index when filtering on _key in AQL
|
|
|
|
* allow user-definable document keys
|
|
users can now define their own document keys by using the _key attribute
|
|
when creating new documents or edges. Once specified, the value of _key is
|
|
immutable.
|
|
The restrictions for user-defined key values are:
|
|
* the key must be at most 254 bytes long
|
|
* it must consist of the letters a-z (lower or upper case), the digits 0-9,
|
|
the underscore (_) or dash (-) characters only
|
|
* any other characters, especially multi-byte sequences, whitespace or
|
|
punctuation characters cannot be used inside key values
|
|
|
|
Specifiying a document key is optional when creating new documents. If no
|
|
document key is specified, ArangoDB will create a document key itself.
|
|
There are no guarantees about the format and pattern of auto-generated document
|
|
keys other than the above restrictions.
|
|
Clients should therefore treat auto-generated document keys as opaque values.
|
|
Keys can be used to look up and reference documents, e.g.:
|
|
* saving a document: `db.users.save({ "_key": "fred", ... })`
|
|
* looking up a document: `db.users.document("fred")`
|
|
* referencing other documents: `edges.relations.save("users/fred", "users/john", ...)`
|
|
|
|
This change is downwards-compatible to ArangoDB 1.1 because in ArangoDB 1.1
|
|
users were not able to define their own keys. If the user does not supply a _key
|
|
attribute when creating a document, ArangoDB 1.2 will still generate a key of
|
|
its own as ArangoDB 1.1 did. However, all documents returned by ArangoDB 1.2 will
|
|
include a _key attribute and clients should be able to handle that (e.g. by
|
|
ignoring it if not needed). Documents returned will still include the _id attribute
|
|
as in ArangoDB 1.1.
|
|
|
|
* require collection names everywhere where a collection id was allowed in
|
|
ArangoDB 1.1 & 1.0
|
|
This change requires clients to use a collection name in place of a collection id
|
|
at all places the client deals with collections.
|
|
Examples:
|
|
* creating edges: the _from and _to attributes must now contain collection names instead
|
|
of collection ids: `edges.relations.save("test/my-key1", "test/my-key2", ...)`
|
|
* retrieving edges: the returned _from and _to attributes now will contain collection
|
|
names instead of ids, too: _from: `test/fred` instead of `1234/3455`
|
|
* looking up documents: db.users.document("fred") or db._document("users/fred")
|
|
|
|
Collection names must be used in REST API calls instead of collection ids, too.
|
|
This change is thus not completely downwards-compatible to ArangoDB 1.1. ArangoDB 1.1
|
|
required users to use collection ids in many places instead of collection names.
|
|
This was unintuitive and caused overhead in cases when just the collection name was
|
|
known on client-side but not its id. This overhead can now be avoided so clients can
|
|
work with the collection names directly. There is no need to work with collection ids
|
|
on the client side anymore.
|
|
This change will likely require adjustments to API calls issued by clients, and also
|
|
requires a change in how clients handle the _id value of returned documents. Previously,
|
|
the _id value of returned documents contained the collection id, a slash separator and
|
|
the document number. Since 1.2, _id will contain the collection name, a slash separator
|
|
and the document key. The same applies to the _from and _to attribute values of edges
|
|
that are returned by ArangoDB.
|
|
|
|
Also removed (now unnecessary) location header in responses of the collections REST API.
|
|
The location header was previously returned because it was necessary for clients.
|
|
When clients created a collection, they specified the collection name. The collection
|
|
id was generated on the server, but the client needed to use the server-generated
|
|
collection id for further API calls, e.g. when creating edges etc. Therefore, the
|
|
full collection URL, also containing the collection id, was returned by the server in
|
|
responses to the collection API, in the HTTP location header.
|
|
Returning the location header has become unnecessary in ArangoDB 1.2 because users
|
|
can access collections by name and do not need to care about collection ids.
|
|
|
|
|
|
v1.1.3 (2013-XX-XX)
|
|
-------------------
|
|
|
|
* fix case when an error message was looked up for an error code but no error
|
|
message was found. In this case a NULL ptr was returned and not checked everywhere.
|
|
The place this error popped up was when inserting into a non-unique hash index
|
|
failed with a specific, invalid error code.
|
|
|
|
* fixed issue #381: db._collection("_users").getIndexes();
|
|
|
|
* fixed issue #379: arango-password fatal issue javscript.startup-directory
|
|
|
|
* fixed issue #372: Command-Line Options for the Authentication and Authorisation
|
|
|
|
|
|
v1.1.2 (2013-01-20)
|
|
-------------------
|
|
|
|
* upgraded to mruby 2013-01-20 583983385b81c21f82704b116eab52d606a609f4
|
|
|
|
* fixed issue #357: Some spelling and grammar errors
|
|
|
|
* fixed issue #355: fix quotes in pdf manual
|
|
|
|
* fixed issue #351: Strange arangosh error message for long running query
|
|
|
|
* fixed randomly hanging connections in arangosh on MacOS
|
|
|
|
* added "any" query method: this returns a random document from a collection. It
|
|
is also available via REST HTTP at /_api/simple/any.
|
|
|
|
* added deployment tool
|
|
|
|
* added getPeerVertex
|
|
|
|
* small fix for logging of long messages: the last character of log messages longer
|
|
than 256 bytes was not logged.
|
|
|
|
* fixed truncation of human-readable log messages for web interface: the trailing \0
|
|
byte was not appended for messages longer than 256 bytes
|
|
|
|
* fixed issue #341: ArangoDB crashes when stressed with Batch jobs
|
|
Contrary to the issue title, this did not have anything to do with batch jobs but
|
|
with too high memory usage. The memory usage of ArangoDB is now reduced for cases
|
|
when there are lots of small collections with few documents each
|
|
|
|
* started with issue #317: Feature Request (from Google Groups): DATE handling
|
|
|
|
* backported issue #300: Extend arangoImp to Allow importing resultset-like
|
|
(list of documents) formatted files
|
|
|
|
* fixed issue #337: "WaitForSync" on new collection does not work on Win/X64
|
|
|
|
* fixed issue #336: Collections REST API docs
|
|
|
|
* fixed issue #335: mmap errors due to wrong memory address calculation
|
|
|
|
* fixed issue #332: arangoimp --use-ids parameter seems to have no impact
|
|
|
|
* added option '--server.disable-authentication' for arangosh as well. No more passwd
|
|
prompts if not needed
|
|
|
|
* fixed issue #330: session logging for arangosh
|
|
|
|
* fixed issue #329: Allow passing script file(s) as parameters for arangosh to run
|
|
|
|
* fixed issue #328: 1.1 compile warnings
|
|
|
|
* fixed issue #327: Javascript parse errors in front end
|
|
|
|
|
|
v1.1.1 (2012-12-18)
|
|
-------------------
|
|
|
|
* fixed issue #339: DELETE /_api/cursor/cursor-identifier return incollect errorNum
|
|
|
|
The fix for this has led to a signature change of the function actions.resultNotFound().
|
|
The meaning of parameter #3 for This function has changed from the error message string
|
|
to the error code. The error message string is now parameter #4.
|
|
Any client code that uses this function in custom actions must be adjusted.
|
|
|
|
* fixed issue #321: Problem upgrading arangodb 1.0.4 to 1.1.0 with Homebrew (OSX 10.8.2)
|
|
|
|
* fixed issue #230: add navigation and search for online documentation
|
|
|
|
* fixed issue #315: Strange result in PATH
|
|
|
|
* fixed issue #323: Wrong function returned in error message of AQL CHAR_LENGTH()
|
|
|
|
* fixed some log errors on startup / shutdown due to pid file handling and changing
|
|
of directories
|
|
|
|
|
|
v1.1.0 (2012-12-05)
|
|
-------------------
|
|
|
|
* WARNING:
|
|
arangod now performs a database version check at startup. It will look for a file
|
|
named "VERSION" in its database directory. If the file is not present, arangod will
|
|
perform an automatic upgrade of the database directory. This should be the normal
|
|
case when upgrading from ArangoDB 1.0 to ArangoDB 1.1.
|
|
|
|
If the VERSION file is present but is from an older version of ArangoDB, arangod
|
|
will refuse to start and ask the user to run a manual upgrade first. A manual upgrade
|
|
can be performed by starting arangod with the option `--upgrade`.
|
|
|
|
This upgrade procedure shall ensure that users have full control over when they
|
|
perform any updates/upgrades of their data, and can plan backups accordingly. The
|
|
procedure also guarantees that the server is not run without any required system
|
|
collections or with in incompatible data state.
|
|
|
|
* added AQL function DOCUMENT() to retrieve a document by its _id value
|
|
|
|
* fixed issue #311: fixed segfault on unload
|
|
|
|
* fixed issue #309: renamed stub "import" button from web interface
|
|
|
|
* fixed issue #307: added WaitForSync column in collections list in in web interface
|
|
|
|
* fixed issue #306: naming in web interface
|
|
|
|
* fixed issue #304: do not clear AQL query text input when switching tabs in
|
|
web interface
|
|
|
|
* fixed issue #303: added documentation about usage of var keyword in web interface
|
|
|
|
* fixed issue #301: PATCH does not work in web interface
|
|
|
|
# fixed issue #269: fix make distclean & clean
|
|
|
|
* fixed issue #296: system collections not usable from AQL
|
|
|
|
* fixed issue #295: deadlock on shutdown
|
|
|
|
* added collection type label to web interface
|
|
|
|
* fixed issue #290: the web interface now disallows creating non-edges in edge collections
|
|
when creating collections via the web interface, the collection type must also be
|
|
specified (default is document collection)
|
|
|
|
* fixed issue #289: tab-completion does not insert any spaces
|
|
|
|
* fixed issue #282: fix escaping in web interface
|
|
|
|
* made AQL function NOT_NULL take any number of arguments. Will now return its
|
|
first argument that is not null, or null if all arguments are null. This is downwards
|
|
compatible.
|
|
|
|
* changed misleading AQL function name NOT_LIST() to FIRST_LIST() and slightly changed
|
|
the behavior. The function will now return its first argument that is a list, or null
|
|
if none of the arguments are lists.
|
|
This is mostly downwards-compatible. The only change to the previous implementation in
|
|
1.1-beta will happen if two arguments were passed and the 1st and 2nd arguments were
|
|
both no lists. In previous 1.1, the 2nd argument was returned as is, but now null
|
|
will be returned.
|
|
|
|
* add AQL function FIRST_DOCUMENT(), with same behavior as FIRST_LIST(), but working
|
|
with documents instead of lists.
|
|
|
|
* added UPGRADING help text
|
|
|
|
* fixed issue #284: fixed Javascript errors when adding edges/vertices without own
|
|
attributes
|
|
|
|
* fixed issue #283: AQL LENGTH() now works on documents, too
|
|
|
|
* fixed issue #281: documentation for skip lists shows wrong example
|
|
|
|
* fixed AQL optimiser bug, related to OR-combined conditions that filtered on the
|
|
same attribute but with different conditions
|
|
|
|
* fixed issue #277: allow usage of collection names when creating edges
|
|
the fix of this issue also implies validation of collection names / ids passed to
|
|
the REST edge create method. edges with invalid collection ids or names in the
|
|
"from" or "to" values will be rejected and not saved
|
|
|
|
|
|
v1.1.beta2 (2012-11-13)
|
|
-----------------------
|
|
|
|
* fixed arangoirb compilation
|
|
|
|
* fixed doxygen
|
|
|
|
|
|
v1.1.beta1 (2012-10-24)
|
|
-----------------------
|
|
|
|
* fixed AQL optimiser bug
|
|
|
|
* WARNING:
|
|
- the user has changed from "arango" to "arangodb", the start script has changed from
|
|
"arangod" to "arangodb", the database directory has changed from "/var/arangodb" to
|
|
"/var/lib/arangodb" to be compliant with various Linux policies
|
|
|
|
- In 1.1, we have introduced types for collections: regular documents go into document
|
|
collections, and edges go into edge collections. The prefixing (db.xxx vs. edges.xxx)
|
|
works slightly different in 1.1: edges.xxx can still be used to access collections,
|
|
however, it will not determine the type of existing collections anymore. To create an
|
|
edge collection 1.1, you can use db._createEdgeCollection() or edges._create().
|
|
And there's of course also db._createDocumentCollection().
|
|
db._create() is also still there and will create a document collection by default,
|
|
whereas edges._create() will create an edge collection.
|
|
|
|
- the admin web interface that was previously available via the simple URL suffix /
|
|
is now available via a dedicated URL suffix only: /_admin/html
|
|
The reason for this is that routing and URLs are now subject to changes by the end user,
|
|
and only URLs parts prefixed with underscores (e.g. /_admin or /_api) are reserved
|
|
for ArangoDB's internal usage.
|
|
|
|
* the server now handles requests with invalid Content-Length header values as follows:
|
|
- if Content-Length is negative, the server will respond instantly with HTTP 411
|
|
(length required)
|
|
|
|
- if Content-Length is positive but shorter than the supplied body, the server will
|
|
respond with HTTP 400 (bad request)
|
|
|
|
- if Content-Length is positive but longer than the supplied body, the server will
|
|
wait for the client to send the missing bytes. The server allows 90 seconds for this
|
|
and will close the connection if the client does not send the remaining data
|
|
|
|
- if Content-Length is bigger than the maximum allowed size (512 MB), the server will
|
|
fail with HTTP 413 (request entitiy too large).
|
|
|
|
- if the length of the HTTP headers is greated than the maximum allowed size (1 MB),
|
|
the server will fail with HTTP 431 (request header fields too large)
|
|
|
|
* issue #265: allow optional base64 encoding/decoding of action response data
|
|
|
|
* issue #252: create _modules collection using arango-upgrade (note: arango-upgrade was
|
|
finally replaced by the `--upgrade` option for arangod)
|
|
|
|
* issue #251: allow passing arbitrary options to V8 engine using new command line option:
|
|
--javascript.v8-options. Using this option, the Harmony features or other settings in
|
|
v8 can be enabled if the end user requires them
|
|
|
|
* issue #248: allow AQL optimiser to pull out completely uncorrelated subqueries to the
|
|
top level, resulting in less repeated evaluation of the subquery
|
|
|
|
* upgraded to Doxygen 1.8.0
|
|
|
|
* issue #247: added AQL function MERGE_RECURSIVE
|
|
|
|
* issue #246: added clear() function in arangosh
|
|
|
|
* issue #245: Documentation: Central place for naming rules/limits inside ArangoDB
|
|
|
|
* reduced size of hash index elements by 50 %, allowing more index elements to fit in
|
|
memory
|
|
|
|
* issue #235: GUI Shell throws Error:ReferenceError: db is not defined
|
|
|
|
* issue #229: methods marked as "under construction"
|
|
|
|
* issue #228: remove unfinished APIs (/_admin/config/*)
|
|
|
|
* having the OpenSSL library installed is now a prerequisite to compiling ArangoDB
|
|
Also removed the --enable-ssl configure option because ssl is always required.
|
|
|
|
* added AQL functions TO_LIST, NOT_LIST
|
|
|
|
* issue #224: add optional Content-Id for batch requests
|
|
|
|
* issue #221: more documentation on AQL explain functionality. Also added
|
|
ArangoStatement.explain() client method
|
|
|
|
* added db._createStatement() method on server as well (was previously available
|
|
on the client only)
|
|
|
|
* issue #219: continue in case of "document not found" error in PATHS() function
|
|
|
|
* issue #213: make waitForSync overridable on specifc actions
|
|
|
|
* changed AQL optimiser to use indexes in more cases. Previously, indexes might
|
|
not have been used when in a reference expression the inner collection was
|
|
specified last. Example: FOR u1 IN users FOR u2 IN users FILTER u1._id == u2._id
|
|
Previously, this only checked whether an index could be used for u2._id (not
|
|
possible). It was not checked whether an index on u1._id could be used (possible).
|
|
Now, for expressions that have references/attribute names on both sides of the
|
|
above as above, indexes are checked for both sides.
|
|
|
|
* issue #204: extend the CSV import by TSV and by user configurable
|
|
seperator character(s)
|
|
|
|
* issue #180: added support for batch operations
|
|
|
|
* added startup option --server.backlog-size
|
|
this allows setting the value of the backlog for the listen() system call.
|
|
the default value is 10, the maximum value is platform-dependent
|
|
|
|
* introduced new configure option "--enable-maintainer-mode" for
|
|
ArangoDB maintainers. this option replaces the previous compile switches
|
|
--with-boost-test, --enable-bison, --enable-flex and --enable-errors-dependency
|
|
the individual configure options have been removed. --enable-maintainer-mode
|
|
turns them all on.
|
|
|
|
* removed potentially unused configure option --enable-memfail
|
|
|
|
* fixed issue #197: HTML web interface calls /_admin/user-manager/session
|
|
|
|
* fixed issue #195: VERSION file in database directory
|
|
|
|
* fixed issue #193: REST API HEAD request returns a message body on 404
|
|
|
|
* fixed issue #188: intermittent issues with 1.0.0
|
|
(server-side cursors not cleaned up in all cases, pthreads deadlock issue)
|
|
|
|
* issue #189: key store should use ISO datetime format bug
|
|
|
|
* issue #187: run arango-upgrade on server start (note: arango-upgrade was finally
|
|
replaced by the `--upgrade` option for arangod)n
|
|
|
|
* fixed issue #183: strange unittest error
|
|
|
|
* fixed issue #182: manual pages
|
|
|
|
* fixed issue #181: use getaddrinfo
|
|
|
|
* moved default database directory to "/var/lib/arangodb" in accordance with
|
|
http://www.pathname.com/fhs/pub/fhs-2.3.html
|
|
|
|
* fixed issue #179: strange text in import manual
|
|
|
|
* fixed issue #178: test for aragoimp is missing
|
|
|
|
* fixed issue #177: a misleading error message was returned if unknown variables
|
|
were used in certain positions in an AQL query.
|
|
|
|
* fixed issue #176: explain how to use AQL from the arangosh
|
|
|
|
* issue #175: re-added hidden (and deprecated) option --server.http-port. This
|
|
option is only there to be downwards-compatible to Arango 1.0.
|
|
|
|
* fixed issue #174: missing Documentation for `within`
|
|
|
|
* fixed issue #170: add db.<coll_name>.all().toArray() to arangosh help screen
|
|
|
|
* fixed issue #169: missing argument in Simple Queries
|
|
|
|
* added program arango-upgrade. This program must be run after installing ArangoDB
|
|
and after upgrading from a previous version of ArangoDB. The arango-upgrade script
|
|
will ensure all system collections are created and present in the correct state.
|
|
It will also perform any necessary data updates.
|
|
Note: arango-upgrade was finally replaced by the `--upgrade` option for arangod.
|
|
|
|
* issue #153: edge collection should be a flag for a collection
|
|
collections now have a type so that the distinction between document and edge
|
|
collections can now be done at runtime using a collection's type value.
|
|
A collection's type can be queried in Javascript using the <collection>.type() method.
|
|
|
|
When new collections are created using db._create(), they will be document
|
|
collections by default. When edge._create() is called, an edge collection will be created.
|
|
To explicitly create a collection of a specific/different type, use the methods
|
|
_createDocumentCollection() or _createEdgeCollection(), which are available for
|
|
both the db and the edges object.
|
|
The Javascript objects ArangoEdges and ArangoEdgesCollection have been removed
|
|
completely.
|
|
All internal and test code has been adjusted for this, and client code
|
|
that uses edges.* should also still work because edges is still there and creates
|
|
edge collections when _create() is called.
|
|
|
|
INCOMPATIBLE CHANGE: Client code might still need to be changed in the following aspect:
|
|
Previously, collections did not have a type so documents and edges could be inserted
|
|
in the same collection. This is now disallowed. Edges can only be inserted into
|
|
edge collections now. As there were no collection types in 1.0, ArangoDB will perform
|
|
an automatic upgrade when migrating from 1.0 to 1.1.
|
|
The automatic upgrade will check every collection and determine its type as follows:
|
|
- if among the first 50 documents in the collection there are documents with
|
|
attributes "_from" and "_to", the collection is typed as an edge collection
|
|
- if among the first 50 documents in the collection there are no documents with
|
|
attributes "_from" and "_to", the collection is made as a document collection
|
|
|
|
* issue #150: call V8 garbage collection on server periodically
|
|
|
|
* issue #110: added support for partial updates
|
|
|
|
The REST API for documents now offers an HTTP PATCH method to partially update
|
|
documents. Overwriting/replacing documents is still available via the HTTP PUT method
|
|
as before. The Javascript API in the shell also offers a new update() method in extension to
|
|
the previously existing replace() method.
|
|
|
|
|
|
v1.0.4 (2012-11-12)
|
|
-------------------
|
|
|
|
* issue #275: strange error message in arangosh 1.0.3 at startup
|
|
|
|
|
|
v1.0.3 (2012-11-08)
|
|
-------------------
|
|
|
|
* fixed AQL optimiser bug
|
|
|
|
* issue #273: fixed segfault in arangosh on HTTP 40x
|
|
|
|
* issue #265: allow optional base64 encoding/decoding of action response data
|
|
|
|
* issue #252: _modules collection not created automatically
|
|
|
|
|
|
v1.0.2 (2012-10-22)
|
|
-------------------
|
|
|
|
* repository CentOS-X.Y moved to CentOS-X, same for Debian
|
|
|
|
* bugfix for rollback from edges
|
|
|
|
* bugfix for hash indexes
|
|
|
|
* bugfix for StringBuffer::erase_front
|
|
|
|
* added autoload for modules
|
|
|
|
* added AQL function TO_LIST
|
|
|
|
|
|
v1.0.1 (2012-09-30)
|
|
-------------------
|
|
|
|
* draft for issue #165: front-end application howto
|
|
|
|
* updated mruby to cf8fdea4a6598aa470e698e8cbc9b9b492319d
|
|
|
|
* fix for issue #190: install doesn't create log directory
|
|
|
|
* fix for issue #194: potential race condition between creating and dropping collections
|
|
|
|
* fix for issue #193: REST API HEAD request returns a message body on 404
|
|
|
|
* fix for issue #188: intermittent issues with 1.0.0
|
|
|
|
* fix for issue #163: server cannot create collection because of abandoned files
|
|
|
|
* fix for issue #150: call V8 garbage collection on server periodically
|
|
|
|
|
|
v1.0.0 (2012-08-17)
|
|
-------------------
|
|
|
|
* fix for issue #157: check for readline and ncurses headers, not only libraries
|
|
|
|
|
|
v1.0.beta4 (2012-08-15)
|
|
-----------------------
|
|
|
|
* fix for issue #152: fix memleak for barriers
|
|
|
|
|
|
v1.0.beta3 (2012-08-10)
|
|
-----------------------
|
|
|
|
* fix for issue #151: Memleak, collection data not removed
|
|
|
|
* fix for issue #149: Inconsistent port for admin interface
|
|
|
|
* fix for issue #163: server cannot create collection because of abandoned files
|
|
|
|
* fix for issue #157: check for readline and ncurses headers, not only libraries
|
|
|
|
* fix for issue #108: db.<collection>.truncate() inefficient
|
|
|
|
* fix for issue #109: added startup note about cached collection names and how to
|
|
refresh them
|
|
|
|
* fix for issue #156: fixed memleaks in /_api/import
|
|
|
|
* fix for issue #59: added tests for /_api/import
|
|
|
|
* modified return value for calls to /_api/import: now, the attribute "empty" is
|
|
returned as well, stating the number of empty lines in the input. Also changed the
|
|
return value of the error code attribute ("errorNum") from 1100 ("corrupted datafile")
|
|
to 400 ("bad request") in case invalid/unexpected JSON data was sent to the server.
|
|
This error code is more appropriate as no datafile is broken but just input data is
|
|
incorrect.
|
|
|
|
* fix for issue #152: Memleak for barriers
|
|
|
|
* fix for issue #151: Memleak, collection data not removed
|
|
|
|
* value of --database.maximal-journal-size parameter is now validated on startup. If
|
|
value is smaller than the minimum value (currently 1048576), an error is thrown and
|
|
the server will not start. Before this change, the global value of maximal journal
|
|
size was not validated at server start, but only on collection level
|
|
|
|
* increased sleep value in statistics creation loop from 10 to 500 microseconds. This
|
|
reduces accuracy of statistics values somewhere after the decimal points but saves
|
|
CPU time.
|
|
|
|
* avoid additional sync() calls when writing partial shape data (attribute name data)
|
|
to disk. sync() will still be called when the shape marker (will be written after
|
|
the attributes) is written to disk
|
|
|
|
* issue #147: added flag --database.force-sync-shapes to force synching of shape data
|
|
to disk. The default value is true so it is the same behavior as in version 1.0.
|
|
if set to false, shape data is synched to disk if waitForSync for the collection is
|
|
set to true, otherwise, shape data is not synched.
|
|
|
|
* fix for issue #145: strange issue on Travis: added epsilon for numeric comparion in
|
|
geo index
|
|
|
|
* fix for issue #136: adjusted message during indexing
|
|
|
|
* issue #131: added timeout for HTTP keep-alive connections. The default value is 300
|
|
seconds. There is a startup parameter server.keep-alive-timeout to configure the value.
|
|
Setting it to 0 will disable keep-alive entirely on the server.
|
|
|
|
* fix for issue #137: AQL optimizer should use indexes for ref accesses with
|
|
2 named attributes
|
|
|
|
|
|
v1.0.beta2 (2012-08-03)
|
|
-----------------------
|
|
|
|
* fix for issue #134: improvements for centos RPM
|
|
|
|
* fixed problem with disable-admin-interface in config file
|
|
|
|
|
|
v1.0.beta1 (2012-07-29)
|
|
-----------------------
|
|
|
|
* fixed issue #118: We need a collection "debugger"
|
|
|
|
* fixed issue #126: Access-Shaper must be cached
|
|
|
|
* INCOMPATIBLE CHANGE: renamed parameters "connect-timeout" and "request-timeout"
|
|
for arangosh and arangoimp to "--server.connect-timeout" and "--server.request-timeout"
|
|
|
|
* INCOMPATIBLE CHANGE: authorization is now required on the server side
|
|
Clients sending requests without HTTP autorization will be rejected with HTTP 401
|
|
To allow backwards compatibility, the server can be started with the option
|
|
"--server.disable-authentication"
|
|
|
|
* added options "--server.username" and "--server.password" for arangosh and arangoimp
|
|
These parameters must be used to specify the user and password to be used when
|
|
connecting to the server. If no password is given on the command line, arangosh/
|
|
arangoimp will interactively prompt for a password.
|
|
If no user name is specified on the command line, the default user "root" will be
|
|
used.
|
|
|
|
* added startup option "--server.ssl-cipher-list" to determine which ciphers to
|
|
use in SSL context. also added SSL_OP_CIPHER_SERVER_PREFERENCE to SSL default
|
|
options so ciphers are tried in server and not in client order
|
|
|
|
* changed default SSL protocol to TLSv1 instead of SSLv2
|
|
|
|
* changed log-level of SSL-related messages
|
|
|
|
* added SSL connections if server is compiled with OpenSSL support. Use --help-ssl
|
|
|
|
* INCOMPATIBLE CHANGE: removed startup option "--server.admin-port".
|
|
The new endpoints feature (see --server.endpoint) allows opening multiple endpoints
|
|
anyway, and the distinction between admin and "other" endpoints can be emulated
|
|
later using privileges.
|
|
|
|
* INCOMPATIBLE CHANGE: removed startup options "--port", "--server.port", and
|
|
"--server.http-port" for arangod.
|
|
These options have been replaced by the new "--server.endpoint" parameter
|
|
|
|
* INCOMPATIBLE CHANGE: removed startup option "--server" for arangosh and arangoimp.
|
|
These options have been replaced by the new "--server.endpoint" parameter
|
|
|
|
* Added "--server.endpoint" option to arangod, arangosh, and arangoimp.
|
|
For arangod, this option allows specifying the bind endpoints for the server
|
|
The server can be bound to one or multiple endpoints at once. For arangosh
|
|
and arangoimp, the option specifies the server endpoint to connect to.
|
|
The following endpoint syntax is currently supported:
|
|
- tcp://host:port or http@tcp://host:port (HTTP over IPv4)
|
|
- tcp://[host]:port or http@tcp://[host]:port (HTTP over IPv6)
|
|
- ssl://host:port or http@tcp://host:port (HTTP over SSL-encrypted IPv4)
|
|
- ssl://[host]:port or http@tcp://[host]:port (HTTP over SSL-encrypted IPv6)
|
|
- unix:///path/to/socket or http@unix:///path/to/socket (HTTP over UNIX socket)
|
|
|
|
If no port is specified, the default port of 8529 will be used.
|
|
|
|
* INCOMPATIBLE CHANGE: removed startup options "--server.require-keep-alive" and
|
|
"--server.secure-require-keep-alive".
|
|
The server will now behave as follows which should be more conforming to the
|
|
HTTP standard:
|
|
* if a client sends a "Connection: close" header, the server will close the
|
|
connection
|
|
* if a client sends a "Connection: keep-alive" header, the server will not
|
|
close the connection
|
|
* if a client does not send any "Connection" header, the server will assume
|
|
"keep-alive" if the request was an HTTP/1.1 request, and "close" if the
|
|
request was an HTTP/1.0 request
|
|
|
|
* (minimal) internal optimisations for HTTP request parsing and response header
|
|
handling
|
|
|
|
* fixed Unicode unescaping bugs for \f and surrogate pairs in BasicsC/strings.c
|
|
|
|
* changed implementation of TRI_BlockCrc32 algorithm to use 8 bytes at a time
|
|
|
|
* fixed issue #122: arangod doesn't start if <log.file> cannot be created
|
|
|
|
* fixed issue #121: wrong collection size reported
|
|
|
|
* fixed issue #98: Unable to change journalSize
|
|
|
|
* fixed issue #88: fds not closed
|
|
|
|
* fixed escaping of document data in HTML admin front end
|
|
|
|
* added HTTP basic authentication, this is always turned on
|
|
|
|
* added server startup option --server.disable-admin-interface to turn off the
|
|
HTML admin interface
|
|
|
|
* honor server startup option --database.maximal-journal-size when creating new
|
|
collections without specific journalsize setting. Previously, these
|
|
collections were always created with journal file sizes of 32 MB and the
|
|
--database.maximal-journal-size setting was ignored
|
|
|
|
* added server startup option --database.wait-for-sync to control the default
|
|
behavior
|
|
|
|
* renamed "--unit-tests" to "--javascript.unit-tests"
|
|
|
|
|
|
v1.0.alpha3 (2012-06-30)
|
|
------------------------
|
|
|
|
* fixed issue #116: createCollection=create option doesn't work
|
|
|
|
* fixed issue #115: Compilation issue under OSX 10.7 Lion & 10.8 Mountain Lion
|
|
(homebrew)
|
|
|
|
* fixed issue #114: image not found
|
|
|
|
* fixed issue #111: crash during "make unittests"
|
|
|
|
* fixed issue #104: client.js -> ARANGO_QUIET is not defined
|
|
|
|
|
|
v1.0.alpha2 (2012-06-24)
|
|
------------------------
|
|
|
|
* fixed issue #112: do not accept document with duplicate attribute names
|
|
|
|
* fixed issue #103: Should we cleanup the directory structure
|
|
|
|
* fixed issue #100: "count" attribute exists in cursor response with "count:
|
|
false"
|
|
|
|
* fixed issue #84 explain command
|
|
|
|
* added new MRuby version (2012-06-02)
|
|
|
|
* added --log.filter
|
|
|
|
* cleanup of command line options:
|
|
** --startup.directory => --javascript.startup-directory
|
|
** --quite => --quiet
|
|
** --gc.interval => --javascript.gc-interval
|
|
** --startup.modules-path => --javascript.modules-path
|
|
** --action.system-directory => --javascript.action-directory
|
|
** --javascript.action-threads => removed (is now the same pool as --server.threads)
|
|
|
|
* various bug-fixes
|
|
|
|
* support for import
|
|
|
|
* added option SKIP_RANGES=1 for make unittests
|
|
|
|
* fixed several range-related assertion failures in the AQL query optimiser
|
|
|
|
* fixed AQL query optimisations for some edge cases (e.g. nested subqueries with
|
|
invalid constant filter expressions)
|
|
|
|
|
|
v1.0.alpha1 (2012-05-28)
|
|
------------------------
|
|
|
|
Alpha Release of ArangoDB 1.0
|