* integrate ArangoSearch into GatherNode/GatherBlock logic
* fix inconsistency after merge
* add serialization/deserealization logic for IResearchViewNode sorting
* fix optimizer rule order
* fix copy/past typo
* fix tests
* ensure `GatherNode` is properly set up for ArangoSearch views
* adjust optimizer rule order
* add initial implementation of scatter view rule and node
* add tests for `IResearchViewNode` and `IResearchViewScatterNode`
* add missing check
* modify IResearch execution nodes to use references instead of pointers
* use view id in searialized `ExecutionNode` representation instead of the name
* add cluster mode stubs and checks
* very first attempt to distribute IResearchViewNode
* further implementation of cluster-wide arangosearch views
* fix invalid json format
* add tests for coordinator iresearch view
* allow to retrieve a list of existing views on a coordinator
* more tests for coordinator iresearch view
* some fixes to enable query explanation
* remove Collection dependency from RemoteNode
* remove unnecessary remote ArangoSearch view scatter
* fix explanation appearance
* add some assertions
* minor fixes
* implement IResearchViewCoordinator::updateProperties
* fix view DDL issues
* handle link modifications in DDL operations
* add coordinator implementation of iresearch view links
* fix tests
* further coordinator based view DDL implementation
* further IResearchViewCoordinator implementation
* add initial implementation of AgencyMock
* fix some tests
* code cleanup
* extend test + some fixes
* more tests for IResearchViewCoordinator
* fix tests for IResearchLinkCoordinator
* some fixes after merge
* fix tests
* remove declaration of nonexistent (previously removed) method
* some fixes after review
* remove string duplication
* more tests and fixes
* more fixes and tests
* more tests
* one more test
* fix 'use-after-free' asan error
* fix non-enterprise tests issues
* forward-port AQL optimizations from 3.3
* fix restrict-to-single-shard rule
* added tests for specific cases
* ModificationNodes now can know if they are restricted or not
* OptimizerRule now updates the ModificationNode instead of setting ownName on remote node.
* The DBServerEngine container now only sends a subset of snippets (those which are relevant) It is able to restrict any part of the query to a certain shard or even a list of shards
* ExecutionEngine CreateBlocks in ClusterMode now returns Result instead of throwing.
* Adapted Coordinator side to a bitter mapping of RemoteNode => QuerySnippets. This is still ongoing work.
* Fixed Coordinator enginecontainer test and finisehd implementation of EngineInfoContainerDBServer. Seems to work so far, need to adapt test to prove it.
* Adapted test for modification nodes and restrict to shard.
* restrictTo can now be de-/serialized on Modification Nodes
* Fixed Community Compile Error
* Added a test for Indexes/EnumerateCollection nodes
* EnumerateCollection and IndexNode now have options to be restricted to a single shard, opt rule not yet updated
* DBServer part of planning now checks Enumerate and IndexNodes for single shard optimization
* Added tests for simple single shard optimization on IndexNodes
* Adapted optimzierrule for SingleShard optimierung on IndexNodes
* Fixed an issue with externally restricted shard ids in combination with shard_id based optimization
* Added a test for multiple single shard optimizations on the same collection
* Removed collection/Shard duplicate check of optimize to single shard rules
* Updated Explainer to handle optimize to single shard
* Let more tests pass an optimized AQL variant
* Temporarily disabled a tests that can only be solved after some work in transaction
* fix dump&restore of smart graphs (#5093)
* Added tests for dump-restore of SmartGraphs
* Arangosh will now expose isSmart and the smartGraphAttribute on properties
* RestReplicationHandler will now ignore smart-graph collections unless you execute it with force
* Added changelog
* Reactivated original mmfiles dump/restore test
* Skip hidden smart graph collections in arangodump
* Do not dump shadowCollections metadata of smart edge collections
* Cluster optimizer rules for soerted gather nodes now handle virtual edge collections correctly
* Added a dump/restore tests for smartgraphs in rocksdb as well
* Deactivated checks for writesExecuted statistics in dump/restore tests for smartgraphs mmfiles
* Really exclude shadowCollections
* Reduced loglevel
* Added tests
* Don't change single-server behaviour
* Fix tests for omitted shadowCollections and hidden collections
* Activated statistics in MMFIles dump test again and included isEnterprise in rocksdb dump test
* A modification node can now disableStatistics, which means it does not contribute to query->extras() this is only relevant in SmartGraph case so far.
* Added a test to dump&restore satellite collections
* Bugfix: restore satellite collections properly
* Added regression test for internal issue #2237
* Fix bug #2237
* Updated CHANGELOG
* Copied dump/restore tests to rockdsb
* Removed enterprise test
* Added inline comment for smart-edge collections in optimizer rules
* Removed duplicate CHANGELOG entry
* Simplified removal of shadowCollections
* fix jslint
* Made internal.isEnterprise() available in js client context. Taken from 3.3/59f655fa
* fix broken dump_encrypted test
* Removed accidentally copied CHANGELOG entry
* automatically detect which variables to keep in AQL COLLECT
If a COLLECT INTO is used, then it is detected which sub-attributes
of the into variables are used later in the query, and automatic
KEEP instructions are added to the COLLECT if possible
Example query:
FOR doc1 IN collection1
FOR doc2 IN collection2
COLLECT x = doc1.x INTO g
RETURN { x, all: g[*].doc1.y }
would be turned into
FOR doc1 IN collection1
FOR doc2 IN collection2
COLLECT x = doc1.x INTO g KEEP doc1
RETURN { x, all: g[*].doc1.y }
and prevent `doc2` from being temporarily stored in the variable `g`
* fix runtime warnings
* increase default flush timeout
* added tests
* fix some deadlocks found by evil lock manager (tm)
* fix duplicate lock
* fix indentation
* ensure proper lock dependencies
* fix lock acquisition
* removed useless comment
* do not lock twice
* create either a V8 transaction context or a standalone transaction context, depending on if we are called from within V8 or not
* AQL micro optimizations
* use explicit constructor
* only use V8DealerFeature's ConditionLocker for acquiring a free V8 context
entering and exiting the selected context is then done later on without having to hold the ConditionLocker
* remove some recursive locks
* Disable custom deadlock detection when Thread Sanitizer is enabled
* Changing ifdef's
* grr
* broke gcc
* Using atomic for ApplicationServer::_server
* fix premature unlock
* add some asserts
* honor collection locking in cluster
* yet one more lock fix
* removed assertion
* some more bugfixes
* Fixing assert
(cherry picked from commit 1155df173bfb67303077fbe04ee8d909517bfd21)
* do not use V8 variant of AQL functions in early optimization stage when a C++ variant is available
* additionally, simplify AQL function definitions and aliases
* warn when more than 90% of max mappings are in use
* added C++ variant of replication catchup
* added `--log.role` option
* updated CHANGELOG
* removed non-existing scheduler.threads option from config
* removed useless __FILE__, __LINE__ invocations
* updated CHANGELOG
* allow a priority V8 context
* remove TRI_CORE_MEM_ZONE
* try to fix Windows errors & warnings
* cleanup
* removed memory zones altogether
* exclude system collections from collection tests
* fix traverse and modify
* fix filter deletion in geo index optimization rule
* update test definitions
* fix second traverse function
* use port ranges when starting cluster
* reduce memory consumption of cluster test
Now we execute 6 instead of 12 test concurrently.
* reduce extractions to projections
* recycle string buffers in SocketTask
* micro optimizations for mmfiles indexes
* added special lookup function for _key
* moved function into the correct file
* speed up key buffer allocations a bit
* added noexcept specifier
* correctly name variable
* explicitly move bounds
* fix and speedup from/toPersistent functions
* reuse string from ManagedDocumentResult for multiple lookups
* use move-assign
* a bit less work for single server
* speedup AQL function HASH
* single fetch optimization
* performance optimization for the case when no documents need to be returned
* make reduce-extraction-to-projection a RocksDB-only optimizer rule
* cppcheck
* try to fix compile error on MacOS
* bug fix for MacOSX
* missing namespace (in Windows compile)
* reduce extractions to projections
* recycle string buffers in SocketTask
* micro optimizations for mmfiles indexes
* added special lookup function for _key
* moved function into the correct file
* speed up key buffer allocations a bit
* added noexcept specifier
* correctly name variable
* explicitly move bounds
* fix and speedup from/toPersistent functions
* reuse string from ManagedDocumentResult for multiple lookups
* use move-assign
* a bit less work for single server
* speedup AQL function HASH
* single fetch optimization
* performance optimization for the case when no documents need to be returned
* make reduce-extraction-to-projection a RocksDB-only optimizer rule
* Added a first test for remove-filter-covered-by-traverser rule.
* initial try at adding the functions
* Initial try at fixing all cases
* Fixing optimizer rule order
* Changing rule
* excluding quantifier ANY
* Fixing assertion error
* quick fix for some failed traverser cases
* Fixing quantifier related tests
* Adding upper limit for scannedIndex in cluster
* Fixing the mmfiles asserts
* Allow the coordinator to do condition checking on edges again. Used in enterprise.
* Fix naming of optimizer rules (#2739)
* Add testcase to demonstrate #2499
- In subqueries inserts get pushed to the DB-Servers
- these create documents documents on each DB-Server that don't respect the shard-key
- subsequent deletes will fail to detect the shard correctly and will also fail.
* fix for #2499
Note: This is not yet used anywhere, so the changes should be entirely
neutral. We are going to use this in the optimizer rules
scatterInClusterRule
and
distributeInClusterRule
to make the GatherNode do a merge sort, if an index delivers sorted
streams of documents.