-
Refactoring
BatchDatabase
API- The batch API is deprecated since ArangoDB 3.8.0 and will be removed in a future version.
- The
BatchDatabase
is still available, but it now uses aTreadPoolExecutor
internally. - For backwards compatibility, the
BatchDatabase
uses only one worker thread, essentially sending the requests sequentially. Feel free to set themax_workers
parameter to a higher value if you want to use multiple threads, but be aware that the requests will be sent in parallel, which may cause problems if you are using transactions. - To discourage the use of this API, we now issue a warning when the
BatchDatabase
is used.
Note that
{"foo": "bar"}
may be inserted after{"foo": "baz"}
in the following example:with db.begin_batch_execution(max_workers=2) as batch_db: job1 = batch_db.collection.insert({"foo": "bar"}) job2 = batch_db.collection.insert({"foo": "baz"})
- Fix: build_filter_conditions utils method
- [DE-542] Added
shards()
method toCollection
by @apetenchea in #274 - [DE-584] Refactor deprecated
/_api/simple
methods by @aMahanna in #275 - Added
raise_on_document_error
parameter toCollection.update_many()
by @aMahanna in #273 - Added
computed_values
parameter toCollection.onfigure()
by @aMahanna in #268 - Various bug fixes
-
[DE-562] Index Cache Refilling by @apetenchea in #259
-
[DE-554]
serverId
query param (GET/PUT/_admin/log/level
) by @aMahanna in #262 -
[DE-545] UTF-8 names by @apetenchea in #260
-
[DE-566] geo_s2 analyzer test case by @aMahanna in #263
-
Fix python-arango Client (de)serialization by @geenen124 in #264
-
Fix
request_timeout
typing by @aMahanna in #265 -
Added new per-operation option
refillIndexCache
to write operations:- single-document write operations (insert, replace, update, delete)
- multi-document write operations (insert_many, replace_many, update_many, delete_many)
If the option is set to
True
, new entries are added to in-memory index caches if document operations affect the edge index or cache-enabled persistent indexes. Every currently running transaction will keep track of which in-memory index cache entries were invalidated by the transaction, and will try to (re-)fill them later.Example:
collection.insert({"foo": "bar"}, refillIndexCaches=True) db.aql.execute("INSERT {foo: bar} INTO collection OPTIONS { refillIndexCaches: true }")
-
Added cache and primaryKeyCache parameters to the inverted index API.
-
Added allow_retry query parameter, making it possible to retry fetching the latest batch from a cursor.
-
Added OverloadControlDatabase, enabling the client to react effectively to potential server overloads.
-
The db.version() now has a new optional parameter "details" that can be used to return additional information about the server version. The default is still false, so the old behavior is preserved.
-
Added peak_memory_usage as a new property of AQL queries, available since ArangoDB 3.11.
-
The explain method of AQL queries includes the "stats" field in the returned object. Note that the REST API returns it separately from the "plan" field, but for now we have to merge them together to ensure backward compatibility.