ArangoDB v1.4.0-alpha1 Release Notes
Release Date: 2013-08-02 // about 12 years ago-
โ 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() 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 returnedundefined
. This value is not part of the JSON type system and this has caused some problems. Starting with ArangoDB 1.4, theDOCUMENT
function will returnnull
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() 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.- 0๏ธโฃ 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 totrue
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 isfalse
, meaning that if authentication is turned on, authentication is still required for all incoming requests. Only by setting the option totrue
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 tofalse
. 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)
andcollection.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 themaxIterations
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 AQLTRAVERSAL
andTRAVERSAL_TREE
functions by setting the same attribute. If traversals are not limited by the end user, a server-defined limit formaxIterations
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 capital letters fail
issue #512: Binded Parameters for LIMIT