arangodb (2.8.11-1.1) stable; urgency=low * Changed to Version 2.8.11 * fixed array index batch insertion issues for hash indexes that caused problems when no elements remained for insertion * fixed issue #1937 -- ArangoDB Maintainer Wed, 13 Jul 2016 12:25:35 +0000 arangodb (2.8.10-1.1) stable; urgency=low * Changed to Version 2.8.10 * make sure next local _rev value used for a document is at least as high as the _rev value supplied by external sources such as replication * make adding a collection in both read- and write-mode to a transaction behave as expected (write includes read). This prevents the `unregister collection used in transaction` error * fixed sometimes invalid result for `byExample(...).count()` when an index plus post-filtering was used * fixed "collection is a nullptr" issue when starting a traversal from a transaction * honor the value of startup option `--database.wait-for-sync` (that is used to control whether new collections are created with `waitForSync` set to `true` by default) also when creating collections via the HTTP API (and thus the ArangoShell). When creating a collection via these mechanisms, the option was ignored so far, which was inconsistent. * fixed issue #1826: arangosh --javascript.execute: internal error (geo index issue) * fixed issue #1823: Arango crashed hard executing very simple query on windows -- ArangoDB Maintainer Fri, 01 Jul 2016 14:41:09 +0000 arangodb (2.8.9-1.1) stable; urgency=low * Changed to Version 2.8.9 * fixed escaping and quoting of extra parameters for executables in Mac OS X App * added "waiting for" status variable to web interface collection figures view * fixed undefined behavior in query cache invaldation * fixed access to /_admin/statistics API in case statistics are disable via option `--server.disable-statistics` * Foxx manager will no longer fail hard when Foxx store is unreachable unless installing a service from the Foxx store (e.g. when behind a firewall or GitHub is unreachable). -- ArangoDB Maintainer Sat, 14 May 2016 08:33:36 +0100 arangodb (2.8.7-1.1) stable; urgency=low * Changed to Version 2.8.7 * optimized primary=>secondary failover * fix detection of TRUE for whole documents * expose the User-Agent http header since github requires it. * work with http servers that only send \n * fixed potential race condition between compactor and collector threads * fix removal of temporary directories on arangosh exit * javadoc-style comments in Foxx services are no longer interpreted as Foxx comments outside of controller/script/exports files (#1748) * removed remaining references to class syntax for Foxx Model and Repository from the documentation * added a safe-guard for corrupted master-pointer -- ArangoDB Maintainer Thu, 07 Apr 2016 21:10:46 +0000 arangodb (2.8.6-1.1) stable; urgency=low * Changed to Version 2.8.6 * arangosh can now execute JavaScript script files that contain a shebang in the first line of the file. This allows executing script files directly. Provided there is a script file `/path/to/script.js` with the shebang `#!arangosh --javascript.execute`: > cat /path/to/script.js #!arangosh --javascript.execute print("hello from script.js"); If the script file is made executable > chmod a+x /path/to/script.js it can be invoked on the shell directly and use arangosh for its execution: > /path/to/script.js hello from script.js This did not work in previous versions of ArangoDB, as the whole script contents (including the shebang) were treated as JavaScript code. Now shebangs in script files will now be ignored for all files passed to arangosh's `--javascript.execute` parameter. The alternative way of executing a JavaScript file with arangosh still works: > arangosh --javascript.execute /path/to/script.js hello from script.js * added missing reset of traversal state for nested traversals. The state of nested traversals (a traversal in an AQL query that was located in a repeatedly executed subquery or inside another FOR loop) was not reset properly, so that multiple invocations of the same nested traversal with different start vertices led to the nested traversal always using the start vertex provided on the first invocation. * fixed issue #1781: ArangoDB startup time increased tremendously * fixed issue #1783: SIGHUP should rotate the log -- ArangoDB Maintainer Wed, 23 Mar 2016 10:56:20 +0000 arangodb (2.8.5-1.1) stable; urgency=low * Changed to Version 2.8.5 * fixed issue #1765 (The webinterface should display the correct query time) and #1770 (Display ACTUAL query time in aardvark's AQL editor) * Windows: the unhandled exception handler now calls the windows logging facilities directly without locks. This fixes lockups on crashes from the logging framework. * improve nullptr handling in logger. * added new endpoint "srv://" for DNS service records * `org/arangodb/request` no longer sets the content-type header to the string "undefined" when no content-type header should be sent (issue #1776) -- ArangoDB Maintainer Thu, 10 Mar 2016 20:04:49 +0000 arangodb (2.8.4-1.1) stable; urgency=low * Changed to Version 2.8.4 * global modules are no longer incorrectly resolved outside the ArangoDB JavaScript directory or the Foxx service's root directory (issue #1577) * improved error messages from Foxx and JavaScript (issues #1564, #1565, #1744) -- ArangoDB Maintainer Tue, 01 Mar 2016 20:56:17 +0000 arangodb (2.8.3-1.1) stable; urgency=low * Changed to Version 2.8.3 * fixed AQL filter condition collapsing for deeply-nested cases, potentially enabling usage of indexes in some dedicated cases * added parentheses in AQL explain command output to correctly display precedence of logical and arithmetic operators * Foxx Model event listeners defined on the model are now correctly invoked by the Repository methods (issue #1665) * Deleting a Foxx service in the frontend should now always succeed even if the files no longer exist on the file system (issue #1358) * Routing actions loaded from the database no longer throw exceptions when trying to load other modules using "require" * The `org/arangodb/request` response object now sets a property `json` to the parsed JSON response body in addition to overwriting the `body` property when the request was made using the `json` option. * Improved Windows stability -- ArangoDB Maintainer Fri, 19 Feb 2016 13:56:22 +0000 arangodb (2.8.2-1.1) stable; urgency=low * Changed to Version 2.8.2 * the continuous replication applier will now prevent the master's WAL logfiles from being removed if they are still needed by the applier on the slave. This should help slaves that suffered from masters garbage collection WAL logfiles which would have been needed by the slave later. The initial synchronization will block removal of still needed WAL logfiles on the master for 10 minutes initially, and will extend this period when further requests are made to the master. Initial synchronization hands over its handle for blocking logfile removal to the continuous replication when started via the *setupReplication* function. In this case, continuous replication will extend the logfile removal blocking period for the required WAL logfiles when the slave makes additional requests. All handles that block logfile removal will time out automatically after at most 5 minutes should a master not be contacted by the slave anymore (e.g. in case the slave's replication is turned off, the slaves loses the connection to the master or the slave goes down). * added all-in-one function *setupReplication* to synchronize data from master to slave and start the continuous replication: require("org/arangodb/replication").setupReplication(configuration); The command will return when the initial synchronization is finished and the continuous replication has been started, or in case the initial synchronization has failed. If the initial synchronization is successful, the command will store the given configuration on the slave. It also configures the continuous replication to start automatically if the slave is restarted, i.e. *autoStart* is set to *true*. If the command is run while the slave's replication applier is already running, it will first stop the running applier, drop its configuration and do a resynchronization of data with the master. It will then use the provided configration, overwriting any previously existing replication configuration on the slave. The following example demonstrates how to use the command for setting up replication for the *_system* database. Note that it should be run on the slave and not the master: db._useDatabase("_system"); require("org/arangodb/replication").setupReplication({ endpoint: "tcp://master.domain.org:8529", username: "myuser", password: "mypasswd", -- ArangoDB Maintainer Tue, 09 Feb 2016 15:06:56 +0000 arangodb (2.8.1-1.1) stable; urgency=low * Changed to Version 2.8.1 * Improved AQL Pattern matching by allowing to specify a different traversal direction for one or many of the edge collections. FOR v, e, p IN OUTBOUND @start @@ec1, INBOUND @@ec2, @@ec3 will traverse *ec1* and *ec3* in the OUTBOUND direction and for *ec2* it will use the INBOUND direction. These directions can be combined in arbitrary ways, the direction defined after *IN [steps]* will we used as default direction and can be overriden for specific collections. This feature is only available for collection lists, it is not possible to combine it with graph names. * detect more types of transaction deadlocks early * fixed display of relational operators in traversal explain output * fixed undefined behavior in AQL function `PARSE_IDENTIFIER` * added "engines" field to Foxx services generated in the admin interface * added AQL function `IS_SAME_COLLECTION`: *IS_SAME_COLLECTION(collection, document)*: Return true if *document* has the same collection id as the collection specified in *collection*. *document* can either be a [document handle](../Glossary/README.md#document-handle) string, or a document with an *_id* attribute. The function does not validate whether the collection actually contains the specified document, but only compares the name of the specified collection with the collection name part of the specified document. If *document* is neither an object with an *id* attribute nor a *string* value, the function will return *null* and raise a warning. /* true */ IS_SAME_COLLECTION('_users', '_users/my-user') IS_SAME_COLLECTION('_users', { _id: '_users/my-user' }) /* false */ IS_SAME_COLLECTION('_users', 'foobar/baz') IS_SAME_COLLECTION('_users', { _id: 'something/else' }) -- ArangoDB Maintainer Fri, 29 Jan 2016 19:40:54 +0000 arangodb (2.8.0-1.1) stable; urgency=low * Changed to Version 2.8.0 * web interface: fixed a graph display bug concerning dashboard view * web interface: fixed several bugs during the dashboard initialize process * web interface: included several bugfixes: #1597, #1611, #1623 * AQL query optimizer now converts `LENGTH(collection-name)` to an optimized expression that returns the number of documents in a collection * adjusted the behavior of the expansion (`[*]`) operator in AQL for non-array values In ArangoDB 2.8, calling the expansion operator on a non-array value will always return an empty array. Previous versions of ArangoDB expanded non-array values by calling the `TO_ARRAY()` function for the value, which for example returned an array with a single value for boolean, numeric and string input values, and an array with the object's values for an object input value. This behavior was inconsistent with how the expansion operator works for the array indexes in 2.8, so the behavior is now unified: - if the left-hand side operand of `[*]` is an array, the array will be returned as is when calling `[*]` on it - if the left-hand side operand of `[*]` is not an array, an empty array will be returned by `[*]` AQL queries that rely on the old behavior can be changed by either calling `TO_ARRAY` explicitly or by using the `[*]` at the correct position. The following example query will change its result in 2.8 compared to 2.7: LET values = "foo" RETURN values[*] In 2.7 the query has returned the array `[ "foo" ]`, but in 2.8 it will return an empty array `[ ]`. To make it return the array `[ "foo" ]` again, an explicit `TO_ARRAY` function call is needed in 2.8 (which in this case allows the removal of the `[*]` operator altogether). This also works in 2.7: LET values = "foo" RETURN TO_ARRAY(values) Another example: LET values = [ { name: "foo" }, { name: "bar" } ] RETURN values[*].name[*] The above returned `[ [ "foo" ], [ "bar" ] ] in 2.7. In 2.8 it will return `[ [ ], [ ] ]`, because the value of `name` is not an array. To change the results to the 2.7 style, the query can be changed to LET values = [ { name: "foo" }, { name: "bar" } ] RETURN values[* RETURN TO_ARRAY(CURRENT.name)] The above also works in 2.7. The following types of queries won't change: LET values = [ 1, 2, 3 ] RETURN values[*] LET values = [ { name: "foo" }, { name: "bar" } ] RETURN values[*].name LET values = [ { names: [ "foo", "bar" ] }, { names: [ "baz" ] } ] RETURN values[*].names[*] LET values = [ { names: [ "foo", "bar" ] }, { names: [ "baz" ] } ] RETURN values[*].names[**] * slightly adjusted V8 garbage collection strategy so that collection eventually happens in all contexts that hold V8 external references to documents and collections. also adjusted default value of `--javascript.gc-frequency` from 10 seconds to 15 seconds, as less internal operations are carried out in JavaScript. * fixes for AQL optimizer and traversal * added `--create-collection-type` option to arangoimp This allows specifying the type of the collection to be created when `--create-collection` is set to `true`. * Foxx export cache should no longer break if a broken app is loaded in the web admin interface. -- ArangoDB Maintainer Sun, 03 Jan 2016 13:52:59 +0000 arangodb (2.8.0b3-1.1) stable; urgency=low * Changed to Version 2.8.0-beta3 * web interface: fixed a graph display bug concerning dashboard view * web interface: fixed several bugs during the dashboard initialize process * web interface: included several bugfixes: #1597, #1611, #1623 * AQL query optimizer now converts `LENGTH(collection-name)` to an optimized expression that returns the number of documents in a collection * adjusted the behavior of the expansion (`[*]`) operator in AQL for non-array values In ArangoDB 2.8, calling the expansion operator on a non-array value will always return an empty array. Previous versions of ArangoDB expanded non-array values by calling the `TO_ARRAY()` function for the value, which for example returned an array with a single value for boolean, numeric and string input values, and an array with the object's values for an object input value. This behavior was inconsistent with how the expansion operator works for the array indexes in 2.8, so the behavior is now unified: - if the left-hand side operand of `[*]` is an array, the array will be returned as is when calling `[*]` on it - if the left-hand side operand of `[*]` is not an array, an empty array will be returned by `[*]` AQL queries that rely on the old behavior can be changed by either calling `TO_ARRAY` explicitly or by using the `[*]` at the correct position. The following example query will change its result in 2.8 compared to 2.7: LET values = "foo" RETURN values[*] In 2.7 the query has returned the array `[ "foo" ]`, but in 2.8 it will return an empty array `[ ]`. To make it return the array `[ "foo" ]` again, an explicit `TO_ARRAY` function call is needed in 2.8 (which in this case allows the removal of the `[*]` operator altogether). This also works in 2.7: LET values = "foo" RETURN TO_ARRAY(values) Another example: LET values = [ { name: "foo" }, { name: "bar" } ] RETURN values[*].name[*] The above returned `[ [ "foo" ], [ "bar" ] ] in 2.7. In 2.8 it will return `[ [ ], [ ] ]`, because the value of `name` is not an array. To change the results to the 2.7 style, the query can be changed to LET values = [ { name: "foo" }, { name: "bar" } ] RETURN values[* RETURN TO_ARRAY(CURRENT.name)] The above also works in 2.7. The following types of queries won't change: LET values = [ 1, 2, 3 ] RETURN values[*] LET values = [ { name: "foo" }, { name: "bar" } ] RETURN values[*].name LET values = [ { names: [ "foo", "bar" ] }, { names: [ "baz" ] } ] RETURN values[*].names[*] LET values = [ { names: [ "foo", "bar" ] }, { names: [ "baz" ] } ] RETURN values[*].names[**] * slightly adjusted V8 garbage collection strategy so that collection eventually happens in all contexts that hold V8 external references to documents and collections. also adjusted default value of `--javascript.gc-frequency` from 10 seconds to 15 seconds, as less internal operations are carried out in JavaScript. * fixes for AQL optimizer and traversal * added `--create-collection-type` option to arangoimp This allows specifying the type of the collection to be created when `--create-collection` is set to `true`. * Foxx export cache should no longer break if a broken app is loaded in the web admin interface. -- ArangoDB Maintainer Mon, 28 Dec 2015 17:54:31 +0000 arangodb (2.8.0b2-1.1) stable; urgency=low * Changed to Version 2.8.0-beta2 * added AQL query optimizer rule "sort-in-values" This rule pre-sorts the right-hand side operand of the `IN` and `NOT IN` operators so the operation can use a binary search with logarithmic complexity instead of a linear search. The rule is applied when the right-hand side operand of an `IN` or `NOT IN` operator in a filter condition is a variable that is defined in a different loop/scope than the operator itself. Additionally, the filter condition must consist of solely the `IN` or `NOT IN` operation in order to avoid any side-effects. * changed collection status terminology in web interface for collections for which an unload request has been issued from `in the process of being unloaded` to `will be unloaded`. * unloading a collection via the web interface will now trigger garbage collection in all v8 contexts and force a WAL flush. This increases the chances of perfoming the unload faster. * added the following attributes to the result of `collection.figures()` and the corresponding HTTP API at `PUT /_api/collection//figures`: - `documentReferences`: The number of references to documents in datafiles that JavaScript code currently holds. This information can be used for debugging compaction and unload issues. - `waitingFor`: An optional string value that contains information about which object type is at the head of the collection's cleanup queue. This information can be used for debugging compaction and unload issues. - `compactionStatus.time`: The point in time the compaction for the collection was last executed. This information can be used for debugging compaction issues. - `compactionStatus.message`: The action that was performed when the compaction was last run for the collection. This information can be used for debugging compaction issues. Note: `waitingFor` and `compactionStatus` may be empty when called on a coordinator in a cluster. * the compaction will now provide queryable status info that can be used to track its progress. The compaction status is displayed in the web interface, too. * better error reporting for arangodump and arangorestore * arangodump will now fail by default when trying to dump edges that refer to already dropped collections. This can be circumvented by specifying the option `--force true` when invoking arangodump * fixed cluster upgrade procedure * the AQL functions `NEAR` and `WITHIN` now have stricter validations for their input parameters `limit`, `radius` and `distance`. They may now throw exceptions when invalid parameters are passed that may have not led to exceptions in previous versions. * deprecation warnings now log stack traces * Foxx: improved backwards compatibility with 2.5 and 2.6 - reverted Model and Repository back to non-ES6 "classes" because of compatibility issues when using the extend method with a constructor - removed deprecation warnings for extend and controller.del - restored deprecated method Model.toJSONSchema - restored deprecated `type`, `jwt` and `sessionStorageApp` options in Controller#activateSessions -- ArangoDB Maintainer Wed, 16 Dec 2015 12:18:44 +0000 arangodb (2.8.0b1-1.1) stable; urgency=low * Changed to Version 2.8.0-beta1 * added AQL function `IS_DATESTRING(value)` Returns true if *value* is a string that can be used in a date function. This includes partial dates such as *2015* or *2015-10* and strings containing invalid dates such as *2015-02-31*. The function will return false for all non-string values, even if some of them may be usable in date functions. -- ArangoDB Maintainer Sun, 06 Dec 2015 21:07:31 +0000 arangodb (2.8.0a1-1.1) stable; urgency=low * Changed to Version 2.8.0-alpha1 * added AQL keywords `GRAPH`, `OUTBOUND`, `INBOUND` and `ANY` for use in graph traversals, reserved AQL keyword `ALL` for future use Usage of these keywords as collection names, variable names or attribute names in AQL queries will not be possible without quoting. For example, the following AQL query will still work as it uses a quoted collection name and a quoted attribute name: FOR doc IN `OUTBOUND` RETURN doc.`any` * issue #1593: added AQL `POW` function for exponentation * added cluster execution site info in explain output for AQL queries * replication improvements: - added `autoResync` configuration parameter for continuous replication. When set to `true`, a replication slave will automatically trigger a full data re-synchronization with the master when the master cannot provide the log data the slave had asked for. Note that `autoResync` will only work when the option `requireFromPresent` is also set to `true` for the continuous replication, or when the continuous syncer is started and detects that no start tick is present. Automatic re-synchronization may transfer a lot of data from the master to the slave and may be expensive. It is therefore turned off by default. When turned off, the slave will never perform an automatic re-synchronization with the master. - added `idleMinWaitTime` and `idleMaxWaitTime` configuration parameters for continuous replication. These parameters can be used to control the minimum and maximum wait time the slave will (intentionally) idle and not poll for master log changes in case the master had sent the full logs already. The `idleMaxWaitTime` value will only be used when `adapativePolling` is set to `true`. When `adaptivePolling` is disable, only `idleMinWaitTime` will be used as a constant time span in which the slave will not poll the master for further changes. The default values are 0.5 seconds for `idleMinWaitTime` and 2.5 seconds for `idleMaxWaitTime`, which correspond to the hard-coded values used in previous versions of ArangoDB. - added `initialSyncMaxWaitTime` configuration parameter for initial and continuous replication This option controls the maximum wait time (in seconds) that the initial synchronization will wait for a response from the master when fetching initial collection data. If no response is received within this time period, the initial synchronization will give up and fail. This option is also relevant for continuous replication in case *autoResync* is set to *true*, as then the continuous replication may trigger a full data re-synchronization in case the master cannot the log data the slave had asked for. - HTTP requests sent from the slave to the master during initial synchronization will now be retried if they fail with connection problems. - the initial synchronization now logs its progress so it can be queried using the regular replication status check APIs. - added `async` attribute for `sync` and `syncCollection` operations called from the ArangoShell. Setthing this attribute to `true` will make the synchronization job on the server go into the background, so that the shell does not block. The status of the started asynchronous synchronization job can be queried from the ArangoShell like this: /* starts initial synchronization */ -- ArangoDB Maintainer Fri, 04 Dec 2015 07:59:44 +0000 arangodb (2.7.2-1.1) stable; urgency=low * Changed to Version 2.7.2 * replication improvements: - added `autoResync` configuration parameter for continuous replication. When set to `true`, a replication slave will automatically trigger a full data re-synchronization with the master when the master cannot provide the log data the slave had asked for. Note that `autoResync` will only work when the option `requireFromPresent` is also set to `true` for the continuous replication, or when the continuous syncer is started and detects that no start tick is present. Automatic re-synchronization may transfer a lot of data from the master to the slave and may be expensive. It is therefore turned off by default. When turned off, the slave will never perform an automatic re-synchronization with the master. - added `idleMinWaitTime` and `idleMaxWaitTime` configuration parameters for continuous replication. These parameters can be used to control the minimum and maximum wait time the slave will (intentionally) idle and not poll for master log changes in case the master had sent the full logs already. The `idleMaxWaitTime` value will only be used when `adapativePolling` is set to `true`. When `adaptivePolling` is disable, only `idleMinWaitTime` will be used as a constant time span in which the slave will not poll the master for further changes. The default values are 0.5 seconds for `idleMinWaitTime` and 2.5 seconds for `idleMaxWaitTime`, which correspond to the hard-coded values used in previous versions of ArangoDB. - added `initialSyncMaxWaitTime` configuration parameter for initial and continuous replication This option controls the maximum wait time (in seconds) that the initial synchronization will wait for a response from the master when fetching initial collection data. If no response is received within this time period, the initial synchronization will give up and fail. This option is also relevant for continuous replication in case *autoResync* is set to *true*, as then the continuous replication may trigger a full data re-synchronization in case the master cannot the log data the slave had asked for. - HTTP requests sent from the slave to the master during initial synchronization will now be retried if they fail with connection problems. - the initial synchronization now logs its progress so it can be queried using the regular replication status check APIs. * fixed non-deterministic query results in some cluster queries * added missing lock instruction for primary index in compactor size calculation * fixed issue #1589 * fixed issue #1583 * fixed undefined behavior when accessing the top level of a document with the `[*]` operator * fixed potentially invalid pointer access in shaper when the currently accessed document got re-located by the WAL collector at the very same time * Foxx: optional configuration options no longer log validation errors when assigned empty values (#1495) * Foxx: constructors provided to Repository and Model sub-classes via extend are now correctly called (#1592) * Foxx: services generated with the admin frontend now use unambiguous require paths. See https://www.arangodb.com/2015/11/foxx-module-resolution-will-change-in-2-8/ -- ArangoDB Maintainer Tue, 01 Dec 2015 17:18:00 +0000 arangodb (2.7.1-1.1) stable; urgency=low * Changed to Version 2.7.1 * switch to linenoise next generation * exclude `_apps` collection from replication The slave has its own `_apps` collection which it populates on server start. When replicating data from the master to the slave, the data from the master may clash with the slave's own data in the `_apps` collection. Excluding the `_apps` collection from replication avoids this. * disable replication appliers when starting in modes `--upgrade`, `--no-server` and `--check-upgrade` * more detailed output in arango-dfdb * fixed "no start tick" issue in replication applier This error could occur after restarting a slave server after a shutdown when no data was ever transferred from the master to the slave via the continuous replication * fixed problem during SSL client connection abort that led to scheduler thread staying at 100% CPU saturation * fixed potential segfault in AQL `NEIGHBORS` function implementation when C++ function -- ArangoDB Maintainer Sun, 08 Nov 2015 10:11:14 +0000 arangodb (2.7.0-1.1) stable; urgency=low * Changed to Version 2.7.0 * fixed replication with a 2.6 replication configuration and issues with a 2.6 master * raised default value of `--server.descriptors-minimum` to 1024 * allow Foxx apps to be installed underneath URL path `/_open/`, so they can be (intentionally) accessed without authentication. * added *allowImplicit* sub-attribute in collections declaration of transactions. The *allowImplicit* attributes allows making transactions fail should they read-access a collection that was not explicitly declared in the *collections* array of the transaction. * added "special" password ARANGODB_DEFAULT_ROOT_PASSWORD. If you pass ARANGODB_DEFAULT_ROOT_PASSWORD as password, it will read the password from the environment variable ARANGODB_DEFAULT_ROOT_PASSWORD -- ArangoDB Maintainer Thu, 08 Oct 2015 06:34:49 +0000 arangodb (2.7.0r3-1.1) stable; urgency=low * Changed to Version 2.7.0-rc3 * fixed replication with a 2.6 replication configuration and issues with a 2.6 master * raised default value of `--server.descriptors-minimum` to 1024 * allow Foxx apps to be installed underneath URL path `/_open/`, so they can be (intentionally) accessed without authentication. * added *allowImplicit* sub-attribute in collections declaration of transactions. The *allowImplicit* attributes allows making transactions fail should they read-access a collection that was not explicitly declared in the *collections* array of the transaction. * added "special" password ARANGODB_DEFAULT_ROOT_PASSWORD. If you pass ARANGODB_DEFAULT_ROOT_PASSWORD as password, it will read the password from the environment variable ARANGODB_DEFAULT_ROOT_PASSWORD -- ArangoDB Maintainer Mon, 05 Oct 2015 10:47:49 +0000 arangodb (2.7.0r2-1.1) stable; urgency=low * Changed to Version 2.7.0-rc2 * fix over-eager datafile compaction This should reduce the need to compact directly after loading a collection when a collection datafile contained many insertions and updates for the same documents. It should also prevent from re-compacting already merged datafiles in case not many changes were made. Compaction will also make fewer index lookups than before. * added `syncCollection()` function in module `org/arangodb/replication` This allows synchronizing the data of a single collection from a master to a slave server. Synchronization can either restore the whole collection by transferring all documents from the master to the slave, or incrementally by only transferring documents that differ. This is done by partitioning the collection's entire key space into smaller chunks and comparing the data chunk-wise between master and slave. Only chunks that are different will be re-transferred. The `syncCollection()` function can be used as follows: require("org/arangodb/replication").syncCollection(collectionName, options); e.g. require("org/arangodb/replication").syncCollection("myCollection", { endpoint: "tcp://127.0.0.1:8529", /* master */ username: "root", /* username for master */ password: "secret", /* password for master */ incremental: true /* use incremental mode */ }); * additionally allow the following characters in document keys: `(` `)` `+` `,` `=` `;` `$` `!` `*` `'` `%` * added extra AQL functions for date and time calculation and manipulation. These functions were contributed by GitHub users @CoDEmanX and @friday. A big thanks for their work! The following extra date functions are available from 2.7 on: * `DATE_DAYOFYEAR(date)`: Returns the day of year number of *date*. The return values range from 1 to 365, or 366 in a leap year respectively. * `DATE_ISOWEEK(date)`: Returns the ISO week date of *date*. The return values range from 1 to 53. Monday is considered the first day of the week. There are no fractional weeks, thus the last days in December may belong to the first week of the next year, and the first days in January may be part of the previous year's last week. * `DATE_LEAPYEAR(date)`: Returns whether the year of *date* is a leap year. * `DATE_QUARTER(date)`: Returns the quarter of the given date (1-based): * 1: January, February, March * 2: April, May, June * 3: July, August, September * 4: October, November, December - *DATE_DAYS_IN_MONTH(date)*: Returns the number of days in *date*'s month (28..31). * `DATE_ADD(date, amount, unit)`: Adds *amount* given in *unit* to *date* and returns the calculated date. *unit* can be either of the following to specify the time unit to add or subtract (case-insensitive): - y, year, years - m, month, months - w, week, weeks - d, day, days - h, hour, hours - i, minute, minutes - s, second, seconds - f, millisecond, milliseconds *amount* is the number of *unit*s to add (positive value) or subtract (negative value). * `DATE_SUBTRACT(date, amount, unit)`: Subtracts *amount* given in *unit* from *date* and returns the calculated date. It works the same as `DATE_ADD()`, except that it subtracts. It is equivalent to calling `DATE_ADD()` with a negative amount, except that `DATE_SUBTRACT()` can also subtract ISO durations. Note that negative ISO durations are not supported (i.e. starting with `-P`, like `-P1Y`). * `DATE_DIFF(date1, date2, unit, asFloat)`: Calculate the difference between two dates in given time *unit*, optionally with decimal places. Returns a negative value if *date1* is greater than *date2*. * `DATE_COMPARE(date1, date2, unitRangeStart, unitRangeEnd)`: Compare two partial dates and return true if they match, false otherwise. The parts to compare are defined by a range of time units. The full range is: years, months, days, hours, minutes, seconds, milliseconds. Pass the unit to start from as *unitRangeStart*, and the unit to end with as *unitRangeEnd*. All units in between will be compared. Leave out *unitRangeEnd* to only compare *unitRangeStart*. * `DATE_FORMAT(date, format)`: Format a date according to the given format string. It supports the following placeholders (case-insensitive): - %t: timestamp - %z: ISO date (0000-00-00T00:00:00.000Z) - %w: day of week (0..6) - %y: year (0000..9999) - %m: month (01..12) - %d: day (01..31) - %h: hour (00..23) - %i: minute (00..59) - %s: second (00..59) - %f: millisecond (000..999) - %x: day of year (001..366) - %k: ISO week date (01..53) - %l: leap year (0 or 1) - %q: quarter (1..4) - %a: days in month (28..31) - %n: English name of month (January..December) - %o: abbreviated English name of month (Jan..Dec) - %e: English name of weekday (Sunday..Saturday) - %g: abbreviated English name of weekday (Sun..Sat) - %%: literal % * new WAL logfiles and datafiles are now created non-sparse This prevents SIGBUS signals being raised when memory of a sparse datafile is accessed and the disk is full and the accessed file part is not actually disk-backed. In this case the mapped memory region is not necessarily backed by physical memory, and accessing the memory may raise SIGBUS and crash arangod. * the `internal.download()` function and the module `org/arangodb/request` used some internal library function that handled the sending of HTTP requests from inside of ArangoDB. This library unconditionally set an HTTP header `Accept-Encoding: gzip` in all outgoing HTTP requests. This has been fixed in 2.7, so `Accept-Encoding: gzip` is not set automatically anymore. Additionally, the header `User-Agent: ArangoDB` is not set automatically either. If client applications desire to send these headers, they are free to add it when constructing the requests using the `download` function or the request module. * fixed issue #1436: org/arangodb/request advertises deflate without supporting it * added template string generator function `aqlQuery` for generating AQL queries This can be used to generate safe AQL queries with JavaScript parameter -- ArangoDB Maintainer Wed, 23 Sep 2015 13:30:38 +0000 arangodb (2.7.0r1-1.1) stable; urgency=low * Changed to Version 2.7.0-rc1 * new WAL logfiles and datafiles are now created non-sparse This prevents SIGBUS signals being raised when memory of a sparse datafile is accessed and the disk is full and the accessed file part is not actually disk-backed. In this case the mapped memory region is not necessarily backed by physical memory, and accessing the memory may raise SIGBUS and crash arangod. * the `internal.download()` function and the module `org/arangodb/request` used some internal library function that handled the sending of HTTP requests from inside of ArangoDB. This library unconditionally set an HTTP header `Accept-Encoding: gzip` in all outgoing HTTP requests. This has been fixed in 2.7, so `Accept-Encoding: gzip` is not set automatically anymore. Additionally, the header `User-Agent: ArangoDB` is not set automatically either. If client applications desire to send these headers, they are free to add it when constructing the requests using the `download` function or the request module. * fixed issue #1436: org/arangodb/request advertises deflate without supporting it * added template string generator function `aqlQuery` for generating AQL queries This can be used to generate safe AQL queries with JavaScript parameter -- ArangoDB Maintainer Sat, 12 Sep 2015 08:57:51 +0200 arangodb (2.7.0a3-1.1) stable; urgency=low * Changed to Version 2.7.0-alpha3 * Linux startup scripts and systemd configuration for arangod now try to adjust the NOFILE (number of open files) limits for the process. The limit -- ArangoDB Maintainer Tue, 11 Aug 2015 22:22:51 +0200 arangodb (2.7.0a2-1.1) stable; urgency=low * Changed to Version 2.7.0-alpha2 * AQL query result cache The query result cache can optionally cache the complete results of all or selected AQL queries. It can be operated in the following modes: * `off`: the cache is disabled. No query results will be stored * `on`: the cache will store the results of all AQL queries unless their `cache` attribute flag is set to `false` * `demand`: the cache will store the results of AQL queries that have their `cache` attribute set to `true`, but will ignore all others The mode can be set at server startup using the `--database.query-cache-mode` configuration option and later changed at runtime. The following HTTP REST APIs have been added for controlling the query cache: * HTTP GET `/_api/query-cache/properties`: returns the global query cache configuration * HTTP PUT `/_api/query-cache/properties`: modifies the global query cache configuration * HTTP DELETE `/_api/query-cache`: invalidates all results in the query cache The following JavaScript functions have been added for controlling the query cache: * `require("org/arangodb/aql/cache").properties()`: returns the global query cache configuration * `require("org/arangodb/aql/cache").properties(properties)`: modifies the global query cache configuration * `require("org/arangodb/aql/cache").clear()`: invalidates all results in the query cache * do not link arangoimp against V8 * AQL functon call arguments optimization This will lead to arguments in function calls inside AQL queries will not be copied but passed by reference. This may speed up calls to functions with bigger argument values or queries that calls functions a lot of times. * upgraded V8 version to 4.3.61 * removed deprecated AQL `SKIPLIST` function. This function was introduced in older versions of ArangoDB with a less powerful query optimizer to retrieve data from a skiplist index using a `LIMIT` clause. It was marked as deprecated in ArangoDB 2.6. Since ArangoDB 2.3 the behavior of the `SKIPLIST` function can be emulated using regular AQL constructs, e.g. FOR doc IN @@collection FILTER doc.value >= @value SORT doc.value DESC LIMIT 1 RETURN doc * the `skip()` function for simple queries does not accept negative input any longer. This feature was deprecated in 2.6.0. * based REST API method PUT `/_api/simple/all` on the cursor API and make its use AQL internally. The change speeds up this REST API method and will lead to additional query information being returned by the REST API. Clients can use this extra information or ignore it. * Foxx Queue job success/failure handlers arguments have changed from `(jobId, jobData, result, jobFailures)` to `(result, jobData, job)`. * added Foxx Queue job options `repeatTimes`, `repeatUntil` and `repeatDelay`. * added Foxx manifest configuration type `password`. * fixed handling of default values in Foxx manifest configurations * fixed handling of optional parameters in Foxx manifest configurations * updated chai to 3.0. -- ArangoDB Maintainer Tue, 14 Jul 2015 20:23:27 +0200 arangodb (2.7.0a1-1.1) stable; urgency=low * Changed to Version 2.7.0-alpha1 * AQL query result cache The query result cache can optionally cache the complete results of all or selected AQL queries. It can be operated in the following modes: * `off`: the cache is disabled. No query results will be stored * `on`: the cache will store the results of all AQL queries unless their `cache` attribute flag is set to `false` * `demand`: the cache will store the results of AQL queries that have their `cache` attribute set to `true`, but will ignore all others The mode can be set at server startup using the `--database.query-cache-mode` configuration option and later changed at runtime. The following HTTP REST APIs have been added for controlling the query cache: * HTTP GET `/_api/query-cache/properties`: returns the global query cache configuration * HTTP PUT `/_api/query-cache/properties`: modifies the global query cache configuration * HTTP DELETE `/_api/query-cache`: invalidates all results in the query cache The following JavaScript functions have been added for controlling the query cache: * `require("org/arangodb/aql/cache").properties()`: returns the global query cache configuration * `require("org/arangodb/aql/cache").properties(properties)`: modifies the global query cache configuration * `require("org/arangodb/aql/cache").clear()`: invalidates all results in the query cache * do not link arangoimp against V8 * AQL functon call arguments optimization This will lead to arguments in function calls inside AQL queries will not be copied but passed by reference. This may speed up calls to functions with bigger argument values or queries that calls functions a lot of times. * upgraded V8 version to 4.3.61 * removed deprecated AQL `SKIPLIST` function. This function was introduced in older versions of ArangoDB with a less powerful query optimizer to retrieve data from a skiplist index using a `LIMIT` clause. It was marked as deprecated in ArangoDB 2.6. Since ArangoDB 2.3 the behavior of the `SKIPLIST` function can be emulated using regular AQL constructs, e.g. FOR doc IN @@collection FILTER doc.value >= @value SORT doc.value DESC LIMIT 1 RETURN doc * the `skip()` function for simple queries does not accept negative input any longer. This feature was deprecated in 2.6.0. * based REST API method PUT `/_api/simple/all` on the cursor API and make its use AQL internally. The change speeds up this REST API method and will lead to additional query information being returned by the REST API. Clients can use this extra information or ignore it. * Foxx Queue job success/failure handlers arguments have changed from `(jobId, jobData, result, jobFailures)` to `(result, jobData, job)`. * added Foxx Queue job options `repeatTimes`, `repeatUntil` and `repeatDelay`. * added Foxx manifest configuration type `password`. * fixed handling of default values in Foxx manifest configurations * fixed handling of optional parameters in Foxx manifest configurations * updated chai to 3.0. -- ArangoDB Maintainer Mon, 13 Jul 2015 16:41:44 +0200 arangodb (2.6.2-1.1) stable; urgency=low * Changed to Version 2.6.2 * fixed issue #1383: bindVars for HTTP API doesn't work with empty string * fixed handling of default values in Foxx manifest configurations * fixed handling of optional parameters in Foxx manifest configurations * fixed a reference error being thrown in Foxx queues when a function-based job type is used that is not available and no options object is passed to queue.push -- ArangoDB Maintainer Sun, 05 Jul 2015 14:54:04 +0200 arangodb (2.6.1-1.1) stable; urgency=low * Changed to Version 2.6.1 * Add missing swagger files to cmake build. fixes #1368 * fixed documentation errors -- ArangoDB Maintainer Fri, 26 Jun 2015 16:34:26 +0200 arangodb (2.6.0-1.1) stable; urgency=low * Changed to Version 2.6.0 * using negative values for `SimpleQuery.skip()` is deprecated. This functionality will be removed in future versions of ArangoDB. * The following simple query functions are now deprecated: * collection.near * collection.within * collection.geo * collection.fulltext * collection.range * collection.closedRange This also lead to the following REST API methods being deprecated from now on: * PUT /_api/simple/near * PUT /_api/simple/within * PUT /_api/simple/fulltext * PUT /_api/simple/range It is recommended to replace calls to these functions or APIs with equivalent AQL queries, which are more flexible because they can be combined with other operations: FOR doc IN NEAR(@@collection, @latitude, @longitude, @limit) RETURN doc FOR doc IN WITHIN(@@collection, @latitude, @longitude, @radius, @distanceAttributeName) RETURN doc FOR doc IN FULLTEXT(@@collection, @attributeName, @queryString, @limit) RETURN doc FOR doc IN @@collection FILTER doc.value >= @left && doc.value < @right LIMIT @skip, @limit RETURN doc` The above simple query functions and REST API methods may be removed in future versions of ArangoDB. * deprecated now-obsolete AQL `SKIPLIST` function The function was introduced in older versions of ArangoDB with a less powerful query optimizer to retrieve data from a skiplist index using a `LIMIT` clause. Since 2.3 the same goal can be achieved by using regular AQL constructs, e.g. FOR doc IN collection FILTER doc.value >= @value SORT doc.value DESC LIMIT 1 RETURN doc * fixed issues when switching the database inside tasks and during shutdown of database cursors These features were added during 2.6 alpha stage so the fixes affect devel/2.6-alpha builds only * issue #1360: improved foxx-manager help * added `--enable-tcmalloc` configure option. When this option is set, arangod and the client tools will be linked against tcmalloc, which replaces the system allocator. When the option is set, a tcmalloc library must be present on the system under one of the names `libtcmalloc`, `libtcmalloc_minimal` or `libtcmalloc_debug`. As this is a configure option, it is supported for manual builds on Linux-like systems only. tcmalloc support is currently experimental. * issue #1353: Windows: HTTP API - incorrect path in errorMessage * issue #1347: added option `--create-database` for arangorestore. Setting this option to `true` will now create the target database if it does not exist. When creating the target database, the username and passwords passed to arangorestore will be used to create an initial user for the new database. * issue #1345: advanced debug information for User Functions * issue #1341: Can't use bindvars in UPSERT * fixed vulnerability in JWT implementation. * changed default value of option `--database.ignore-datafile-errors` from `true` to `false` If the new default value of `false` is used, then arangod will refuse loading collections that contain datafiles with CRC mismatches or other errors. A collection with datafile errors will then become unavailable. This prevents follow up errors from happening. The only way to access such collection is to use the datafile debugger (arango-dfdb) and try to repair or truncate the datafile with it. If `--database.ignore-datafile-errors` is set to `true`, then collections will become available even if parts of their data cannot be loaded. This helps availability, but may cause (partial) data loss and follow up errors. * added server startup option `--server.session-timeout` for controlling the timeout of user sessions in the web interface * add sessions and cookie authentication for ArangoDB's web interface ArangoDB's built-in web interface now uses sessions. Session information ids are stored in cookies, so clients using the web interface must accept cookies in order to use it * web interface: display query execution time in AQL editor * web interface: renamed AQL query *submit* button to *execute* * web interface: added query explain feature in AQL editor * web interface: demo page added. only working if demo data is available, hidden otherwise * web interface: added support for custom app scripts with optional arguments and results * web interface: mounted apps that need to be configured are now indicated in the app overview * web interface: added button for running tests to app details * web interface: added button for configuring app dependencies to app details * web interface: upgraded API documentation to use Swagger 2 * INCOMPATIBLE CHANGE removed startup option `--log.severity` The docs for `--log.severity` mentioned lots of severities (e.g. `exception`, `technical`, `functional`, `development`) but only a few severities (e.g. `all`, `human`) were actually used, with `human` being the default and `all` enabling the additional logging of requests. So the option pretended to control a lot of things which it actually didn't. Additionally, the option `--log.requests-file` was around for a long time already, also controlling request logging. Because the `--log.severity` option effectively did not control that much, it was removed. A side effect of removing the option is that 2.5 installations which used `--log.severity all` will not log requests after the upgrade to 2.6. This can be adjusted by setting the `--log.requests-file` option. * add backtrace to fatal log events * added optional `limit` parameter for AQL function `FULLTEXT` * make fulltext index also index text values contained in direct sub-objects of the indexed attribute. Previous versions of ArangoDB only indexed the attribute value if it was a string. Sub-attributes of the index attribute were ignored when fulltext indexing. Now, if the index attribute value is an object, the object's values will each be included in the fulltext index if they are strings. If the index attribute value is an array, the array's values will each be included in the fulltext index if they are strings. For example, with a fulltext index present on the `translations` attribute, the following text -- ArangoDB Maintainer Sat, 20 Jun 2015 22:31:45 +0200 arangodb (2.6.0b4-1.1) stable; urgency=low * Changed to Version 2.6.0-beta4 * fixed issues when switching the database inside tasks and during shutdown of database cursors These features were added during 2.6 alpha stage so the fixes affect devel/2.6-alpha builds only * issue #1360: improved foxx-manager help * added `--enable-tcmalloc` configure option. When this option is set, arangod and the client tools will be linked against tcmalloc, which replaces the system allocator. When the option is set, a tcmalloc library must be present on the system under one of the names `libtcmalloc`, `libtcmalloc_minimal` or `libtcmalloc_debug`. As this is a configure option, it is supported for manual builds on Linux-like systems only. tcmalloc support is currently experimental. * issue #1353: Windows: HTTP API - incorrect path in errorMessage * issue #1347: added option `--create-database` for arangorestore. Setting this option to `true` will now create the target database if it does not exist. When creating the target database, the username and passwords passed to arangorestore will be used to create an initial user for the new database. * issue #1345: advanced debug information for User Functions * issue #1341: Can't use bindvars in UPSERT * fixed vulnerability in JWT implementation. * changed default value of option `--database.ignore-datafile-errors` from `true` to `false` If the new default value of `false` is used, then arangod will refuse loading collections that contain datafiles with CRC mismatches or other errors. A collection with datafile errors will then become unavailable. This prevents follow up errors from happening. The only way to access such collection is to use the datafile debugger (arango-dfdb) and try to repair or truncate the datafile with it. If `--database.ignore-datafile-errors` is set to `true`, then collections will become available even if parts of their data cannot be loaded. This helps availability, but may cause (partial) data loss and follow up errors. * added server startup option `--server.session-timeout` for controlling the timeout of user sessions in the web interface * add sessions and cookie authentication for ArangoDB's web interface ArangoDB's built-in web interface now uses sessions. Session information ids are stored in cookies, so clients using the web interface must accept cookies in order to use it * web interface: display query execution time in AQL editor * web interface: renamed AQL query *submit* button to *execute* * web interface: added query explain feature in AQL editor * web interface: demo page added. only working if demo data is available, hidden otherwise * web interface: added support for custom app scripts with optional arguments and results * web interface: mounted apps that need to be configured are now indicated in the app overview * web interface: added button for running tests to app details * web interface: added button for configuring app dependencies to app details * web interface: upgraded API documentation to use Swagger 2 * INCOMPATIBLE CHANGE removed startup option `--log.severity` The docs for `--log.severity` mentioned lots of severities (e.g. `exception`, `technical`, `functional`, `development`) but only a few severities (e.g. `all`, `human`) were actually used, with `human` being the default and `all` enabling the additional logging of requests. So the option pretended to control a lot of things which it actually didn't. Additionally, the option `--log.requests-file` was around for a long time already, also controlling request logging. Because the `--log.severity` option effectively did not control that much, it was removed. A side effect of removing the option is that 2.5 installations which used `--log.severity all` will not log requests after the upgrade to 2.6. This can be adjusted by setting the `--log.requests-file` option. * add backtrace to fatal log events * added optional `limit` parameter for AQL function `FULLTEXT` * make fulltext index also index text values contained in direct sub-objects of the indexed attribute. Previous versions of ArangoDB only indexed the attribute value if it was a string. Sub-attributes of the index attribute were ignored when fulltext indexing. Now, if the index attribute value is an object, the object's values will each be included in the fulltext index if they are strings. If the index attribute value is an array, the array's values will each be included in the fulltext index if they are strings. For example, with a fulltext index present on the `translations` attribute, the following text -- ArangoDB Maintainer Wed, 17 Jun 2015 01:07:50 +0200 arangodb (2.6.0b3-1.1) stable; urgency=low * Changed to Version 2.6.0-beta3 * fixed issues when switching the database inside tasks and during shutdown of database cursors These features were added during 2.6 alpha stage so the fixes affect devel/2.6-alpha builds only * issue #1360: improved foxx-manager help * added `--enable-tcmalloc` configure option. When this option is set, arangod and the client tools will be linked against tcmalloc, which replaces the system allocator. When the option is set, a tcmalloc library must be present on the system under one of the names `libtcmalloc`, `libtcmalloc_minimal` or `libtcmalloc_debug`. As this is a configure option, it is supported for manual builds on Linux-like systems only. tcmalloc support is currently experimental. * issue #1353: Windows: HTTP API - incorrect path in errorMessage * issue #1347: added option `--create-database` for arangorestore. Setting this option to `true` will now create the target database if it does not exist. When creating the target database, the username and passwords passed to arangorestore will be used to create an initial user for the new database. * issue #1345: advanced debug information for User Functions * issue #1341: Can't use bindvars in UPSERT * fixed vulnerability in JWT implementation. * changed default value of option `--database.ignore-datafile-errors` from `true` to `false` If the new default value of `false` is used, then arangod will refuse loading collections that contain datafiles with CRC mismatches or other errors. A collection with datafile errors will then become unavailable. This prevents follow up errors from happening. The only way to access such collection is to use the datafile debugger (arango-dfdb) and try to repair or truncate the datafile with it. If `--database.ignore-datafile-errors` is set to `true`, then collections will become available even if parts of their data cannot be loaded. This helps availability, but may cause (partial) data loss and follow up errors. * added server startup option `--server.session-timeout` for controlling the timeout of user sessions in the web interface * add sessions and cookie authentication for ArangoDB's web interface ArangoDB's built-in web interface now uses sessions. Session information ids are stored in cookies, so clients using the web interface must accept cookies in order to use it * web interface: display query execution time in AQL editor * web interface: renamed AQL query *submit* button to *execute* * web interface: added query explain feature in AQL editor * web interface: demo page added. only working if demo data is available, hidden otherwise * web interface: added support for custom app scripts with optional arguments and results * web interface: mounted apps that need to be configured are now indicated in the app overview * web interface: added button for running tests to app details * web interface: added button for configuring app dependencies to app details * web interface: upgraded API documentation to use Swagger 2 * INCOMPATIBLE CHANGE removed startup option `--log.severity` The docs for `--log.severity` mentioned lots of severities (e.g. `exception`, `technical`, `functional`, `development`) but only a few severities (e.g. `all`, `human`) were actually used, with `human` being the default and `all` enabling the additional logging of requests. So the option pretended to control a lot of things which it actually didn't. Additionally, the option `--log.requests-file` was around for a long time already, also controlling request logging. Because the `--log.severity` option effectively did not control that much, it was removed. A side effect of removing the option is that 2.5 installations which used `--log.severity all` will not log requests after the upgrade to 2.6. This can be adjusted by setting the `--log.requests-file` option. * add backtrace to fatal log events * added optional `limit` parameter for AQL function `FULLTEXT` * make fulltext index also index text values contained in direct sub-objects of the indexed attribute. Previous versions of ArangoDB only indexed the attribute value if it was a string. Sub-attributes of the index attribute were ignored when fulltext indexing. Now, if the index attribute value is an object, the object's values will each be included in the fulltext index if they are strings. If the index attribute value is an array, the array's values will each be included in the fulltext index if they are strings. For example, with a fulltext index present on the `translations` attribute, the following text -- ArangoDB Maintainer Tue, 16 Jun 2015 15:22:16 +0200 arangodb (2.6.0b1-1.1) stable; urgency=low * Changed to Version 2.6.0-beta1 * fixed issues when switching the database inside tasks and during shutdown of database cursors These features were added during 2.6 alpha stage so the fixes affect devel/2.6-alpha builds only * issue #1360: improved foxx-manager help * added `--enable-tcmalloc` configure option. When this option is set, arangod and the client tools will be linked against tcmalloc, which replaces the system allocator. When the option is set, a tcmalloc library must be present on the system under one of the names `libtcmalloc`, `libtcmalloc_minimal` or `libtcmalloc_debug`. As this is a configure option, it is supported for manual builds on Linux-like systems only. tcmalloc support is currently experimental. * issue #1353: Windows: HTTP API - incorrect path in errorMessage * issue #1347: added option `--create-database` for arangorestore. Setting this option to `true` will now create the target database if it does not exist. When creating the target database, the username and passwords passed to arangorestore will be used to create an initial user for the new database. * issue #1345: advanced debug information for User Functions * issue #1341: Can't use bindvars in UPSERT * fixed vulnerability in JWT implementation. * changed default value of option `--database.ignore-datafile-errors` from `true` to `false` If the new default value of `false` is used, then arangod will refuse loading collections that contain datafiles with CRC mismatches or other errors. A collection with datafile errors will then become unavailable. This prevents follow up errors from happening. The only way to access such collection is to use the datafile debugger (arango-dfdb) and try to repair or truncate the datafile with it. If `--database.ignore-datafile-errors` is set to `true`, then collections will become available even if parts of their data cannot be loaded. This helps availability, but may cause (partial) data loss and follow up errors. * added server startup option `--server.session-timeout` for controlling the timeout of user sessions in the web interface * add sessions and cookie authentication for ArangoDB's web interface ArangoDB's built-in web interface now uses sessions. Session information ids are stored in cookies, so clients using the web interface must accept cookies in order to use it * web interface: display query execution time in AQL editor * web interface: renamed AQL query *submit* button to *execute* * web interface: added query explain feature in AQL editor * web interface: demo page added. only working if demo data is available, hidden otherwise * web interface: added support for custom app scripts with optional arguments and results * web interface: mounted apps that need to be configured are now indicated in the app overview * web interface: added button for running tests to app details * web interface: added button for configuring app dependencies to app details * web interface: upgraded API documentation to use Swagger 2 * INCOMPATIBLE CHANGE removed startup option `--log.severity` The docs for `--log.severity` mentioned lots of severities (e.g. `exception`, `technical`, `functional`, `development`) but only a few severities (e.g. `all`, `human`) were actually used, with `human` being the default and `all` enabling the additional logging of requests. So the option pretended to control a lot of things which it actually didn't. Additionally, the option `--log.requests-file` was around for a long time already, also controlling request logging. Because the `--log.severity` option effectively did not control that much, it was removed. A side effect of removing the option is that 2.5 installations which used `--log.severity all` will not log requests after the upgrade to 2.6. This can be adjusted by setting the `--log.requests-file` option. * add backtrace to fatal log events * added optional `limit` parameter for AQL function `FULLTEXT` * make fulltext index also index text values contained in direct sub-objects of the indexed attribute. Previous versions of ArangoDB only indexed the attribute value if it was a string. Sub-attributes of the index attribute were ignored when fulltext indexing. Now, if the index attribute value is an object, the object's values will each be included in the fulltext index if they are strings. If the index attribute value is an array, the array's values will each be included in the fulltext index if they are strings. For example, with a fulltext index present on the `translations` attribute, the following text -- ArangoDB Maintainer Mon, 15 Jun 2015 00:47:03 +0200 arangodb (2.6.0a5-1.1) stable; urgency=low * Changed to Version 2.6.0-alpha5 * fixed issues when switching the database inside tasks and during shutdown of database cursors These features were added during 2.6 alpha stage so the fixes affect devel/2.6-alpha builds only * issue #1360: improved foxx-manager help * added `--enable-tcmalloc` configure option. When this option is set, arangod and the client tools will be linked against tcmalloc, which replaces the system allocator. When the option is set, a tcmalloc library must be present on the system under one of the names `libtcmalloc`, `libtcmalloc_minimal` or `libtcmalloc_debug`. As this is a configure option, it is supported for manual builds on Linux-like systems only. tcmalloc support is currently experimental. * issue #1353: Windows: HTTP API - incorrect path in errorMessage * issue #1347: added option `--create-database` for arangorestore. Setting this option to `true` will now create the target database if it does not exist. When creating the target database, the username and passwords passed to arangorestore will be used to create an initial user for the new database. * issue #1345: advanced debug information for User Functions * issue #1341: Can't use bindvars in UPSERT * fixed vulnerability in JWT implementation. * changed default value of option `--database.ignore-datafile-errors` from `true` to `false` If the new default value of `false` is used, then arangod will refuse loading collections that contain datafiles with CRC mismatches or other errors. A collection with datafile errors will then become unavailable. This prevents follow up errors from happening. The only way to access such collection is to use the datafile debugger (arango-dfdb) and try to repair or truncate the datafile with it. If `--database.ignore-datafile-errors` is set to `true`, then collections will become available even if parts of their data cannot be loaded. This helps availability, but may cause (partial) data loss and follow up errors. * added server startup option `--server.session-timeout` for controlling the timeout of user sessions in the web interface * add sessions and cookie authentication for ArangoDB's web interface ArangoDB's built-in web interface now uses sessions. Session information ids are stored in cookies, so clients using the web interface must accept cookies in order to use it * web interface: display query execution time in AQL editor * web interface: renamed AQL query *submit* button to *execute* * web interface: added query explain feature in AQL editor * web interface: demo page added. only working if demo data is available, hidden otherwise * web interface: added support for custom app scripts with optional arguments and results * web interface: mounted apps that need to be configured are now indicated in the app overview * web interface: added button for running tests to app details * web interface: added button for configuring app dependencies to app details * web interface: upgraded API documentation to use Swagger 2 * INCOMPATIBLE CHANGE removed startup option `--log.severity` The docs for `--log.severity` mentioned lots of severities (e.g. `exception`, `technical`, `functional`, `development`) but only a few severities (e.g. `all`, `human`) were actually used, with `human` being the default and `all` enabling the additional logging of requests. So the option pretended to control a lot of things which it actually didn't. Additionally, the option `--log.requests-file` was around for a long time already, also controlling request logging. Because the `--log.severity` option effectively did not control that much, it was removed. A side effect of removing the option is that 2.5 installations which used `--log.severity all` will not log requests after the upgrade to 2.6. This can be adjusted by setting the `--log.requests-file` option. * add backtrace to fatal log events * added optional `limit` parameter for AQL function `FULLTEXT` * make fulltext index also index text values contained in direct sub-objects of the indexed attribute. Previous versions of ArangoDB only indexed the attribute value if it was a string. Sub-attributes of the index attribute were ignored when fulltext indexing. Now, if the index attribute value is an object, the object's values will each be included in the fulltext index if they are strings. If the index attribute value is an array, the array's values will each be included in the fulltext index if they are strings. For example, with a fulltext index present on the `translations` attribute, the following text -- ArangoDB Maintainer Fri, 12 Jun 2015 22:22:18 +0200 arangodb (2.6.0a4-1.1) stable; urgency=low * Changed to Version 2.6.0-alpha4 * fixed issues when switching the database inside tasks and during shutdown of database cursors These features were added during 2.6 alpha stage so the fixes affect devel/2.6-alpha builds only * issue #1360: improved foxx-manager help * added `--enable-tcmalloc` configure option. When this option is set, arangod and the client tools will be linked against tcmalloc, which replaces the system allocator. When the option is set, a tcmalloc library must be present on the system under one of the names `libtcmalloc`, `libtcmalloc_minimal` or `libtcmalloc_debug`. As this is a configure option, it is supported for manual builds on Linux-like systems only. tcmalloc support is currently experimental. * issue #1353: Windows: HTTP API - incorrect path in errorMessage * issue #1347: added option `--create-database` for arangorestore. Setting this option to `true` will now create the target database if it does not exist. When creating the target database, the username and passwords passed to arangorestore will be used to create an initial user for the new database. * issue #1345: advanced debug information for User Functions * issue #1341: Can't use bindvars in UPSERT * fixed vulnerability in JWT implementation. * changed default value of option `--database.ignore-datafile-errors` from `true` to `false` If the new default value of `false` is used, then arangod will refuse loading collections that contain datafiles with CRC mismatches or other errors. A collection with datafile errors will then become unavailable. This prevents follow up errors from happening. The only way to access such collection is to use the datafile debugger (arango-dfdb) and try to repair or truncate the datafile with it. If `--database.ignore-datafile-errors` is set to `true`, then collections will become available even if parts of their data cannot be loaded. This helps availability, but may cause (partial) data loss and follow up errors. * added server startup option `--server.session-timeout` for controlling the timeout of user sessions in the web interface * add sessions and cookie authentication for ArangoDB's web interface ArangoDB's built-in web interface now uses sessions. Session information ids are stored in cookies, so clients using the web interface must accept cookies in order to use it * web interface: display query execution time in AQL editor * web interface: renamed AQL query *submit* button to *execute* * web interface: added query explain feature in AQL editor * web interface: demo page added. only working if demo data is available, hidden otherwise * web interface: added support for custom app scripts with optional arguments and results * web interface: mounted apps that need to be configured are now indicated in the app overview * web interface: added button for running tests to app details * web interface: added button for configuring app dependencies to app details * web interface: upgraded API documentation to use Swagger 2 * removed startup option `--log.severity` * add backtrace to fatal log events * added optional `limit` parameter for AQL function `FULLTEXT` * make fulltext index also index text values contained in direct sub-objects of the indexed attribute. Previous versions of ArangoDB only indexed the attribute value if it was a string. Sub-attributes of the index attribute were ignored when fulltext indexing. Now, if the index attribute value is an object, the object's values will each be included in the fulltext index if they are strings. If the index attribute value is an array, the array's values will each be included in the fulltext index if they are strings. For example, with a fulltext index present on the `translations` attribute, the following text -- ArangoDB Maintainer Wed, 10 Jun 2015 18:37:57 +0200 arangodb (2.6.0a3-1.1) stable; urgency=low * Changed to Version 2.6.0-alpha3 * issue #1347: added option `--create-database` for arangorestore. Setting this option to `true` will now create the target database if it does not exist. When creating the target database, the username and passwords passed to arangorestore will be used to create an initial user for the new database. * issue #1345: advanced debug information for User Functions * issue #1341: Can't use bindvars in UPSERT * fixed vulnerability in JWT implementation. * changed default value of option `--database.ignore-datafile-errors` from `true` to `false` If the new default value of `false` is used, then arangod will refuse loading collections that contain datafiles with CRC mismatches or other errors. A collection with datafile errors will then become unavailable. This prevents follow up errors from happening. The only way to access such collection is to use the datafile debugger (arango-dfdb) and try to repair or truncate the datafile with it. If `--database.ignore-datafile-errors` is set to `true`, then collections will become available even if parts of their data cannot be loaded. This helps availability, but may cause (partial) data loss and follow up errors. * added server startup option `--server.session-timeout` for controlling the timeout of user sessions in the web interface * add sessions and cookie authentication for ArangoDB's web interface ArangoDB's built-in web interface now uses sessions. Session information ids are stored in cookies, so clients using the web interface must accept cookies in order to use it * web interface: display query execution time in AQL editor * web interface: renamed AQL query *submit* button to *execute* * web interface: added query explain feature in AQL editor * web interface: demo page added. only working if demo data is available, hidden otherwise * removed startup option `--log.severity` * add backtrace to fatal log events * added optional `limit` parameter for AQL function `FULLTEXT` * make fulltext index also index text values contained in direct sub-objects of the indexed attribute. Previous versions of ArangoDB only indexed the attribute value if it was a string. Sub-attributes of the index attribute were ignored when fulltext indexing. Now, if the index attribute value is an object, the object's values will each be included in the fulltext index if they are strings. If the index attribute value is an array, the array's values will each be included in the fulltext index if they are strings. For example, with a fulltext index present on the `translations` attribute, the following text -- ArangoDB Maintainer Sat, 30 May 2015 18:06:38 +0200 arangodb (2.6.0b3-1.1) stable; urgency=low * Changed to Version 2.6.0-beta3 * changed default value of option `--database.ignore-datafile-errors` from `true` to `false` If the new default value of `false` is used, then arangod will refuse loading collections that contain datafiles with CRC mismatches or other errors. A collection with datafile errors will then become unavailable. This prevents follow up errors from happening. The only way to access such collection is to use the datafile debugger (arango-dfdb) and try to repair or truncate the datafile with it. If `--database.ignore-datafile-errors` is set to `true`, then collections will become available even if parts of their data cannot be loaded. This helps availability, but may cause (partial) data loss and follow up errors. * added server startup option `--server.session-timeout` for controlling the timeout of user sessions in the web interface * add sessions and cookie authentication for ArangoDB's web interface ArangoDB's built-in web interface now uses sessions. Session information ids are stored in cookies, so clients using the web interface must accept cookies in order to use it * web interface: display query execution time in AQL editor * web interface: renamed AQL query *submit* button to *execute* * web interface: added query explain feature in AQL editor * web interface: demo page added. only working if demo data is available, hidden otherwise * removed startup option `--log.severity` * add backtrace to fatal log events * added optional `limit` parameter for AQL function `FULLTEXT` * make fulltext index also index text values contained in direct sub-objects of the indexed attribute. Previous versions of ArangoDB only indexed the attribute value if it was a string. Sub-attributes of the index attribute were ignored when fulltext indexing. Now, if the index attribute value is an object, the object's values will each be included in the fulltext index if they are strings. If the index attribute value is an array, the array's values will each be included in the fulltext index if they are strings. For example, with a fulltext index present on the `translations` attribute, the following text -- ArangoDB Maintainer Tue, 26 May 2015 18:19:54 +0200 arangodb (2.6.0a2-1.1) stable; urgency=low * Changed to Version 2.6.0-alpha2 * front-end: display of query execution time * front-end: demo page added. only working if demo data is available. * front-end: renamed query submit to execute * front-end: added query explain feature * removed startup option `--log.severity` * added optional `limit` parameter for AQL function `FULLTEXT` * make fulltext index also index text values that are contained in direct sub-objects of the indexed attribute. Previous versions of ArangoDB only indexed the attribute value if it was a string. Sub-attributes of the index attribute were ignored when fulltext indexing. Now, if the index attribute value is an object, the object's values will each be included in the fulltext index if they are strings. If the index attribute value is an array, the array's values will each be included in the fulltext index if they are strings. For example, with a fulltext index present on the `translations` attribute, the following text -- ArangoDB Maintainer Wed, 20 May 2015 15:45:15 +0200 arangodb (2.5.4-1.1) stable; urgency=low * Changed to Version 2.5.4 * added startup option `--log.performance`: specifying this option at startup will log performance-related info messages, mainly timings via the regular logging mechanisms * cluster fixes * fixe for recursive copy under windows -- ArangoDB Maintainer Thu, 14 May 2015 17:52:58 +0200 arangodb (2.5.3-1.1) stable; urgency=low * Changed to Version 2.5.3 * issue #1322: strange AQL result * issue #1318: Inconsistent db._create() syntax * issue #1315: queries to a collection fail with an empty response if the collection contains specific JSON data * issue #1300: Make arangodump not fail if target directory exists but is empty * allow specifying higher values than SOMAXCONN for `--server.backlog-size` Previously, arangod would not start when a `--server.backlog-size` value was specified that was higher than the platform's SOMAXCONN header value. Now, arangod will use the user-provided value for `--server.backlog-size` and pass it to the listen system call even if the value is higher than SOMAXCONN. If the user-provided value is higher than SOMAXCONN, arangod will log a warning on startup. -- ArangoDB Maintainer Thu, 30 Apr 2015 00:54:31 +0200 arangodb (2.5.2-1.1) stable; urgency=low * Changed to Version 2.5.2 * modules stored in _modules are automatically flushed when changed * added missing query-id parameter in documentation of HTTP DELETE `/_api/query` endpoint * added iterator for edge index in AQL queries this change may lead to less edges being read when used together with a LIMIT clause * make graph viewer in web interface issue less expensive queries for determining a random vertex from the graph, and for determining vertex attributes * issue #1285: syntax error, unexpected $undefined near '@_to RETURN obj this allows AQL bind parameter names to also start with underscores * moved /_api/query to C++ * issue #1289: Foxx models created from database documents expose an internal method * added `Foxx.Repository#exists` * parallelise initialization of V8 context in multiple threads * fixed a possible crash when the debug-level was TRACE * cluster: do not initialize statistics collection on each coordinator, this fixes a race condition at startup * cluster: fix a startup race w.r.t. the _configuration collection * search for db:// JavaScript modules only after all local files have been considered, this speeds up the require command in a cluster considerably * general cluster speedup in certain areas -- ArangoDB Maintainer Fri, 10 Apr 2015 15:36:05 +0200 arangodb (2.5.1-1.1) stable; urgency=low * Changed to Version 2.5.1 * added option `--database.ignore-logfile-errors` This option controls how collection datafiles with a CRC mismatch are treated. If set to `false`, CRC mismatch errors in collection datafiles will lead to a collection not being loaded at all. If a collection needs to be loaded during WAL recovery, the WAL recovery will also abort (if not forced with `--wal.ignore-recovery-errors true`). Setting this flag to `false` protects users from unintentionally using a collection with corrupted datafiles, from which only a subset of the original data can be recovered. If set to `true`, CRC mismatch errors in collection datafiles will lead to the datafile being partially loaded. All data up to until the mismatch will be loaded. This will enable users to continue with a collection datafiles that are corrupted, but will result in only a partial load of the data. The WAL recovery will still abort when encountering a collection with a corrupted datafile, at least if `--wal.ignore-recovery-errors` is not set to `true`. The default value is *true*, so for collections with corrupted datafiles there might be partial data loads once the WAL recovery has finished. If the WAL recovery will need to load a collection with a corrupted datafile, it will still stop when using the default values. * INCOMPATIBLE CHANGE: make the arangod server refuse to start if during startup it finds a non-readable `parameter.json` file for a database or a collection. Stopping the startup process in this case requires manual intervention (fixing the unreadable files), but prevents follow-up errors due to ignored databases or collections from happening. * datafiles and `parameter.json` files written by arangod are now created with read and write privileges for the arangod process user, and with read and write prileges for the arangod process group. Previously, these files were created with user read and write permissions only. * INCOMPATIBLE CHANGE: abort WAL recovery if one of the collection's datafiles cannot be opened * INCOMPATIBLE CHANGE: never try to raise the privileges after dropping them, this can lead to a race condition while running the recovery If you require to run ArangoDB on a port lower than 1024, you must run ArangoDB as root. * fixed inefficiencies in `remove` methods of general-graph module * added option `--database.slow-query-threshold` for controlling the default AQL slow query threshold value on server start * add system error strings for windows on many places * rework service startup so we anounce 'RUNNING' only when we're finished starting. * use the windows eventlog for FATAL and ERROR - log messages * fix service handling in NSIS windows installer, specify human readable name * add the ICU_DATA environment variable to the fatal error messages * fixed issue #1265: arangod crashed with SIGSEGV * fixed issue #1241: Wildcards in examples -- ArangoDB Maintainer Fri, 20 Mar 2015 00:36:29 +0100 arangodb (2.5.0-1.1) stable; urgency=low * Changed to Version 2.5.0 * installer fixes for Windows * fix for downloading Foxx -- ArangoDB Maintainer Tue, 10 Mar 2015 16:59:45 +0100 arangodb (2.5.0b4-1.1) stable; urgency=low * Changed to Version 2.5.0-beta4 * fixed issue #1247: debian init script problems -- ArangoDB Maintainer Thu, 05 Mar 2015 16:30:45 +0100 arangodb (2.5.0b3-1.1) stable; urgency=low * Changed to Version 2.5.0-beta3 * fix windows install path calculation in arango * fix windows logging of long strings * fix possible undefinedness of const strings in windows -- ArangoDB Maintainer Fri, 27 Feb 2015 18:36:49 +0100 arangodb (2.5.0b2-1.1) stable; urgency=low * Changed to Version 2.5.0-beta2 * fixed issue #1230: API: document/col-name/_key and cursor return different floats * front-end: dashboard tries not to (re)load statistics if user has no access * V8: Upgrade to version 3.31.74.1 * etcd: Upgrade to version 2.0 - This requires go 1.3 to compile at least. * refuse to startup if ICU wasn't initialized, this will i.e. prevent errors from being printed, and libraries from being loaded. * front-end: unwanted removal of index table header after creating new index * fixed issue #1248: chrome: applications filtering not working * fixed issue #1198: queries remain in aql editor (front-end) if you navigate through different tabs * Simplify usage of Foxx Thanks to our user feedback we learned that Foxx is a powerful, yet rather complicated concept. With this release we tried to make it less complicated while keeping all its strength. That includes a rewrite of the documentation as well as some code changes as listed below: * Moved Foxx applications to a different folder. The naming convention now is: /_db///APP Before it was: /databases//: This caused some trouble as apps where cached based on name and version and updates did not apply. Hence the path on filesystem and the app's access URL had no relation to one another. Now the path on filesystem is identical to the URL (except for slashes and the appended APP) * Rewrite of Foxx routing The routing of Foxx has been exposed to major internal changes we adjusted because of user feedback. This allows us to set the development mode per mountpoint without having to change pathes and hold apps at seperate locations. * Foxx Development mode The development mode used until 2.4 is gone. It has been replaced by a much more mature version. This includes the deprecation of the javascript.dev-app-path parameter, which is useless since 2.5. Instead of having two separate app directories for production and development, apps now reside in one place, which is used for production as well as for development. Apps can still be put into development mode, changing their behavior compared to production mode. Development mode apps are still reread from disk at every request, and still they ship more debug output. This change has also made the startup options `--javascript.frontend-development-mode` and `--javascript.dev-app-path` obsolete. The former option will not have any effect when set, and the latter option is only read and used during the upgrade to 2.5 and does not have any effects later. * Foxx install process Installing Foxx apps has been a two step process: import them into ArangoDB and mount them at a specific mountpoint. These operations have been joined together. You can install an app at one mountpoint, that's it. No fetch, mount, unmount, purge cycle anymore. The commands have been simplified to just: * install: get your Foxx app up and running * uninstall: shut it down and erase it from disk * Foxx error output Until 2.4 the errors produced by Foxx were not optimal. Often, the error message was just `unable to parse manifest` and contained only an internal stack trace. In 2.5 we made major improvements there, including a much more finegrained error output that helps you debug your Foxx apps. The error message printed is now much closer to its source and should help you track it down. Also we added the default handlers for unhandled errors in Foxx apps: * You will get a nice internal error page whenever your Foxx app is called but was not installed due to any error * You will get a proper error message when having an uncaught error appears in any app route In production mode the messages above will NOT contain any information about your Foxx internals and are safe to be exposed to third party users. In development mode the messages above will contain the stacktrace (if available), making it easier for your in-house devs to track down errors in the application. * added `console` object to Foxx apps. All Foxx apps now have a console object implementing the familiar Console API in their global scope, which can be used to log diagnostic messages to the database. * added `org/arangodb/request` module, which provides a simple API for making HTTP requests to external services. * 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 }); Note that in place of the above specialized index creation commands, it is recommended to use the more general index creation command `ensureIndex`: ```js db.collection.ensureIndex({ type: "hash", sparse: true, unique: true, fields: [ attributeName ] }); db.collection.ensureIndex({ type: "skiplist", sparse: false, unique: false, fields: [ "a", "b" ] }); ``` When not explicitly set, the `sparse` attribute defaults to `false` for new indexes. This causes a change in behavior when creating a unique hash index without specifying the sparse flag: in 2.4, unique hash indexes were implicitly sparse, always excluding `null` values. There was no option to control this behavior, and sparsity was neither supported for non-unique hash indexes nor skiplists in 2.4. This implicit sparsity of unique hash indexes was considered an inconsistency, and therefore the behavior was cleaned up in 2.5. As of 2.5, indexes will only be created sparse if sparsity is explicitly requested. Existing unique hash indexes from 2.4 or before will automatically be migrated so they are still sparse after the upgrade to 2.5. Geo indexes are implicitly sparse, meaning documents without the indexed location attribute or containing invalid location coordinate values will be excluded from the index automatically. This is also a change when compared to pre-2.5 behavior, when documents with missing or invalid coordinate values may have caused errors on insertion when the geo index' `unique` flag was set and its `ignoreNull` flag was not. This was confusing and has been rectified in 2.5. The method `ensureGeoConstaint()` now does the same as `ensureGeoIndex()`. Furthermore, the attributes `constraint`, `unique`, `ignoreNull` and `sparse` flags are now completely ignored when creating geo indexes. The same is true for fulltext indexes. There is no need to specify non-uniqueness or sparsity for geo or fulltext indexes. They will always be non-unique and sparse. As sparse indexes may exclude some documents, they cannot be used for every type of query. 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. * Windows service uninstalling: only remove service if it points to the currently running binary, or --force was specified. * Windows (debug only): print stacktraces on crash and run minidump * Windows (cygwin): if you run arangosh in a cygwin shell or via ssh we will detect this and use the appropriate output functions. * Windows: improve process management * fix ipv6 reverse ip lookups - so far we only did ipv4 addresses. * improve join documentation, add outer join example * run jslint for unit tests too, to prevent "memory leaks" by global js objects with native code. * fix error logging for exceptions - we wouldn't log the exception message itself so far. * improve error reporting in the http client (windows & *nix) * improve error reports in cluster * Standard Errors can now contain custom messages. -- ArangoDB Maintainer Tue, 24 Feb 2015 23:30:19 +0100 arangodb (2.5.0b1-1.1) stable; urgency=low * Changed to Version 2.5.0-beta1 * front-end: dashboard tries not to (re)load statistics if user has no access * V8: Upgrade to version 3.31.74.1 * etcd: Upgrade to version 2.0 - This requires go 1.3 to compile at least. * refuse to startup if ICU wasn't initialized, this will i.e. prevent errors from being printed, and libraries from being loaded. * front-end: unwanted removal of index table header after creating new index * fixed issue #1248: chrome: applications filtering not working * fixed issue #1198: queries remain in aql editor (front-end) if you navigate through different tabs * Simplify usage of Foxx Thanks to our user feedback we learned that Foxx is a powerful, yet rather complicated concept. With this release we tried to make it less complicated while keeping all its strength. That includes a rewrite of the documentation as well as some code changes as listed below: * Moved Foxx applications to a different folder. The naming convention now is: /_db///APP Before it was: /databases//: This caused some trouble as apps where cached based on name and version and updates did not apply. Hence the path on filesystem and the app's access URL had no relation to one another. Now the path on filesystem is identical to the URL (except for slashes and the appended APP) * Rewrite of Foxx routing The routing of Foxx has been exposed to major internal changes we adjusted because of user feedback. This allows us to set the development mode per mountpoint without having to change pathes and hold apps at seperate locations. * Foxx Development mode The development mode used until 2.4 is gone. It has been replaced by a much more mature version. This includes the deprecation of the javascript.dev-app-path parameter, which is useless since 2.5. Instead of having two separate app directories for production and development, apps now reside in one place, which is used for production as well as for development. Apps can still be put into development mode, changing their behavior compared to production mode. Development mode apps are still reread from disk at every request, and still they ship more debug output. This change has also made the startup options `--javascript.frontend-development-mode` and `--javascript.dev-app-path` obsolete. The former option will not have any effect when set, and the latter option is only read and used during the upgrade to 2.5 and does not have any effects later. * Foxx install process Installing Foxx apps has been a two step process: import them into ArangoDB and mount them at a specific mountpoint. These operations have been joined together. You can install an app at one mountpoint, that's it. No fetch, mount, unmount, purge cycle anymore. The commands have been simplified to just: * install: get your Foxx app up and running * uninstall: shut it down and erase it from disk * Foxx error output Until 2.4 the errors produced by Foxx were not optimal. Often, the error message was just `unable to parse manifest` and contained only an internal stack trace. In 2.5 we made major improvements there, including a much more finegrained error output that helps you debug your Foxx apps. The error message printed is now much closer to its source and should help you track it down. Also we added the default handlers for unhandled errors in Foxx apps: * You will get a nice internal error page whenever your Foxx app is called but was not installed due to any error * You will get a proper error message when having an uncaught error appears in any app route In production mode the messages above will NOT contain any information about your Foxx internals and are safe to be exposed to third party users. In development mode the messages above will contain the stacktrace (if available), making it easier for your in-house devs to track down errors in the application. * added `console` object to Foxx apps. All Foxx apps now have a console object implementing the familiar Console API in their global scope, which can be used to log diagnostic messages to the database. * added `org/arangodb/request` module, which provides a simple API for making HTTP requests to external services. * 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 }); Note that in place of the above specialized index creation commands, it is recommended to use the more general index creation command `ensureIndex`: ```js db.collection.ensureIndex({ type: "hash", sparse: true, unique: true, fields: [ attributeName ] }); db.collection.ensureIndex({ type: "skiplist", sparse: false, unique: false, fields: [ "a", "b" ] }); ``` When not explicitly set, the `sparse` attribute defaults to `false` for new indexes. This causes a change in behavior when creating a unique hash index without specifying the sparse flag: in 2.4, unique hash indexes were implicitly sparse, always excluding `null` values. There was no option to control this behavior, and sparsity was neither supported for non-unique hash indexes nor skiplists in 2.4. This implicit sparsity of unique hash indexes was considered an inconsistency, and therefore the behavior was cleaned up in 2.5. As of 2.5, indexes will only be created sparse if sparsity is explicitly requested. Existing unique hash indexes from 2.4 or before will automatically be migrated so they are still sparse after the upgrade to 2.5. Geo indexes are implicitly sparse, meaning documents without the indexed location attribute or containing invalid location coordinate values will be excluded from the index automatically. This is also a change when compared to pre-2.5 behavior, when documents with missing or invalid coordinate values may have caused errors on insertion when the geo index' `unique` flag was set and its `ignoreNull` flag was not. This was confusing and has been rectified in 2.5. The method `ensureGeoConstaint()` now does the same as `ensureGeoIndex()`. Furthermore, the attributes `constraint`, `unique`, `ignoreNull` and `sparse` flags are now completely ignored when creating geo indexes. The same is true for fulltext indexes. There is no need to specify non-uniqueness or sparsity for geo or fulltext indexes. They will always be non-unique and sparse. As sparse indexes may exclude some documents, they cannot be used for every type of query. 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. * Windows service uninstalling: only remove service if it points to the currently running binary, or --force was specified. * Windows (debug only): print stacktraces on crash and run minidump * Windows (cygwin): if you run arangosh in a cygwin shell or via ssh we will detect this and use the appropriate output functions. * Windows: improve process management * fix ipv6 reverse ip lookups - so far we only did ipv4 addresses. * improve join documentation, add outer join example * run jslint for unit tests too, to prevent "memory leaks" by global js objects with native code. * fix error logging for exceptions - we wouldn't log the exception message itself so far. * improve error reporting in the http client (windows & *nix) * improve error reports in cluster * Standard Errors can now contain custom messages. -- ArangoDB Maintainer Mon, 23 Feb 2015 16:19:21 +0100 arangodb (2.5.0a8-1.1) stable; urgency=low * Changed to Version 2.5.0-alpha8 * front-end: dashboard tries not to (re)load statistics if user has no access * V8: Upgrade to version 3.31.74.1 * etcd: Upgrade to version 2.0 - This requires go 1.3 to compile at least. * refuse to startup if ICU wasn't initialized, this will i.e. prevent errors from being printed, and libraries from being loaded. * front-end: unwanted removal of index table header after creating new index * fixed issue #1248: chrome: applications filtering not working * fixed issue #1198: queries remain in aql editor (front-end) if you navigate through different tabs * Simplify usage of Foxx Thanks to our user feedback we learned that Foxx is a powerful, yet rather complicated concept. With this release we tried to make it less complicated while keeping all its strength. That includes a rewrite of the documentation as well as some code changes as listed below: * Moved Foxx applications to a different folder. The naming convention now is: /_db///APP Before it was: /databases//: This caused some trouble as apps where cached based on name and version and updates did not apply. Hence the path on filesystem and the app's access URL had no relation to one another. Now the path on filesystem is identical to the URL (except for slashes and the appended APP) * Rewrite of Foxx routing The routing of Foxx has been exposed to major internal changes we adjusted because of user feedback. This allows us to set the development mode per mountpoint without having to change pathes and hold apps at seperate locations. * Foxx Development mode The development mode used until 2.4 is gone. It has been replaced by a much more mature version. This includes the deprecation of the javascript.dev-app-path parameter, which is useless since 2.5. Instead of having two separate app directories for production and development, apps now reside in one place, which is used for production as well as for development. Apps can still be put into development mode, changing their behavior compared to production mode. Development mode apps are still reread from disk at every request, and still they ship more debug output. This change has also made the startup options `--javascript.frontend-development-mode` and `--javascript.dev-app-path` obsolete. The former option will not have any effect when set, and the latter option is only read and used during the upgrade to 2.5 and does not have any effects later. * Foxx install process Installing Foxx apps has been a two step process: import them into ArangoDB and mount them at a specific mountpoint. These operations have been joined together. You can install an app at one mountpoint, that's it. No fetch, mount, unmount, purge cycle anymore. The commands have been simplified to just: * install: get your Foxx app up and running * uninstall: shut it down and erase it from disk * Foxx error output Until 2.4 the errors produced by Foxx were not optimal. Often, the error message was just `unable to parse manifest` and contained only an internal stack trace. In 2.5 we made major improvements there, including a much more finegrained error output that helps you debug your Foxx apps. The error message printed is now much closer to its source and should help you track it down. Also we added the default handlers for unhandled errors in Foxx apps: * You will get a nice internal error page whenever your Foxx app is called but was not installed due to any error * You will get a proper error message when having an uncaught error appears in any app route In production mode the messages above will NOT contain any information about your Foxx internals and are safe to be exposed to third party users. In development mode the messages above will contain the stacktrace (if available), making it easier for your in-house devs to track down errors in the application. * added `console` object to Foxx apps. All Foxx apps now have a console object implementing the familiar Console API in their global scope, which can be used to log diagnostic messages to the database. * added `org/arangodb/request` module, which provides a simple API for making HTTP requests to external services. * 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 }); Note that in place of the above specialized index creation commands, it is recommended to use the more general index creation command `ensureIndex`: ```js db.collection.ensureIndex({ type: "hash", sparse: true, unique: true, fields: [ attributeName ] }); db.collection.ensureIndex({ type: "skiplist", sparse: false, unique: false, fields: [ "a", "b" ] }); ``` When not explicitly set, the `sparse` attribute defaults to `false` for new indexes. This causes a change in behavior when creating a unique hash index without specifying the sparse flag: in 2.4, unique hash indexes were implicitly sparse, always excluding `null` values. There was no option to control this behavior, and sparsity was neither supported for non-unique hash indexes nor skiplists in 2.4. This implicit sparsity of unique hash indexes was considered an inconsistency, and therefore the behavior was cleaned up in 2.5. As of 2.5, indexes will only be created sparse if sparsity is explicitly requested. Existing unique hash indexes from 2.4 or before will automatically be migrated so they are still sparse after the upgrade to 2.5. Geo indexes are implicitly sparse, meaning documents without the indexed location attribute or containing invalid location coordinate values will be excluded from the index automatically. This is also a change when compared to pre-2.5 behavior, when documents with missing or invalid coordinate values may have caused errors on insertion when the geo index' `unique` flag was set and its `ignoreNull` flag was not. This was confusing and has been rectified in 2.5. The method `ensureGeoConstaint()` now does the same as `ensureGeoIndex()`. Furthermore, the attributes `constraint`, `unique`, `ignoreNull` and `sparse` flags are now completely ignored when creating geo indexes. The same is true for fulltext indexes. There is no need to specify non-uniqueness or sparsity for geo or fulltext indexes. They will always be non-unique and sparse. As sparse indexes may exclude some documents, they cannot be used for every type of query. 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. * Windows service uninstalling: only remove service if it points to the currently running binary, or --force was specified. * Windows (debug only): print stacktraces on crash and run minidump * Windows (cygwin): if you run arangosh in a cygwin shell or via ssh we will detect this and use the appropriate output functions. * Windows: improve process management * fix ipv6 reverse ip lookups - so far we only did ipv4 addresses. * improve join documentation, add outer join example * run jslint for unit tests too, to prevent "memory leaks" by global js objects with native code. * fix error logging for exceptions - we wouldn't log the exception message itself so far. * improve error reporting in the http client (windows & *nix) * improve error reports in cluster * Standard Errors can now contain custom messages. -- ArangoDB Maintainer Fri, 20 Feb 2015 14:16:23 +0100 arangodb (2.5.0a4-1.1) stable; urgency=low * Changed to Version 2.5.0-alpha4 * front-end: unwanted removal of index table header after creating new index * fixed issue #1248: chrome: applications filtering not working * fixed issue #1198: queries remain in aql editor (front-end) if you navigate through different tabs * Simplify usage of Foxx Thanks to our user feedback we learned that Foxx is a powerful, yet rather complicated concept. With this release we tried to make it less complicated while keeping all its strength. That includes a rewrite of the documentation as well as some code changes as listed below: * Moved Foxx applications to a different folder. The naming convention now is: /_db///APP Before it was: /databases//: This caused some trouble as apps where cached based on name and version and updates did not apply. Hence the path on filesystem and the app's access URL had no relation to one another. Now the path on filesystem is identical to the URL (except for slashes and the appended APP) * Rewrite of Foxx routing The routing of Foxx has been exposed to major internal changes we adjusted because of user feedback. This allows us to set the development mode per mountpoint without having to change pathes and hold apps at seperate locations. * Foxx Development mode The development mode used until 2.4 is gone. It has been replaced by a much more mature version. This includes the deprecation of the javascript.dev-app-path parameter, which is useless since 2.5. Instead of having two separate app directories for production and development, apps now reside in one place, which is used for production as well as for development. Apps can still be put into development mode, changing their behavior compared to production mode. Development mode apps are still reread from disk at every request, and still they ship more debug output. * Foxx install process Installing Foxx apps has been a two step process: import them into ArangoDB and mount them at a specific mountpoint. These operations have been joined together. You can install an app at one mountpoint, that's it. No fetch, mount, unmount, purge cycle anymore. The commands have been simplified to just: * install: get your Foxx app up and running * uninstall: shut it down and erase it from disk * Foxx error output Until 2.4 the errors produced by Foxx were not optimal. Often, the error message was just `unable to parse manifest` and contained only an internal stack trace. In 2.5 we made major improvements there, including a much more finegrained error output that helps you debug your Foxx apps. The error message printed is now much closer to its source and should help you track it down. Also we added the default handlers for unhandled errors in Foxx apps: * You will get a nice internal error page whenever your Foxx app is called but was not installed due to any error * You will get a proper error message when having an uncaught error appears in any app route In production mode the messages above will NOT contain any information about your Foxx internals and are safe to be exposed to third party users. In development mode the messages above will contain the stacktrace (if available), making it easier for your in-house devs to track down errors in the application. * added `console` object to Foxx apps. All Foxx apps now have a console object implementing the familiar Console API in their global scope, which can be used to log diagnostic messages to the database. * added `org/arangodb/request` module, which provides a simple API for making HTTP requests to external services. * 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. This causes a change in behavior when creating a unique hash index without specifying the sparse flag: in 2.4, unique hash indexes were implicitly sparse, always excluding `null` values. There was no option to control this behavior, and sparsity was neither supported for non-unique hash indexes nor skiplists in 2.4. This implicit sparsity of unique hash indexes was considered an inconsistency, and therefore the behavior was cleaned up in 2.5. As of 2.5, indexes will only be created sparse if sparsity is explicitly requested. Existing unique hash indexes from 2.4 or before will automatically be migrated so they are still sparse after the upgrade to 2.5. Indexes other than hash and skiplist do not support sparsity. As sparse indexes may exclude some documents, they cannot be used for every type of query. 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. -- ArangoDB Maintainer Tue, 17 Feb 2015 21:16:18 +0100 arangodb (2.5.0a3-1.1) stable; urgency=low * Changed to Version 2.5.0-alpha3 * 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. -- ArangoDB Maintainer Mon, 16 Feb 2015 13:36:48 +0100 arangodb (2.4.3-1.1) stable; urgency=low * Changed to Version 2.4.3 * 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. -- ArangoDB Maintainer Fri, 06 Feb 2015 12:06:18 +0100 arangodb (2.4.2-1.1) stable; urgency=low * Changed to Version 2.4.2 * 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. -- ArangoDB Maintainer Fri, 30 Jan 2015 19:09:36 +0100 arangodb (2.4.1-1.1) stable; urgency=low * Changed to Version 2.4.1 * 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. -- ArangoDB Maintainer Mon, 19 Jan 2015 19:25:56 +0100 arangodb (2.4.0-1.1) stable; urgency=low * Changed to Version 2.4.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. -- ArangoDB Maintainer Tue, 13 Jan 2015 00:53:47 +0100 arangodb (2.4.0b1-1.1) stable; urgency=low * Changed to Version 2.4.0-beta1 * 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 * 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 -- ArangoDB Maintainer Fri, 26 Dec 2014 13:54:35 +0100 arangodb (2.4.0a7-1.1) stable; urgency=low * Changed to Version 2.4.0-alpha7 * 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 * 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 -- ArangoDB Maintainer Thu, 25 Dec 2014 10:36:12 +0100 arangodb (2.4.0a6-1.1) stable; urgency=low * Changed to Version 2.4.0-alpha6 * fixed superstates in FoxxGenerator * Upgraded V8 version from 3.16.14 to 3.29.59 * 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: 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 -- ArangoDB Maintainer Fri, 19 Dec 2014 21:00:40 +0100 arangodb (2.4.0a5-1.1) stable; urgency=low * Changed to Version 2.4.0-alpha5 * switch to new V8 engine 3.29.59 -- ArangoDB Maintainer Fri, 19 Dec 2014 13:46:24 +0100 arangodb (2.4.0a4-1.1) stable; urgency=low * Changed to Version 2.4.0-alpha4 * switch to new V8 engine 3.29.59 -- ArangoDB Maintainer Fri, 19 Dec 2014 10:28:16 +0100 arangodb (2.4.0a3-1.1) stable; urgency=low * Changed to Version 2.4.0-alpha3 * switch to new V8 engine 3.29.59 -- ArangoDB Maintainer Thu, 18 Dec 2014 17:45:48 +0100 arangodb (2.4.0a2-1.1) stable; urgency=low * Changed to Version 2.4.0-alpha2 * fixed superstates in FoxxGenerator -- ArangoDB Maintainer Fri, 28 Nov 2014 12:54:02 +0100 arangodb (2.4.0a1-1.1) stable; urgency=low * Changed to Version 2.4.0-alpha1 * 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 -- ArangoDB Maintainer Tue, 25 Nov 2014 10:48:08 +0100 arangodb (2.3.0-1.1) stable; urgency=low * Changed to Version 2.3.0 * 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 * 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 -- ArangoDB Maintainer Tue, 18 Nov 2014 19:02:18 +0100 arangodb (2.3.0b2-1.1) stable; urgency=low * Changed to Version 2.3.0-beta2 * 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 * 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. However, the default configuration files shipped with ArangoDB have been changed. The number of server threads has been increased in the configuration files, and the number of V8 contexts is now explicitly set in the configuration files (to the same value as the number of server threads was set to in 2.2). If you are using the default config files or merge them with your local config files, please review if the higher 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. * 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("

