* Replace template <bool blockPassthrough>
by template <BlockPassthrough blockPassthrough> where BlockPassthrough is an
enum class.
This is mainly for better readability and for some type safety.
* Fixup some implicit conversions to bool
* Added TODO notes
* Pass limit of constrained sort to sorting gather
* Count output rows, and added assertions
* Extracted row-producing code in a reusable way
* Implemented SortingGatherExecutor::skipRows
* Fixed signature
* Fixed an assertion
* Added limit to (de)serialization
* Fixed an assertion
* Fixed an atMost calculation
* In the sort-limit optimization, apply limit to sorting gather as well
* Fixed optimizer rule reporting modification
* Added missing initialization
* Fix: Do not produce more rows than the limit when skipping first
* Fix: pass limit when cloning
* Updated CHANGELOG
* Fixed atMost intricacies
* Enable IPO (LTO) via CMake
* Use separate IPO_ENABLED variable
* Enabled IPO for more binaries
* Enabled IPO for arangobackup
* Suppress an MSVC warning (though it is not unjustified...)
* Fix static builds, broken due to Policy CMP0060 introduced in cmake 3.3
* Removed policies superseded by minimum cmake version
* Disable IPO with google tests due to a g++ bug
* Disable IPO with google tests only on AUTO
* Disable warning for correct line
* Begin de-inlining Aql
* de-inlining Aql: 2nd batch
* de-inlining Aql: 3rd batch
* de-inlining Aql: 4th batch
* Moved code out of ifdef
* Enabled IPO for additional libs
* Fixed some problems found with IPO enabled
- Fixed ODR violation in Pregel
- Removed unused code in ClusterMethods
- Avoid possible uninitialized variable usage
* Set IPO globally, except for 3rdParty libs
* De-inlined AstHelper again (was undone due to a previous merge conflict)
* Added missing .cpp file
* Fixed compilation with MSVC
* Removed superfluous includes from deinlined AQL header files
* Added includes for size_t
* Deleted outdated files
* De-inlined files that were undone during the merge
* Removed includes from files that were undone during merge
* Fixed merge conflicts
* Added first draft of ShadowRow Interface
* Refactored RegisterPlan and pulled it out of the ExecutionNode
* AqlItemBlock now has an additional hidden register to store subquery depth infromation. Right now no shadow rows are created, however thy could now make use of this situation
* Added API and test to insert new shadow rows into an OutputRow.
* Extrated test helper function
* Added API and tests to consume ShadowRows. Interface is there and compiles with templates, we might need to implement further underlying functions later on as we make progress on ShadowRows, it is only implemented in the minimal way (intentionally)
* Added a test for nested ShadowRows and adapted OutputRow accordingly.
* Added additional memory include, seems to be required under GCC not udner CLANG
* it actually helps to save fies before commiting them...
* Fixed serialization/Deserialization of AqlItemBlock to contain the hidden subquery register now
* Added a c++ test for AqlItemBlock. It just covers the basics thus far and needs to be improved.
* Fixed toVPack of AqlInputRow for subqueries. Also added serialization / deserialization tests for AqlItemRow
* Added a c++ test for inputAqlItem row serialization => AqlItemBlock deserialization
* Attempt to fix :windows: compile warning
* Added a serialization format to be backwards compatible to 3.5 whenever AQL item blocks need to be send over to remote nodes.
* Added more tests for serialization of shadow rows, and fixed a bug revealed by this
* Apply suggestions from code review
Thank you for review!
Co-Authored-By: Tobias Gödderz <tobias@arangodb.com>
* Review comments. Thanks for spotting
* Fixed hidden merge conflicts
* Attempt to explain windows on how one can actually cast numbers into other number types...
* Update arangod/Aql/AqlItemBlockSerializationFormat.h
Co-Authored-By: Tobias Gödderz <tobias@arangodb.com>
* 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>
* 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
* initial split into sorted and unsorted blocks
* some fixes
* move gather blocks out of header
* cleanup
* cleanup
* ensure ExecutionBlock constructor is noexcept
* extract sorting logic into separate SortingStrategy class
* ensure we not rebuild heap each getSome/skipSome call
* cleanup API attempt
* Revert "cleanup API attempt"
This reverts commit c824de1a1d29e2cb7f405138f830cc0e02e7667b.
* Revert "Revert "cleanup API attempt""
This reverts commit 65a2c95f6fdbbcbd00d6582af4d354fe339d4738.
* fix comments
* fixes after review
* more fixes after review
* 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