* move snappy up
* Fix compile warning with MSVC (#9291)
* one more warning
* use right type
* only define variable if we actually use it in the code
* only define variable if we actually use it in the code undo
* use right type
* 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
* Add failing tests
* Add tests for Buffer#slice
* Add tests for Buffer#new
* Skip failing tests
* Implement changes
* Unskip failing tests
This reverts commit 9f8a34bd74e152b7b3158fea79b12e6da8343001.
* Fix implementation
* Remove meaningless test
This test only succeeded because of a broken implementation of the Buffer constructor. It doesn't really do anything useful.
* Add note to CHANGELOG
* 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.
* 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
* 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
* Began work on generic traversal testing framework
* Translate shard ids to smart attributes
* Minor fixes
* Added a TODO note
* fixed tests
* cleanup
* first tests inside new traversal framework working
* added single server diamond tests
* Enable sharding in aql-graph-traversal-generic-graphs.js
* Tried to fix smart sharding
* Fixed smart graph name clashes, some cleanup
* Added meta tests
* Added TODO note
* Fixed single server
* Added a BFS order check
* Renamed test
* added more dfs and bfs tests for the openDiamond graph
* Added new graph "largeBinTree"
* Fix Map usage
* added smallCircle graph, added three dfs tests
* added smallCircle graph, added three dfs tests
* more smallCircle dfs tests
* Fixed largeBinTree shardings, and long graph names
* Fix long suffixes
* Provided names for shardings
* Added a log message
* more bfs smallCircle tests
* more bfs smallCircle tests - global
* smallCircle picture
* added completeGraph to graph test suite
* added more dfs tests for the complete graph up to depth 3
* Removed duplicate function definitions
* added depth 2 dfs complete graph test, added missing test to the exports
* Added test for largeBinTree
* added three path graphs, easy, advanced and more advanced
* Added a working check for bfs with global uniqueness
* Fixed usage of bfs checks
* Fixed expected input for two tests
* Added some static assertions to largeBinTree
* Oops
* added more advancedPath dfs tests
* better formatting of the visual graph
* more dfs advanced graph tests
* Implemented all easy path test combinations
* Fixed testAqlGraphQuery
* Fix in bfs check error reports
* Removed duplicate test
* Added advancedPath BFS tests
* Updated comments
* Fixed new tests
* Fixed graph description
* added more complete graph bfs tests
* added more complete graph bfs tests
* added testCompleteGraphBfsUniqueEdgesNoneD1 and testCompleteGraphBfsUniqueEdgesNoneD2
* added testCompleteGraphBfsUniqueVerticesUniqueEdgesPathD3 test
* added a few more complete graph bfs checks
* Extended a comment
* 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
* Unbreak aardvark when --foxx.api false
The easiest way to disable the aardvark foxx routes is to just skip the
import and mount altogether. The previous approach caused the service to
throw an error because the module doesn't actually export anything.
There's no need to prevent the export if we just don't import the module
to begin with.
* Add an error code for service api disabled
* Throw an actual error when accessing Foxx API routes
* Throw an error when using legacy Foxx API
There's no easy way to use a catch-all here so disable them one by one. No new routes will be added to this API and it'll go away in 4.0 so there's no risk of forgetting to add the throw-check in new routes.
* Render subnav without delay
The subnav doesn't need the perm check results but we need the subnav to exist so we can populate it in other parts of the app. This fixes the subnav not showing up when reloading certain views (e.g. install service via upload).
* Hide ONLY the Foxx store when it is disabled
We still want to allow installing and upgrading/replacing services. We just don't want to show the store.
* Hide Foxx services in frontend if Foxx API is disabled
* Build aardvark
* fixed typo in disable check, fixed tests
* 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
* 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
* 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
* Refactor ConstantWeightShortestPathFinder tests
* Move the functions which are used both in ConstantWeightShortestPathFinder
and KShortestPathsFinder into GraphTestTools
* Don't display spurious error messages when there are multiple options
for found paths anymore
* Use factored out code for Graph testing in KShortestPathsFinder
* Removed useless parameters of buildCallback
* Renamed produceRow to produceRows and adapted a comment
* Renamed BlockFetcher to DependencyProxy
* Applied git-clang-format
* 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
* issue 526.6: implement REST and V8 handlers for the iresearch analyzer feature
* address typo
* remove excess comments
* temporarily comment out tests failing on MacOS
* temporarily comment out more MacOS-only test failures
* precondition plan / version in compaction / store TTL removal independent of local _ttl set
* Agency init loops break when shutting down.
* assertion failures in store on restarting following agents
* Minor porting fixes from 3.4
* Fixed maybe-uninitialized warnings by removing unnecessary boost:optionals
* Fixed use after free
* Update arangod/Aql/SingleRemoteModificationExecutor.cpp
* Fixed another autocast number=>bool thanks c !
* Fixed wrong usage of almost identically named variables
* issue 526.3: update analyzer feature to store analyzer definitions in per-vocbase system collections
* address merge issues
* address another merge issue
* don't run compact() on a collection after a truncate() was done in the same transaction
running compact() in the same transaction will only increase the data size on disk due to RocksDB not being able to remove
any documents physically due to the snapshot we take at transaction start.
Decoupling the truncate transaction from the compact operation allows finishing the truncate transaction first, so we can
get rid of the snapshot. Running compact afterwards is then free to physically remove all the data.
As a nice side effect this change will also speed up the truncation of larger collections, because the compact will run
faster.
This change also exposes db.<collection>.compact() in the arangosh, in order to manually run a compaction on the data
range of a collection should it be needed for maintenance.
* fix documentation anchors
* Ignore satellite collections in shrinkCluster in agency.
* Abort RemoveFollower job if not enough in-sync followers or leader failure.
* Break quick wait loop in supervision if leadership is lost.
* In case of resigned leader, set isReady=false in clusterInventory.
* Fix catch tests.
* issue 523.1: address build issues, ensure FlushFeature subscriptions are cleared during stop(), assert that they are deallocated
* backport: account for Flush subscriptions validly surviving past FlushFeature::stop()
* fix comment typo
* init commit
requested changes
added tests
removed old distinct collect block code
distinct exec test
* devel merge and added tests including input data
* added test
* added one more input variable, added another waiting test
* Added an optimization where the SortExecutor prefetches all rows from above and only allocates a result block of the expected size
* Fixed catch tests
* APplied review fixes
* Added data to resilience tests. Forward-port of #7193.
* Begin work on repair-dsl suite to run with data, too
* Use and check data in all tests
* Fixed jslint errors
* Added data to moving-shards-cluster test
* Added additional asserts during createBrokenClusterState()
* Improved failure messages
* Minor cleanup
* Greylist affected tests
* Un-greylist resilience tests, as the fix for moving leaders is now merged
* Prevent "Duplicate testsuite" error
* Added missing require
* Fixed hidden merge conflict
* Added BlockFetcher, added a minimal test for SingleRowFetcher
* move RegInfo in types.h
* fix getSomeLogic
* Added the AqlItemMatrix implementation. Not yet tested!
* Fixed nr called => Waiting ratio in AllBlocksFetcherMock
* fix compiling
* add RegInfo to produceRow
* BlockFetcherHelper now returns a matrix
* pass RegInfo as requested into AqlItemRow ctor
I would still keep it out as the ItemRow should be a thin view.
* allow to change the AqlItemRows cheaper / remove _sourceRow member
* implement copyRow for AqlItemRow
* organize cleanup for outputblock used in getsome / shrink if necessary
* Added tests for SingleRowFetcher, cleanup in AqlItemRow
* start mocking
* Added test helpers, began work on a more complex test for SingleRowFetcher
* Re-added RegInfo again to AqlItemRow
* helper, added test case for FilterExecutor
* merge fixed compile
* Removed trx name where it is actually not used
* Made some functions TEST_VIRTUAL for mocking.
* implemented Sort executor
* Fixed the BlockFetcherHelper API, to always return a matrix if it is not waiting
* Implemented a SortExecutor test with data
* disable borken test
* Fixed test on SortExecutor. Green now, needs some more testing
* change a bit how the AqlItemRow is used in a test
* Added another test for the SingleRowFetcher
* Added more tests for SingleRowFetcher
* fix getRegisterInfo
* Moved RegInfo into ExecutorInfos. Also now use the FilterExecutor implementation in production code instead of FilterBlock. Starting integration testing.
* add more asserts
* Fixed undefined behaviour in TestCode.
* Do not shrink an empty output block
* switch to block pointers in AqlItemRow
* return blocks in the row fetcher
* Updated grammar.cpp
* Updated (fixed) tests to verify returnBlock
* Improved const-ness
* Changed BlockFetcher constructor in order to make it mockable
* Implemented BlockFetcherMock and rewrote some tests with it
* Updated a comment
* Updated comments
* init commit - EnumerateListExecutor, including EnumerateListExecutorInfos
* add potential fix for ItemMatrix
* Replaced fakeit with BlockFetcherMock in another GIVEN block
* Replaced the last fakeit mocks with BlockFetcherMock and removed fakeit
* Updated function definition
* included missing arary included
* Renamed AqlItemRow to InputAqlItemRow
* Split AqlItemRow into Input~ and Output~ classes
* EnumerateListExecutor + Tests
* Added tests for AqlItemRows
* Added test file for AqlItemRows...
* Made the ostream operator for AqlItemBlocks available to Logger and Catch info
* build error
* Added a second test for AqlItemRows. Need to make input space invalid now, sth. acidential referencing will show up
* Introduce a block ID in the InputAqlItemRow
* Copy output values correctly, avoid InputAqlItemRow pointers
* Added a test for registerClearout
* Fixed tests
* Added a test for adding new values
* Added a test for an incomplete row write to not count as produced.
* Fixed getSome and a test
* Added a test for larger AQL values in AqlItemRows
* Fixed compile error in hidden merge conflict
* Added tests for Filter counter in FilterExecutor
* OutputAqlItemRow now takes responsibility of the block
* Handed responsibility of blocks in ExecutionBlockImpl to OutputAqlItemRow
* EnumerateListExecutor should be close to its finish. Tests need to be fixed, not ready yet.
* better swap
* OutputAqlItemRow now takes ExecutorInfos
- added several assert
- implemented a more strict and safe produced() logic
* enum list test
* Added a more specific error message
* Removed OutputAqlItemRow.changeRow()
* fix invalid block freeing
* changed order of input/output registers
* Fixed a test
* Fixed matrix width in test
* fix failure tests
* finished enumlist tests
* Implemented AllRowsFetcher and tests for it
* Bugfix in skipSome stub
* insert sort and enumerate list executors
into exectuion nodes' create functions
* fixed singlerowfetcherhelper, added tests
* small fixes
* add missing Infos
* restore accidentally deleted scorer
* make it compile
* fix executor info creation / usage
* make use of output var in EnumarateListNode
* Added Executor::Stats and FilterStats
* Extended FilterExecutor tests with stats, added node tracing to getSome
* Fixed Sort-&EnumerateList- Executor to use the new return type with stats
* Fixed compile error in tests
* Changed *ExecutorInfo constructors and classes to contain the necessary register informations
* Made an ExecutorInfo construction more readable
* Updated comments
* Fixed checks in OutputAqlItemRow::setValue()
* Add comparison method to SortRegister. Forbid construction without one.
* Implemented ExecutionBlockImpl::initializeCursor
* more mocking inside ExecutionBlockImplTest
* Minor changes
* Avoid AqlValueGuard destroying the value copied into the output block
* Disabled failure tests that do not apply to the new Sort implementation
* further mocking of test modules
* Removed constexpr for compatibility with outdated gcc versions
* add some failure tests - getsome works differently
therefor we do not test the old behavior
* fix sort node
* clean up alq item matrix
* Removed the transaction methods from read-only access to AqlValues (get and at) and repliced by CollectionNameResolver where necessary. Still left: some calls extract VPackOptions from the Transaction. Compare needs a BuilderLeaser only.
* textexecutionhelper, execimpl test
* Eliminated FilterBlock
* Eliminated the EnumerateListBlock
* first successful running test of executorblockimpl
* Eliminated SortBlock
* fixed testexecutor helper
* Made the ExecutorInfos private to the executors again.
* Implement and use AqlItemBlockShell (#6562)
* Added AqlItemBlockShell
* Minor changes
* Mostly replaced AqlItemBlock with ~Shell.
Current state:
- arangod compiles
- OutputAqlItemRow has yet to be changed
- catch tests have yet to be fixed
* Use AqlItemBlockShell in OutputAqlItemRow
* Added registersToKeep to AqlItemBlockShell
* Removed ExecutorInfos from OutputAqlItemRow
* Split AqlItemBlockShell into Input~ and Output~
* Changed tests so they compile again - they're still not yet working.
* Fixed tests
* fixed building, modified impl test
* Removed now superfluous BlockFetcherMock functions
* more execimpl testing
* Removed block IDs
* more impl testing
* Reduced dependencies of BlockFetcher construction
* Bugfix, cleared documentation
* Removed debug-output
* Adressed minor code review remarks
* Moved method definitions into .cpp files to avoid includes
* Added assertions
* Added comments
* Addressed several more review comments
* Added missing includes
* more testing, not finalized yet
* added missing header file
* added a test for execution block impl
* removed old comment
* Improved lookup algorithm to identify correct block/row combination in AqlItemMatrix
* added test for ExecutionBlockImpl
* move utility to the right position
* Bugfix and a TODO note
* Bugfix: use a uniform ResourceMonitor in tests
* Made OutputAqlItemRow::setValue clone by default and copy on move
* Replaced the getRow lookup with a binary search
* enumerate tests
* Disable emplacing of AqlValues in ItemBlock
* Reenabled std::enable_if will warn until oskar is using c++17 as standard.
* Add helper function to create a shared pointer of an unordered_map<RegisterId>
* CalculationExecutor (#6570)
* add CalculationExecutor skeleton
* first shot of CalculationExecutor
* fix minor bugs
* handle references
* use new shared pointers
* commit to share work
* fix failure test
* reformat with clang-format
* add test for CalculationExecutor
* fix CalcualtionExecutor test
* clean up
* Removes unused code
* clean up includes
* fix/remove comments
* add changes requrested by hacki
* ReturnExecutor (#7932)
* add skeleton to CMakeLists.txt
* build most parts of the ReturnExecutor
* This commit removes ReturnBlock and adds some debug messages
removed inheritRegisters functionality
* finish ReturnExecutor
* add test for return executor
* remove unused code
* add stats and clean up includes
* verify result in ReturnExecutorTest and move *Stats to "Aql/Stats.h"
* Fixed algorithm to find correct row in a MultiRow Input
* fix full count and failure tests (#7969)
* fix full count and failure tests
* fix filter test
* WIP: fixes
* fixed
* NoResultsExecutor (#7953)
* add NoResultsExecutor
* clean up
* some review changes
* fix test
* fix
* fix WAIT -> DONE
* remove unused code (#7995)
* create skeleton for SingletonExecutor (#7957)
* create skeleton for SingletonExecutor
* WIP: continue implementation
* WIP: add fetcher skel
* WIP: add inject function to ConstFetcher
* rename SingletonExecutor to IdExecutor
* WIP: replace singleton node
* WIP: More Debugging on IdExecutor
* WIP: IdExecutor
* WIP: add failure tests
* make iresarch test work but not pass
* WIP: add ConstFetcherHelper
* fix test
* fix tests
* fix iresearch tests
* fix wording
* add review changes
* add review change to SingleRowFetcher as well
* fix test
* fix error when increasing index
* temporarily remove fold-expression
* clean up
* Fix gcc compile error
* Feature/aql limit executor (#7982)
* limit executor
* removed not needed tri assert
* rm _invariable in limitnode
* find out if we are in a subquery
* queryDepth in limit infos
* added missing queryDepth
* finalizing limit executor
* added more tests, fixed a condition
* add assert to test
* added missing fullcount check
* typo
* minor changes, fixed test
* test
* wrong check
* fixed tests
* false merge
* remove basic blocks
* remove basic block includes
* include sort order
* removed not needed basic blocks
* removed not needed basic blocks
* fix test
* Feature/remove input output shells (#8090)
* Added template parameters to allow for block pass-through to be chosen at compile time
* Adapted the tests to match the new template parameters
* Adapted ConstFetcher and IdExecutor to match the new templated fetcher
* Implemented pass-through, fixed SingleRowFetcherTest
* Fixed implicit merge conflicts
* Fix assumptions that are violated by block pass-through
* Added 2 regression tests
* Fixed test expected data
* Fix nullptr dereference
* Fix handling of non-invalidated input variables
* Fix nullptr dereference
* Fix handling of non-invalidated input variables
* Fixed compile error
* Fixed a useless and leaking allocation
* Try a less implicit fix
* Allow IdExecutor and ConstFetcher to be used with pass-through
* Performance patches from @mchacki
* Fixed merge conflicts, and bugs in ConstFetcher
* Fixed atMost pass-through, and blocks that call their parents too often
* Removed InputAqlItemBlockShell (except from tests)
* Removed OutputAqlItemBlockShell (except for tests)
* Moved implementations of OutputAqlItemRow methods in the header
* Moved SingleRowFetcher::fetchRow to the header to allow inlining
* Reenabled returnInheritedResults optimization
* Enable passThrough for ReturnExecutor with inherited results
* Specialized CalculationExecutor to avoid unneccessary conditional jumps
* Made tests compile again (but are currently broken)
* Fixed ReturnExecutor test
* Move created InputRows out of AqlItemMatrix
* Limit- and EnumerateList Executors no longer fetch from upstream after DONE
* Added comments
* Added experimental AqlItemBlock optimizations
* Removed _numEntries, added comments
* Allow executors to pass an "atMost"-limit to the SingleRowFetcher (for LIMIT)
* Let the LimitExecutor pass atMost upstream
* Bugfix for FullCount
* Feature/aql enumeratecollection executor (#8028)
* initial commit
* enum coll executor
* buildable version of enumeratecollectionexecutor
* wrong usage of outVariable
* Added template parameters to allow for block pass-through to be chosen at compile time
* Adapted the tests to match the new template parameters
* Adapted ConstFetcher and IdExecutor to match the new templated fetcher
* more fixes, still some tests failing
* Implemented pass-through, fixed SingleRowFetcherTest
* Fixed implicit merge conflicts
* adding missing set value (remember optimize todo), optimized constructor
* removed old enumerate collection blocks
* Fix assumptions that are violated by block pass-through
* Added 2 regression tests
* Fixed test expected data
* Fix nullptr dereference
* Fix handling of non-invalidated input variables
* Fix nullptr dereference
* Fix handling of non-invalidated input variables
* Fixed compile error
* Fixed a useless and leaking allocation
* added broken uncompilable executor test
* Try a less implicit fix
* fix mocking
* enumerate collection executor test
* remove class, use only static function.
* clean up test after merging with main branch
* Allow IdExecutor and ConstFetcher to be used with pass-through
* Performance patches from @mchacki
* Fixed merge conflicts, and bugs in ConstFetcher
* Fixed atMost pass-through, and blocks that call their parents too often
* Removed InputAqlItemBlockShell (except from tests)
* Removed OutputAqlItemBlockShell (except for tests)
* Moved implementations of OutputAqlItemRow methods in the header
* Moved SingleRowFetcher::fetchRow to the header to allow inlining
* Reenabled returnInheritedResults optimization
* Enable passThrough for ReturnExecutor with inherited results
* Specialized CalculationExecutor to avoid unneccessary conditional jumps
* Made tests compile again (but are currently broken)
* Fixed ReturnExecutor test
* Limit- and EnumerateList Executors no longer fetch from upstream after DONE
* Removed an assertion which seems to be incorrect during bootstrap.
* Inlined AQL ItemMatrix and removed unused elements in other Executors
* Now inline + Move in AqlItemMatrix, seems to be overall best performing
* Bugfix: Do not returnInheritedResults on DBServers
* Fixed LIMIT test, and made it more thorough.
* Fixed createion of NoResultBlock creation in IResearch Nodes. Also relaxed an assertion
* Reactivated failure point, now identical with anotherone in OutputRow, need to unified
* Bug fix: do not mutate the offset in the LimitExecutor (#8109)
* Introduced test
* Fixed LimitExecutor to not mutate its infos, so it works correctly in subqueries
* Fixed crashes in CatchTests
* Fixed non-maintainer build
* try to fix subqueries
* Fix isInSubQuery for non-singleton nodes.
* remove useless while true
* Feature/aql blocks by line dan sort (#8143)
* Add SortNode::SorterType to SortExecutorInfoss.
* prepare imple of sort executor
* WIP: add some code for dan sort
* WIP: working at pushRows
* WIP - try to add Dan's heap-sort
* re add missing test
* 2 fixes
* fix
* Dan's tests are working
* remove unused variable
* remove SortBlock.cpp from CMakeLists.txt
* remove hack and provide an extra method to set the _baseIndex
* Simplified ContrainedSortExecutor.
* fix forgotten variable
* update doc
* Assert that we do not use functions that might return wrong results.
Preconditions or invariants the functions rely on are broken. Therefore
the functions can not be used. This is asserted in maintainer mode.
* add function to restore row invariant
* do not emplace and pop_back if not necessary
* Use clear registers in case we can move the rows.
* WIndows opst zirkus
* Actually destroy AqlItemValue
* Feature/traversal executor by line (#8000)
* Added stubs for TraversalExecutor, no implementation, not compiled in yet
* Included production code of TraversalExecutor and made it compile. Now implement
* Implemented production code for trivial tests, if no row is reaching the traverser.
* Fixed TraversalExecutor code to pull all rows from above and added tests. No traversal yet, this is next
* Intermediate blind commit might not work
* Fixed compile issue in test code
* Created a shared place for Mocks in tests and moved the StorageEngineMock there, also started a shared place for mock servers, most test will need the same server in order to work.
* Fixed travesalExecutor tests. Now able to create tests with actual input.
* Added successful test in TraversalExecutor, that Traverser as started with correct start vertices (by inputRegister)
* Further test cases
* Added stubs for TraversalExecutor, no implementation, not compiled in yet
* Included production code of TraversalExecutor and made it compile. Now implement
* Implemented production code for trivial tests, if no row is reaching the traverser.
* Fixed TraversalExecutor code to pull all rows from above and added tests. No traversal yet, this is next
* Intermediate blind commit might not work
* Fixed compile issue in test code
* Created a shared place for Mocks in tests and moved the StorageEngineMock there, also started a shared place for mock servers, most test will need the same server in order to work.
* Fixed travesalExecutor tests. Now able to create tests with actual input.
* Added successful test in TraversalExecutor, that Traverser as started with correct start vertices (by inputRegister)
* Fixed leftovers from rebase
* Refixed mocks in different folder
* Fixed Mock import
* Fixed Calculators Exector Test to use the unified mocked server.
* Implemented logic for the TraversalExecutor. Also added tests for it. Not fully complete though
* Added validation of result values
* Added usage of constant register in traversal executor
* Included filter variables in traersal executor. Added test for const input. And moved MMDR into base traverser class for simplicity
* Added ostream operators on AQLValue and AqlInputRow. Not 100% done yet but good enough
* Added a shutdownable ExecutionBlock. Some blocks need to implement a specific shutdown still. I added this class to make it easier to eliminate them when the time is due.
* Removed ostream operator for INPUT row again, does for some reason not compile on Linux0o
* Fixed initialization order
* Removed classwrapper for shutdown.
* Applied review changes
* Refixed failing tests, API is not subject to change
* Fixed CatchTest (wrong usage of string literal in test case)
* Feature/shortest path executor (#8042)
* Added stubs for TraversalExecutor, no implementation, not compiled in yet
* Included production code of TraversalExecutor and made it compile. Now implement
* Implemented production code for trivial tests, if no row is reaching the traverser.
* Fixed TraversalExecutor code to pull all rows from above and added tests. No traversal yet, this is next
* Intermediate blind commit might not work
* Fixed compile issue in test code
* Created a shared place for Mocks in tests and moved the StorageEngineMock there, also started a shared place for mock servers, most test will need the same server in order to work.
* Fixed travesalExecutor tests. Now able to create tests with actual input.
* Added successful test in TraversalExecutor, that Traverser as started with correct start vertices (by inputRegister)
* Further test cases
* Added stubs for TraversalExecutor, no implementation, not compiled in yet
* Included production code of TraversalExecutor and made it compile. Now implement
* Implemented production code for trivial tests, if no row is reaching the traverser.
* Fixed TraversalExecutor code to pull all rows from above and added tests. No traversal yet, this is next
* Intermediate blind commit might not work
* Fixed compile issue in test code
* Created a shared place for Mocks in tests and moved the StorageEngineMock there, also started a shared place for mock servers, most test will need the same server in order to work.
* Fixed travesalExecutor tests. Now able to create tests with actual input.
* Added successful test in TraversalExecutor, that Traverser as started with correct start vertices (by inputRegister)
* Fixed leftovers from rebase
* Refixed mocks in different folder
* Fixed Mock import
* Fixed Calculators Exector Test to use the unified mocked server.
* Implemented logic for the TraversalExecutor. Also added tests for it. Not fully complete though
* Added validation of result values
* Added usage of constant register in traversal executor
* Included filter variables in traersal executor. Added test for const input. And moved MMDR into base traverser class for simplicity
* Added ostream operators on AQLValue and AqlInputRow. Not 100% done yet but good enough
* Added a shutdownable ExecutionBlock. Some blocks need to implement a specific shutdown still. I added this class to make it easier to eliminate them when the time is due.
* Removed ostream operator for INPUT row again, does for some reason not compile on Linux0o
* Fixed initialization order
* First draft of shortest path executor
* Fixed logic bugs, Local AQL tests succeed
* Added first version of ShortestPathExecutor tests. Edge output tests are missing yet.
* Added EDGE output tests
* Replaced TraversalStats with NoStats, they have never been tracked...
* Removed obsolete ShortestPathBlock.
* Removed classwrapper for shutdown.
* Applied review changes
* Refixed failing tests, API is not subject to change
* windows macro opst circus
* Clear registers per block, not per row (#8164)
* Fixed compilation under linux again...
* issue 466.4: implement persistence of IResearchLink WAL flush marker
* address enterprise test failure
* address test failures
* treat missing collections/indexes as potentially removed
* change view asertios to match collection assertions
* convert assertions to exceptions since they are possible
* revert assertion removal since assertions are actually valid for coordinator
* address scenario where link is dropped twice
* check for data store state before returning error
* revert last change since it's not valid for MMFiles
* add ability to restrict collections scope of ArangoSearch view in query
* fail if collection which is not registered with a view was specified in options
* allow bound parameters to be used with ArangoSearch view options, add unit tests
* fix tests
* add tests for cluster
* fix issue in deseralization logic
* fix cluster tests, extend integration tests
* more tests
* fix failing cluster test
* address review comments
* address test issues
* Fixed bug where the Foxxmaster doesn't reset jobs after a crash when it should, or a non-master coordinator removes jobs in progress during startup
* Added a regression test
* Updated CHANGELOG
* Fixed non-maintainer compile
* issue 511.9.1: track DataSource instance instead of only its name in QueryCache
* address use of invalid function
* fix expected test result
* address merge issue
* Decoupled IO handling from Scheduler.
* Fixed SSL start up bug.
* Replaced Scheduler with new worker farm implementation.
* Added minimal statistics and info string for Scheduler.
* Added support for timed submissions.
* Updated delayed submission api. Updated code that used timers.
* Extracted new Scheduler into a virtual parent class. The implementation can now depend on the usecase.
* Signal handler now working.
* Changed threads names, `_stop` is atomic, check for failure during thread start + exception handling like old scheduler did.
* Commented on source code and added TODOs.
* Played around with start-stop-conditions
* Play around with start stop condition.
* start stop cond
* Sart Stop Conditions
* Removed bad cv_status check.
* Bug fix: now compare the actual objects instead of pointer values. Setup t1 and t2 depending on the thread id.
* Moved most of the stuff now unrelated to the Scheduler to GeneralServer. Got rid of JobGuard.
* Instead of waiting for a thread to terminate, put it on a clean up list and check for its termination in each supervisor run.
* Allow detaching long running threads.
* Fixed test mock.
* Updated the WorkHandle logic. Removed post functions.
* Fixed crash when obtaining shared_ptr from this in destructor.
* Added lost mutex.
* Fixed memory leak.
* Fixed merge bug.
* Changed a lot of code to optimize the scheduler.
* Fixed bug of invalidated iterator. Dont remove task on shutdown at different places. Let scheduler threads run until queue is empty.
* Only by value calls to queue.
* Added options again.
* Clean up of code.
* UI Request Lane added.
* Bug fixes in Scheduler.
* Applied reformat.
* Use sigaction.
* The Rocks Edge index now states that it covers _from and _to and can be used as a covering index for both.
* Moved the ExecutionState checkmark in query to a later point. It actually still included parts of Instantiation in cluster
* Updated test for the new feature, it now covers more states
* Updated changelog
* Updated ClusterIndex to support RocksDBEdgeIndex covering
* Removed assertion, during startup this assertion is not hold
* Replaced inplace builder by a leased builder
* Update CHANGELOG
Co-Authored-By: jsteemann <jsteemann@users.noreply.github.com>
* Update CHANGELOG
Co-Authored-By: jsteemann <jsteemann@users.noreply.github.com>
* issue 511.5: remove cid from IResearchPrimaryKey since iresearch data-stores are per-collction, minr code cleanup
* get rid of CID field in a document
* make ArangoSearch PK encoding/decoding logic explicit
* issue 511.4: ensure IResearchLink can be initialized without view as required for db-server, minor code fixes and cleanup
* remove unnessesary checks
* revert last change due to test failures
* fix typo in change revert
* try to address random test failures