some HTML

"); 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 -- ArangoDB Maintainer Sat, 08 Nov 2014 00:09:03 +0100 arangodb (2.3.0b1-1.1) stable; urgency=low * Changed to Version 2.3.0-beta1 * 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. * removed bitarray indexes * removed internal "_admin/modules/flush" in order to fix requireApp * added basic support for handling binary data in Foxx 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("

some HTML

"); 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 insert performance of non-unique hash index inserts 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 -- ArangoDB Maintainer Sun, 02 Nov 2014 01:08:15 +0100 arangodb (2.3.0a6-1.1) stable; urgency=low * Changed to Version 2.3.0-alpha6 * removed internal "_admin/modules/flush" in order to fix requireApp * added basic support for handling binary data in Foxx 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("

some HTML

"); 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 insert performance of non-unique hash index inserts 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 -- ArangoDB Maintainer Wed, 29 Oct 2014 15:30:13 +0100 arangodb (2.3.0a3-1.1) stable; urgency=low * Changed to Version 2.3.0-alpha3 * 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. -- ArangoDB Maintainer Mon, 22 Sep 2014 20:30:35 +0200 arangodb (2.2.3-1.1) stable; urgency=low * Changed to Version 2.2.3 * 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 -- ArangoDB Maintainer Tue, 02 Sep 2014 11:30:26 +0200 arangodb (2.2.3r1-1.1) stable; urgency=low * Changed to Version 2.2.3-rc1 * 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 -- ArangoDB Maintainer Mon, 01 Sep 2014 15:58:14 +0200 arangodb (2.2.2-1.1) stable; urgency=low * Changed to Version 2.2.2 * 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 -- ArangoDB Maintainer Fri, 08 Aug 2014 12:26:37 +0200 arangodb (2.2.2r1-1.1) stable; urgency=low * Changed to Version 2.2.2-rc1 * 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 -- ArangoDB Maintainer Wed, 06 Aug 2014 11:21:54 +0200 arangodb (2.2.1-1.1) stable; urgency=low * Changed to Version 2.2.1 * fixed issue with --check-version: when creating a new database the check failed * issue #947 Foxx applicationContext missing some properties * 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. * (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. -- ArangoDB Maintainer Thu, 24 Jul 2014 12:22:18 +0200 arangodb (2.2.1r1-1.1) stable; urgency=low * Changed to Version 2.2.1-rc1 * fixed issue with --check-version: when creating a new database the check failed * issue #947 Foxx applicationContext missing some properties * 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. * (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. -- ArangoDB Maintainer Wed, 23 Jul 2014 18:37:33 +0200 arangodb (2.2.0-1.1) stable; urgency=low * Changed to Version 2.2.0 * 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: 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: 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 -- ArangoDB Maintainer Fri, 11 Jul 2014 12:28:20 +0200 arangodb (2.2.0b3-1.1) stable; urgency=low * Changed to Version 2.2.0-beta3 * 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` * 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 datafiles of collections, allowing the server to remove older write-ahead log logfiles. Cross-collection transactions in ArangoDB should benefit considerably by this change, as less writes than in previous versions is 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, where most parts of transactions were handled in RAM first. 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. Note: the replication from the write-ahead log is still in development. * 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. -- ArangoDB Maintainer Tue, 01 Jul 2014 18:30:19 +0200 arangodb (2.2.0b2-1.1) stable; urgency=low * Changed to Version 2.2.0-beta2 * 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` * 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 datafiles of collections, allowing the server to remove older write-ahead log logfiles. Cross-collection transactions in ArangoDB should benefit considerably by this change, as less writes than in previous versions is 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, where most parts of transactions were handled in RAM first. 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. Note: the replication from the write-ahead log is still in development. * 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. -- ArangoDB Maintainer Tue, 01 Jul 2014 09:51:22 +0200 arangodb (2.2.0b1-1.1) stable; urgency=low * Changed to Version 2.2.0-beta1 * 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` * 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 datafiles of collections, allowing the server to remove older write-ahead log logfiles. Cross-collection transactions in ArangoDB should benefit considerably by this change, as less writes than in previous versions is 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, where most parts of transactions were handled in RAM first. 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. Note: the replication from the write-ahead log is still in development. * 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. -- ArangoDB Maintainer Sat, 28 Jun 2014 10:34:22 +0200 arangodb (2.2.0a6-1.1) stable; urgency=low * Changed to Version 2.2.0-alpha6 * 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` * 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 datafiles of collections, allowing the server to remove older write-ahead log logfiles. Cross-collection transactions in ArangoDB should benefit considerably by this change, as less writes than in previous versions is 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, where most parts of transactions were handled in RAM first. 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. Note: the replication from the write-ahead log is still in development. * 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. -- ArangoDB Maintainer Fri, 27 Jun 2014 11:33:12 +0200 arangodb (2.2.0a4-1.1) stable; urgency=low * Changed to Version 2.2.0-alpha4 * 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` * 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 datafiles of collections, allowing the server to remove older write-ahead log logfiles. Cross-collection transactions in ArangoDB should benefit considerably by this change, as less writes than in previous versions is 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, where most parts of transactions were handled in RAM first. 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. Note: the replication from the write-ahead log is still in development. * 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. -- ArangoDB Maintainer Wed, 25 Jun 2014 23:56:02 +0200 arangodb (2.2.0a2-1.1) stable; urgency=low * Changed to Version 2.2.0-alpha2 * 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 datafiles of collections, allowing the server to remove older write-ahead log logfiles. Cross-collection transactions in ArangoDB should benefit considerably by this change, as less writes than in previous versions is 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, where most parts of transactions were handled in RAM first. 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. Note: the replication from the write-ahead log is still in development. * 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. -- ArangoDB Maintainer Mon, 23 Jun 2014 16:43:29 +0200 arangodb (2.2.0a1-1.1) stable; urgency=low * Changed to Version 2.2.0-alpha1 * 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 datafiles of collections, allowing the server to remove older write-ahead log logfiles. Cross-collection transactions in ArangoDB should benefit considerably by this change, as less writes than in previous versions is 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, where most parts of transactions were handled in RAM first. 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. Note: the replication from the write-ahead log is still in development. * 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. -- ArangoDB Maintainer Mon, 23 Jun 2014 11:46:12 +0200 arangodb (2.1.2-1.1) stable; urgency=low * Changed to Version 2.1.2 * fixed check-version for empty directory * moved try/catch block to the top of routing chain -- ArangoDB Maintainer Sun, 15 Jun 2014 16:05:00 +0200 arangodb (2.1.1-1.1) stable; urgency=low * Changed to Version 2.1.1 * fixed random generation under MacOSX * 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 -- ArangoDB Maintainer Fri, 06 Jun 2014 18:41:30 +0200 -- ArangoDB Maintainer Sun, 01 Jun 2014 22:10:48 +0200 arangodb (2.1.0-1.1) stable; urgency=low * Changed to Version 2.1.0 * 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 successfully first), which lead to a coordinator on strike * improved cluster dashboard -- ArangoDB Maintainer Thu, 29 May 2014 11:01:03 +0200 arangodb (2.1.0r2-1.1) stable; urgency=low * Changed to Version 2.1.0-rc2 * fixed issue #864: Inconsistent behavior of AQL REVERSE(list) function -- ArangoDB Maintainer Mon, 26 May 2014 00:48:13 +0200 arangodb (2.1.0r1-1.1) stable; urgency=low * Changed to Version 2.1.0-rc1 * 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() and FLATTEN_RECURSIVE() list functions * added index memory statistics to `db..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//` * 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 -- ArangoDB Maintainer Mon, 12 May 2014 19:29:58 +0200 arangodb (2.1.0a9-1.1) stable; urgency=low * Changed to Version 2.1.0-alpha9 * 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() and FLATTEN_RECURSIVE() list functions * added index memory statistics to `db..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//` * 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 -- ArangoDB Maintainer Sun, 11 May 2014 01:13:36 +0200 arangodb (2.1.0a7-1.1) stable; urgency=low * Changed to Version 2.1.0-alpha7 * 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() and FLATTEN_RECURSIVE() list functions * added index memory statistics to `db..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//` * 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 -- ArangoDB Maintainer Sat, 10 May 2014 20:05:38 +0200 arangodb (2.1.0a6-1.1) stable; urgency=low * Changed to Version 2.1.0-alpha6 * 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() and FLATTEN_RECURSIVE() list functions * added index memory statistics to `db..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//` * 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 -- ArangoDB Maintainer Sat, 10 May 2014 19:37:47 +0200 arangodb (2.1.0a4-1.1) stable; urgency=low * Changed to Version 2.1.0-alpha4 * 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() and FLATTEN_RECURSIVE() list functions * added index memory statistics to `db..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//` * 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 -- ArangoDB Maintainer Sat, 10 May 2014 15:07:44 +0200 arangodb (2.1.0a3-1.1) stable; urgency=low * Changed to Version 2.1.0-alpha3 * fixed issue #848: db.someEdgeCollection.inEdge does not return correct -- ArangoDB Maintainer Sat, 10 May 2014 11:46:54 +0200 arangodb (2.1.0a3-1.1) stable; urgency=low * Changed to Version 2.1.0-alpha3 * fixed issue #848: db.someEdgeCollection.inEdge does not return correct -- ArangoDB Maintainer Sat, 10 May 2014 11:16:50 +0200 arangodb (2.0.nightly-1.1) stable; urgency=low * Changed to Version 2.0.nightly -- ArangoDB Maintainer Tue, 06 May 2014 01:20:47 +0200 arangodb (2.0.7-1.1) stable; urgency=low * Changed to Version 2.0.7 * 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. * fixed permission problems under Windows -- ArangoDB Maintainer Mon, 05 May 2014 19:23:11 +0200 arangodb (2.0.6-1.1) stable; urgency=low * Changed to Version 2.0.6 * fixed issue #835: arangosh doesn't show correct database name -- ArangoDB Maintainer Tue, 22 Apr 2014 23:19:09 +0200 arangodb (2.0.5-1.1) stable; urgency=low * Changed to Version 2.0.5 * Fixed a caching problem in IE JS Shell * added cancelation for async jobs * upgraded to new gyp for V8 * new Windows installer -- ArangoDB Maintainer Mon, 21 Apr 2014 17:02:15 +0200 arangodb (2.0.4-1.1) stable; urgency=low * Changed to Version 2.0.4 * fixed cluster authentication front-end issues for Firefox and IE, there are still problems with Chrome -- ArangoDB Maintainer Mon, 14 Apr 2014 20:19:04 +0200 arangodb (2.0.3-1.1) stable; urgency=low * Changed to Version 2.0.3 * fixed AQL optimizer bug * fixed front-end issues * added password change dialog -- ArangoDB Maintainer Sun, 13 Apr 2014 21:33:43 +0200 arangodb (2.0.2-1.1) stable; urgency=low * Changed to Version 2.0.2 * 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 * 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. * improve documentation of db._create and explain the rules and limitations following from the choice of shardKeys for sharded collections with more than one shard -- ArangoDB Maintainer Sun, 06 Apr 2014 14:38:55 +0200 arangodb (2.0.1-1.1) stable; urgency=low * Changed to Version 2.0.1 * 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 #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 -- ArangoDB Maintainer Mon, 31 Mar 2014 19:52:56 +0200 arangodb (2.0.1r3-1.1) stable; urgency=low * Changed to Version 2.0.1-rc3 * 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 #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 -- ArangoDB Maintainer Mon, 31 Mar 2014 10:58:07 +0200 arangodb (2.0.1r2-1.1) stable; urgency=low * Changed to Version 2.0.1-rc2 * 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 #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 -- ArangoDB Maintainer Fri, 28 Mar 2014 10:30:40 +0100 arangodb (2.0.0-1.1) stable; urgency=low * Changed to Version 2.0.0 * first 2.0 release -- ArangoDB Maintainer Mon, 10 Mar 2014 16:48:11 +0100 arangodb (2.0.0r2-1.1) stable; urgency=low * Changed to Version 2.0.0-rc2 * fixed cluster authorization -- ArangoDB Maintainer Fri, 07 Mar 2014 14:08:21 +0100 arangodb (2.0.0r1-1.1) stable; urgency=low * Changed to Version 2.0.0-rc1 * added sharding :-) 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/` * 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 1.5 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 * removed check-server binary * 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 -- ArangoDB Maintainer Sat, 08 Feb 2014 22:27:45 +0100 arangodb (1.4.8-1.1) stable; urgency=low * Changed to Version 1.4.8 * install foxx apps in the web interface * fixed a segfault in the import API -- ArangoDB Maintainer Sat, 08 Feb 2014 20:41:13 +0100 arangodb (1.4.9-1.1) stable; urgency=low * Changed to Version 1.4.9 -- ArangoDB Maintainer Fri, 07 Feb 2014 21:49:50 +0100 arangodb (1.4.8-1.1) stable; urgency=low * Changed to Version 1.4.8 -- ArangoDB Maintainer Mon, 27 Jan 2014 13:43:56 +0100 arangodb (1.4.7-1.1) stable; urgency=low * Changed to Version 1.4.7 -- ArangoDB Maintainer Thu, 23 Jan 2014 17:21:31 +0100 arangodb (1.4.6-1.1) stable; urgency=low * Changed to Version 1.4.6 -- ArangoDB Maintainer Mon, 20 Jan 2014 22:15:44 +0100 arangodb (1.4.5-1.1) stable; urgency=low * Changed to Version 1.4.5 -- ArangoDB Maintainer Wed, 15 Jan 2014 17:08:12 +0100 arangodb (1.4.5r2-1.1) stable; urgency=low * Changed to Version 1.4.5-rc2 -- ArangoDB Maintainer Mon, 13 Jan 2014 14:46:37 +0100 arangodb (1.4.5r1-1.1) stable; urgency=low * Changed to Version 1.4.5-rc1 -- ArangoDB Maintainer Fri, 03 Jan 2014 15:30:12 +0100 arangodb (1.4.4-1.1) stable; urgency=low * Changed to Version 1.4.4 -- ArangoDB Maintainer Tue, 24 Dec 2013 10:26:15 +0100 arangodb (1.4.4r1-1.1) stable; urgency=low * Changed to Version 1.4.4-rc1 -- ArangoDB Maintainer Sun, 22 Dec 2013 18:43:40 +0100 arangodb (1.4.3-1.1) stable; urgency=low * Changed to Version 1.4.3 -- ArangoDB Maintainer Mon, 25 Nov 2013 10:41:14 +0100 arangodb (1.4.3a1-1.1) stable; urgency=low * Changed to Version 1.4.3-alpha1 -- ArangoDB Maintainer Fri, 22 Nov 2013 22:11:35 +0100 arangodb (1.4.2-18.4) stable; urgency=low * Changed to Version 1.4.2 -- ArangoDB Maintainer Wed, 20 Nov 2013 14:18:14 +0100 arangodb (1.4.2a1-18.4) stable; urgency=low * Changed to Version 1.4.2-alpha1 -- ArangoDB Maintainer Sat, 09 Nov 2013 19:23:27 +0100 arangodb (1.4.1-18.4) stable; urgency=low * Changed to Version 1.4.1 -- ArangoDB Maintainer Fri, 08 Nov 2013 13:03:44 +0100 arangodb (1.4.1r1-18.4) stable; urgency=low * Changed to Version 1.4.1-rc1 -- ArangoDB Maintainer Thu, 07 Nov 2013 22:57:35 +0100 arangodb (1.4.1r1-18.4) stable; urgency=low * Changed to Version 1.4.1-rc1 -- ArangoDB Maintainer Thu, 07 Nov 2013 21:20:03 +0100 arangodb (1.4.0-18.1) stable; urgency=low * Changed to Version 1.4.0 -- ArangoDB Maintainer Tue, 29 Oct 2013 15:33:15 +0100 arangodb (1.4.0r1-18.1) stable; urgency=low * Changed to Version 1.4.0-rc1 -- Info Tue, 29 Oct 2013 08:55:47 +0100 arangodb (1.4.0b2-18.1) stable; urgency=low * Changed to Version 1.4.0-beta2 -- Info Tue, 22 Oct 2013 16:30:46 +0200 arangodb (1.4.0-16) stable; urgency=low * Changed to Version 1.4.0-alpha1 -- Info Fri, 02 Aug 2013 17:36:00 +0200 arangodb (1.3.2-15) stable; urgency=low * Changed to Version 1.3.2 -- Info Fri, 21 Jun 2013 13:09:00 +0100 arangodb (1.3.1-14) stable; urgency=low * Changed to Version 1.3.1 -- Info Fri, 24 May 2013 18:05:00 +0100 arangodb (1.3.0-13) stable; urgency=low * Changed to Version 1.3.0 -- Info Fri, 10 May 2013 17:12:00 +0100 arangodb (1.2.3-12) stable; urgency=low * Changed to Version 1.2.3 -- Info Fri, 12 Apr 2013 12:35:00 +0100 arangodb (1.2.2-11) stable; urgency=low * Changed to Version 1.2.2 -- Info Tue, 26 Mar 2013 14:48:00 +0100 arangodb (1.2.1-10) stable; urgency=low * Changed to Version 1.2.1 -- Info Fri, 15 Mar 2013 06:28:00 +0100 arangodb (1.2.0-9) stable; urgency=low * Changed to Version 1.2.0 -- Info Fri, 1 Mar 2013 14:15:00 +0100 arangodb (1.2.beta3-9) stable; urgency=low * Changed to Version 1.2.beta3 -- Info Fri, 22 Feb 2013 17:22:00 +0100 arangodb (1.2.beta2-6) stable; urgency=low * Changed to Version 1.2.beta2 -- Info Fri, 15 Feb 2013 14:39:00 +0100 arangodb (1.2.beta1-4) stable; urgency=low * Changed to Version 1.2.beta1 -- Info Mon, 4 Feb 2013 10:02:00 +0100 arangodb (1.1.2-3) stable; urgency=low * Changed to Version 1.1.2 -- Info Mon, 21 Jan 2013 08:29:00 +0100 arangodb (1.1.1-2) stable; urgency=low * Changed to Version 1.1.1 -- Info Tue, 18 Dec 2012 13:50:00 +0100 arangodb (1.1.0-0) stable; urgency=low * Changed to Version 1.1.0 (final) -- Info Wed, 5 Dec 2012 15:05:00 +0100 arangodb (1.1.0-0) stable; urgency=low * Changed to Version 1.1.0 ()beta) -- Info Tue, 16 Oct 2012 07:37:00 +0200 arangodb (1.0.99-0) stable; urgency=low * Initial Release -- Info Wed, 5 Sep 2012 17:50:38 +0200