* Some refactoring to implement helper methods iff necessary
* Updated comments
* Added static assertions
* Re-enabled check for maintainer mode
* Allow pass-through for LimitExecutor. This is not yet working with fullCount correctly!
* Get fullCount before returning the last row
* Adapted fullCount tests: LimitExecutor doesn't lie about the state of the last row anymore
* Use correct row
* Handle LimitExecutor-stats during fetchBlockForPassthrough
* Fixed LimitExecutorTest
* Removed _stats member
* Added more catch tests
* Bugfix for fullStats
* Removed an erroneous assertion
* Implemented LimitExecutor::skipRows
* Avoid name clash of class enum member to please MSVC
* Test MSVC
* Revert "Test MSVC"
This reverts commit d8325d95318bb83b79c8c4cc9f886d36e484c870.
* CREATE_NEW seems to be taken, too. Next try for MSVC
* Built VPack to ItemBlock helpers, and made SingleRowFetcherHelper more general
* Removed ostream operator because MSVC doesn't like it...
* Implemented SingleRowFetcherHelper::fetchBlockForPassthrough, plus a small framework to test executors
* Removed erroneous include
* Moved code in separate files
* Began writing the extended schema of runExecutor
* Added output operator for ExecutorCall
* Fixed removeWaiting
* Fixed expected output
* Added skipRows to runExecutor
* Added two tests
* Allow empty blocks
* Added two more tests
* Added another test
* Built two different parametrized classes for LimitExecutor
* Some cleanup
* Even more tests
* Fixed a bug found by the new tests
* Fix compile error on windows
* Use native matrix representation in tests
* Updated some comments
* prepared new functions for more precise edge verification
* added tests
* more testing
* validate function added to replace edge functionality
* changelog
* applied requested mchackis refactor wishes
* adjustments for update and replace edge validation
* ruby testing adjustments due more prices update and replace edge verification mechanisms
* used wrong flag for the replacement of an edge process
* adjusted last failing tests
* rm print
* added edge to edge tests
* update iresearch from upstream
* adjust tfidf/bm25 to original behaviour
* update iresearch from upstream
* fix compilation issues
* reduce number of virtual calls
* upgrade iresearch from upstream
* add js test
* Add drop-check for index creation in cluster.
* Move check from callback to regular read.
* Add changelog entry.
* Incorporate review suggestion
Co-Authored-By: Simon <simon@graetzer.org>
* Convert to VPackArrayIterator.
* Wait for _commTasks in unprepare, that is after Cluster::stop
* Chose better method names
* Revert "Chose better method names"
This reverts commit 91e821348740c655f47207af7e570075f2241895.
* Revert "Wait for _commTasks in unprepare, that is after Cluster::stop"
This reverts commit 6551ae90d74fc046369fdb97cc5872706ce1a184.
* Next try, stop ClusterComm threads earlier
* Modified AqlItemMatrix to use two uint32 values to identify for in Block instead of one uint64 value encoding the two and calculation. Also now throw an error as soon as we exceed the limit there
* Removed new error code, thanks jsteemann for pointing out.
* Merged latest iresearch. Removed creation of build-in analyzers from tests
* Updated tests for new analyzer parameter names
* Merged fix for format from iresearch
* Apply suggestions from code review. Corrected typo in variable name.
Co-Authored-By: Jan <jsteemann@users.noreply.github.com>
* backport changes from IResearch upstream
* fix compilation issues
* backport fix from IResarch upstream
* Fixed analyzer parameter name in tests
* Bug fix 3.4/collection babies (#9033)
* Prepare API to create multiple collections in a single request to ClusterMethods to improve speedup
* Added counter on how many collections are successfully created
* Allow multi collection creation one level higher
* CollectionMethods now allow batch createion of Collections
* Improved array size assertions
* Now a graph is createad within a single roundtrip in the agency.
* Added new header files
* Insert collections in the AGENCY with TTL and a isBuilding flag, collections with this flag should not be visisible in the coordinator
* Added forgotten C++ file
* Fixed a rare race condition, and the failing IResearch Tests
* readded callback on DONE, otherwise lists are out of sync
* Fixed assertions to let mocked tests pass...
* Fixed community cluster
* Started fixing IResearch analyzer test, catch-tests are failing ;(
* Solved missed merge-conflict
* Added helper functions in AnalyzerFeature-test
* Refactoring AnalyzerTest Section-Auth
* Refactoring AnalyzerTest Section-Emplace-Duplicates
* Refactoring AnalyzerTest Section-Emplace-Error-Cases. Recovery-Test is now red, it seemed to be green because of invalid test case before.
* Refactoring AnalyzerTest, split GET test into multiple parts, still left 'cluster simulation'.
* Attempt to extract Coordinator / DBServer tests a little bit. This commit starts to break all Coordinator tests. However i am convinced that earlier version did NOT test a cluster situation at all, but some hybrid of SingleServer with full local storage that got told to be a Coordinator from now on, but without any Coordinator setup...
* Temporarly disabled some tests in AnalyzerFeature, as discussed with @gnusi.
* Fixed include guard.
* Temporarily deactivated failing tests
* You shall save your files before you commit...
* Fixed test asserting on plan version, which is now higher than before
* Wait for replication before inserting documents
Also, increased some timeouts and fixed a log message
* Fixed some log levels and a log message
* Removed repair-distribute-shards-like-spec from greylisted tests
* fix for windows
* Fix some uses of atomics (#9141)
* Remove std::move as it prevents copy elision (#9144)
* bug-fix/internal-issue-#549 (#9086)
* do not persist legacy analyzers into _analyzers table
* fix arangosearch upgrade in cluster
* get rid of Vasiliy's shit
* address review comments
* ensure link is synchronized after creation in upgrade
* fix compilation error
* minor cleanup
* fix tests
* distribute '_analyzers' collection as '_graphs'
* comment out Vasiliy's shit part 2
* Remove ArangoSearch views upgrade limit
* do not persist legacy analyzers into _analyzers table
* fix arangosearch upgrade in cluster
* get rid of Vasiliy's shit
* address review comments
* ensure link is synchronized after creation in upgrade
* fix compilation error
* minor cleanup
* fix tests
* distribute '_analyzers' collection as '_graphs'
* comment out Vasiliy's shit part 2
* Coordinators do not unregister at every shutdown.
Instead they create a new short name with every start.
This is needed for the transactions.
* Always new short id for coordinators. Never for DBServers!
* Added filtering analyzers before adding them to view link - duplicates are not allowed any more
* Updated test testAddDuplicateAnalyzers - now it tests analyzers with same names but in different databases
* properly handle shorthand of system analyzer
* don't allow accessing local analyzer from within another database
* ensure local analyzer are not acessible from outside
* fix duplicate ids
* Let only on shard per collection, not per DBServer, be responsible for initialize cursor (and shutdown)
* Reverted assertion
* Changed parameter to const&
* Style correction
* move IResearchViewSort into separate unit
* ensure sort is propagated to IResearchLink
* update iresearch and extend some tests
* implement insertion of sorted values, store value comparator in link
* add tests for VPackComparer
* minor cleanup
* fix issue with sort definiton propagation
* propagate error message from index factory
* add integration tests for sorted indexes, single server
* initial implementation of IResearchViewMergeExecutor
* move iresearch::VPackComparer to separate translation unit
* store collection in IndexReadBuffer for IResearchViewMergeExecutor
* set primary sort from optimizer rule
* add some tests for sorted view case
* extend IResearchViewNode tests
* simplify primary sort definition
* pretty print order condition covered by arangosearch in query explanation
* fix compilation with g++-8
* address catch test failures
* fix tests
* adjust arangosearch optimizer rule to optimize sort in case of cluster
* make tests for sorted indexes work in cluster too
* fix tests
* extend js tests for sorted indices
* fix keyword in query explainer
* ensure sort-limit rule works with views
* backport ngram analyzer fix from upstream
* address jslint errors
* modify IResearchViewSort to support boolean direction specification format
* add some tests
* add tests
* add skip functionality
* extend tests
* add more catch tests
* inline some methods
* address jslint errors
* extend catch tests to reproduce the failure
* add some tests for check fullcount
* add more tests
* extend tests
* temporarily comment out broken tests
* extend js tests
* address review comments
* address jslint errors
* update iresearch
* testing skipSome implementation, default and passThrough
* added simple implementation for default and passthrough skipsome methods
* added skipRows function to enumerate collection executor
* added tests for the enumerate collection skipRows function
* implemented and tested enumeratecollection skipSome
* skipSome tests
* fixed a test, prepared iresearch view exec for skipping
* rm logs
* gcc bug workaround
* changed to original test code as it has been before
* iresearch skipping, added ires skip test
* added index executor skipRows
* added skip blockfetcher, quick exit index
* test
* const dummy and singlerowfetcher skip
* forgot return value
* input wrong initialized
* trying to remove dynamic cast and solve with a different approach
* cleanup
* const skip
* jslint
* Handle skipSome of subqueries correctly
* Removed unused code
* Removed unused member
* Simplified skip variants and enabled IndexExecutor skipping
* A little cleanup, fixed DependencyProxy::skipSome
* Reverted test change
* Tried to make testLimitBlock3 clearer
* Extended test suite
* Bugfix
* Added stats when skipping and fixed a few other things
* Bugfixes
* Moar bugfixes
* Update arangod/Aql/IResearchViewExecutor.cpp
Co-Authored-By: hkernbach <hkernbach@users.noreply.github.com>
* Update arangod/Aql/IndexExecutor.cpp
Co-Authored-By: hkernbach <hkernbach@users.noreply.github.com>
* Update arangod/Aql/IndexExecutor.cpp
Co-Authored-By: hkernbach <hkernbach@users.noreply.github.com>
* applied requested changes
* Fixed a bug in LimitExecutor::expectedNumberOfRows()
* Fix skipSome in catch test RowFetcherHelper
* Fixed a bug in the tests
* Two bugfixes in LimitExecutor::expectedNumberOfRows
* Avoid passing large batch sizes from skipSome to getSome
* Fixed Windows compile errors
* Fixed a skip bug with WAITING in unsorting gather blocks
* Make aql-skipping find some cluster bugs, like the last commit
* Bugfix and additional asserts
* Fixed skipSome counting in IndexExecutor
* Resolved merge conflicts
* Experimental: avoid nested callback
* Still experimental: get rid of more nested callbacks
* Bugfix: count number of documents read correctly
* Rebuild callbacks whenever necessary
* Fixed now dissalowed call.
* Nono rebuild callback refactoring
* Fixed local tests.
* Fixed false compiler warning.
* Use tag dispatching, thanks for the suggestion @mpoeter.
* allow 3.4 behaviour regarding aggregate collect and undefined variable
* added test to check undefined var
* rm print
* remove duplicate doCopyRow
* wrongly removed due merge
* initialize _allowSourceRowUninitialized always as false as default
* try to fix another case
* added missing parenthesis
* optimized if, also added compiler hint
* Do less copying in HashedCollect
* Added a more elegant move stunt. Thanks goedderz.
* Fixed use after free
* Update arangod/Aql/HashedCollectExecutor.cpp
Co-Authored-By: mchacki <michael@arangodb.com>
* Removed useless parameters of buildCallback
* Renamed produceRow to produceRows and adapted a comment
* Renamed BlockFetcher to DependencyProxy
* Applied git-clang-format
* Read docs in EnumerateCollection in batches
* Read docs in IndexExecutor in batches
* Fixed stats with batching
* Fixed a bug in RocksDBPrimaryIndexRangeIterator::nextCovering
* Removed template parameter from ReturnExecutor and enforce it to be passthrough
* Revert "Removed template parameter from ReturnExecutor and enforce it to be passthrough"
This was unfortunately going into the wrong direction.
This reverts commit 6a488ee1d97f519c7382ebf783e4217cdb403458.
* Create a new block with exactly 1 Register for a ReturnBlock that is supposed to be used as Subquery result
* Fixed register assertoin for return block optimization
* nished comment where i stop in the midlle of a sent
* Added custom initializeCursor implementations for Index and EnumerateCollection
* Replace queue with deque to allow clear()
* Replaced queue member calls
* Fixed MSVC++ and C++14 compatibility
* K_SHORTEST_PATHS queries only support one variable in FOR
* catch if the user gives more than one variable in grammar.y
* also give a correct error message
* Test code that catches too many variables for K_SHORTEST_PATHS
* issue 535.1: ensure recovery success if link recovery starts right at the previous marker
* backport: initialize members
* backport: use string_ref instead if string copies
* issue 526.9.1: implement swagger interface, add documentation
* address review comments
* add ngram
* Formatting
* Move REST description to new Analyzers top chapter in HTTP book
* Missed a DocuBlock
* Add Analyzers chapter to Manual SUMMARY.md
* Move REST API description back to Manual
Headlines were broken
* Add n-gram example
* Added RemoteExecutor skeleton
* Moved RemoteBlock implementations to ExecutionBlockImpl<RemoteExecutor>
* Remove unnecessary include to avoid unused function warnings
* Fixed gcc compile error
* Moved Scatter/Distribute block implementations to their new Executor versions
* Applied clang-format
* Added factory, infos and a skeleton for the unordered view executor
* Removed assert based on wrong assumption
* Added members from IResearchViewBlockBase to IResearchViewExecutor
* Moved more code into the ViewExecutor, hopefully enough to produce a working version now
* Added missing reset code, made produceRow work mostly correct
* Removed superfluous parentheses to get more useful output from Catch
* Ported fix 923b6e81ac723d1fe37f8e7bf1ab81149f3a08ef
Original commit message was:
Fixed a race condition in RemoteBlock which was triggered during
shutdown overtaking getSome.
* Applied review comments
* Inject input row instead of an item block + pos into the expression context, plus fixed some tests
* Adapted test. Search tests are now green.
* Do not ask upstream when already DONE
* Removed `limit` from next()
* Simplified code that could handle producing more than one document
* Minor readability change
* Solved two TODOs noted in the review
* Removed leftover references to DistributeNode members in the DistributeBlock
* Reverted removal of "exhausted"
* WIP: Implemented variant with scorers
* Fixed compile errors of the last commit
* Fixed some asserts and calculations
* Fixed violated assertions
* Moved files from IResearch/ to Aql/
* Replaced recursive call with a loop
* Worked on a few TODOs
* Removed IResearchViewBlock
* Set input registers correctly
* Eliminated dependency to the Node in the Executor
* Don't misuse the volatility variables for initialization
* Extended a TODO note
* Removed obsolete includes
* Removed an obsolete include from the tests
* Added missing include
* Read PKs in batches
* Fixed merge conflict
* Fixed merge conflict
* Restrict prefetching of PKs to the number of rows in the current output block
* Fixed merge
* Fix IResearch ASan errors
* Revert "Restrict prefetching of PKs to the number of rows in the current output block"
This reverts commit e0fd8698a3.
* Revert "Read PKs in batches"
This reverts commit c06c4d7a36.
* Began some small step refactoring to introduce batch-reading correctly
* Extracted method fillBuffer
* Extracted method evaluateScores
* Minor changes
* Read data from iresearch index in batches
* Replaced std::deque<IndexResult> buffer by a new class
* Solved minor TODOs
* Fixed last commit
* Fixed merge conflict
* Removed accidentally re-added view blocks
* Implemented SharedAqlItemBlockPtr
* Replaced all AqlItemBlockShell, shared_ptr<AqlItemBlock>, unique_ptr<AqlItemBlock> with SharedAqlItemBlockPtr
* Removed AqlItemBlockShell
* Bugfixes
* Added missing noexcept (used in returnBlock())
* Added nullptr constructor/operator= and noexcept specs
* Removed references to the shell
* Implemented review comments
* Fixed a compile error clang somehow ignored
* Two bugfixes and additional asserts
* Fixed ASan error
* protected AqlItemBlock destructor, and some cleanup
* added SharedAqlItemBlockPtr include in QueryCursor.h
* Added some asserts
* Fixed merge conflicts
* protected returnBlock in AqlItemBlockManager
* optimize away SortNode in case it is covered by an arangosearch view
this implementation is a stub with hard-coded attribute names
* extend IResearchViewMeta with sorting order definition
* make 'IResearchViewMeta::Sort' compatible with 'SortCondition' API
* ensure ArangSearch sort is immutable after creation
* address review comments
* remove unused functions
* more cleanup, virtual functions
* rm old functions
* more cleanup
* more cleanup, rm unused code
* rm of inheritRegisters and cleaerRegisters
* more cleanup, move functions into IMPL and cluster blocks
* used wrong shutdown function
* rm not reachable code
* moved lots of ExecutionBlock stuff to Impl and ClusterBlocks
* trace functions back to executionblock
* rm trace
* rm empty protected
* this getBlock addition, might be useless
* more fixes
* fixes for the distribute executor, hopefully almost done now
* removed obsolete todos
* shutdown var order
* applied requested changes
* re added const
* suppress a warning
* added forgotten test changes
* default destructor, removed not needed function
* refactor name
* Update tests/CMakeLists.txt
Co-Authored-By: hkernbach <hkernbach@users.noreply.github.com>
* Port agency performance tuning for many shards to devel.
* Add more IDs to LOG_TOPIC calls.
* Even more IDs for LOG_TOPIC.
* Fix a duplicate LOG_TOPIC ID.
* Fix an old merging bug in devel.
* Don't hesitate between phases one and two for small clusters.
* Added RemoteExecutor skeleton
* Moved RemoteBlock implementations to ExecutionBlockImpl<RemoteExecutor>
* Remove unnecessary include to avoid unused function warnings
* Fixed gcc compile error
* Moved Scatter/Distribute block implementations to their new Executor versions
* Applied clang-format
* Added factory, infos and a skeleton for the unordered view executor
* Removed assert based on wrong assumption
* Added members from IResearchViewBlockBase to IResearchViewExecutor
* Moved more code into the ViewExecutor, hopefully enough to produce a working version now
* Added missing reset code, made produceRow work mostly correct
* Removed superfluous parentheses to get more useful output from Catch
* Ported fix 923b6e81ac723d1fe37f8e7bf1ab81149f3a08ef
Original commit message was:
Fixed a race condition in RemoteBlock which was triggered during
shutdown overtaking getSome.
* Applied review comments
* Inject input row instead of an item block + pos into the expression context, plus fixed some tests
* Adapted test. Search tests are now green.
* Do not ask upstream when already DONE
* Removed `limit` from next()
* Simplified code that could handle producing more than one document
* Minor readability change
* Solved two TODOs noted in the review
* Removed leftover references to DistributeNode members in the DistributeBlock
* Reverted removal of "exhausted"
* WIP: Implemented variant with scorers
* Fixed compile errors of the last commit
* Fixed some asserts and calculations
* Fixed violated assertions
* Moved files from IResearch/ to Aql/
* Replaced recursive call with a loop
* Worked on a few TODOs
* Removed IResearchViewBlock
* Set input registers correctly
* Eliminated dependency to the Node in the Executor
* Don't misuse the volatility variables for initialization
* Extended a TODO note
* Removed obsolete includes
* Removed an obsolete include from the tests
* Added missing include
* Read PKs in batches
* Fixed merge conflict
* Fixed merge conflict
* Restrict prefetching of PKs to the number of rows in the current output block
* Fixed merge
* Fix IResearch ASan errors
* Revert "Restrict prefetching of PKs to the number of rows in the current output block"
This reverts commit e0fd8698a3.
* Revert "Read PKs in batches"
This reverts commit c06c4d7a36.
* Began some small step refactoring to introduce batch-reading correctly
* Extracted method fillBuffer
* Extracted method evaluateScores
* Minor changes
* Read data from iresearch index in batches
* Replaced std::deque<IndexResult> buffer by a new class
* Solved minor TODOs
* Fixed last commit
* Fixed merge conflict
* Removed accidentally re-added view blocks
* Implemented review comments