1
0
Fork 0
Commit Graph

66 Commits

Author SHA1 Message Date
Jan b124113190
abort write transactions (#10248) 2019-10-23 15:49:47 +02:00
Dan Larkin-York a83c2323c9 Refactor ApplicationServer stack (#9965) 2019-09-25 17:31:59 +02:00
Tobias Gödderz 82b0a5e745 De-inline in AQL (#10025)
* 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
2019-09-25 11:20:03 +02:00
Michael Hackstein 265eb1549d
Feature/aql subquery opt shadow row interface (#9987)
* 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>
2019-09-24 09:09:52 +02:00
Jan Christoph Uhde 0b8c75c7b7 one shard db - devel (#9395) 2019-09-23 15:48:37 +02:00
Tobias Gödderz 08afad7296 Remove AqlItemBlockShell (#8681)
* 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
2019-04-12 19:52:01 +02:00
Heiko 8e308680d8 Bug fix/exec block cleanup (#8710)
* 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>
2019-04-12 16:11:03 +02:00
Michael Hackstein 48b709ae16
Feature/subquery by line (#8553)
Subquery Executor by line
2019-03-25 17:02:07 +01:00
Luschgy b7b84beebf Feature/aql blocks by line (#6553)
* 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...
2019-02-14 19:13:08 +01:00
Frank Celler ac9f375fb5 big reformat 2018-12-26 00:54:03 +01:00
Tobias Gödderz 1800a26297 Remove hasMore (#5810)
* Fixed hasMoreState remote communication; cleanup in RemoteBlock::getSome and ::skipSome

* Removed /_api/aql/hasMore and all ExecutionBlock::hasMoreState() methods

* Removed now useless method RestAqlHandler::getInfoQuery
2018-07-10 09:50:08 +02:00
Tobias Gödderz fc3e11dbbc Async AQL (#5806)
* Modified header to new initializeCursor API

* Adapted initializeCursor to DONE/WAITING API. Compiles but not tested and no one reacts to WAITING state, it is not returned anywhere yet

* Subqueries now expect a WAITING return from initilize cursor. However they will just return a nullptr and pretend the query is empty, this will be fixed later

* First attempt to simulate thread waiting over information within the query

* Small fix to allow for isDirect handlers to go to sleep.

* Waiting in the necessary places now for the async request to be send.

* Thank you auto-casting compiler, you are totally right i absolutely wanted to use this bool value as an index in may Array. How could i possibly not want to use it here?

* Include cond-var header

* Fixed mutex/cond_var usage

* Added oldAPI wrappers in AQL Blocks for get/skip some variants. This Commit compiles but is NOT tested

* Let getSome now return unique_ptr of AqlItemsBlocks. Also implemented the async variant of getSome in subqueries.

* Removed all references to OLD implementations in AQL. only the base wrappers are allowed to call OLD functions from now on. Now the testing part starts

* Fixed endless virtual recursion

* Implemented new getOrSkip API in SortBlock

* Implemented new getOrSkip API in LimitBlock

* Initilaize all variables

* Fixed logic bug in SubqueryBlock

* getBlock in ExecutionBlock now returns a state. All blocks need to handle this properly!

* Createad a wrapper getBlockOld that servers the old sync api and is used now in AQL. To be replaced overtime.

* Added IndexBlock::skipSome and IndexBlock::getSome

* getBlock now returns its old return value along with the state

* Switch from getBlockOld to getBlock in IndexBlock::skipSome

* Switch from getBlockOld to getBlock in IndexBlock::getSome

* ShortestPathBlock::skipSome is not implemented! Added a regression test

* Attempt to fix SubQueryResult memory management

* Fixed LIMIT Block

* Moved from ShortestPathBlock::getSomeOld to ::getSome

* Implemented ASYNC api on SingletonBlock

* Adapted EnumerateCollectionBlock to new async API

* Fixed FilterBlock and adapted return block to async API

* Adapted NORESULTS block to async AQL api.

* Adapted Modification Blocks to async API

* Fixed some initialize cursor functions to reset values required during get/skipSome

* First steps to adapt ClusterNodes to Async AQL api. Not there yet, need to implement the core still

* Added asnyc implementation for xxxForShard in ClusterBlocks. This commit changes internal logic of _doneForShard. Needs additional testing as soon as everything is in place.

* Adapted CalculationBlock to async API

* Adapted TraversalBlocks to ASYNC Aql. This is not optimal yet, we need a better decission if we are DONE or not on RETURN

* Adapted EnumerateListBlock to Async AQL api

* Adapted RemoteBlock to ASYNC API in getSome/skipSome. The whole thing is now LIVE in the cluster. Exetensive testing to be started now

* Fixed IndexBlock WAITING behaviour if Waiting occurs during a index processing

* Adapted IReasearchViewBlock to ASYNC AQL API

* Fixed SortingGatherBlock in WAITING state.

* Adapted IResearch ExecutionBlockMock to Async API

* Unified the HASMORE/DONE distinction. Code is much more readable now and harder to get incorrect 👍

* Implemented tonly heoretically reachable function of non void function.

* Fixed last commit

* Added inline TODO comments

* fix warning

* Fixed a clearing logic bug in RemoveNodes

* Fixed Error Handling in RemoteBlocks. Also fixed a logic bug (true/false simply has a 50% chance of getting it wrong) in Distribute and Scatter.

* remove unused methods

* Fixed failure test

* implement skipping

* Moved the Query Waiting out of the ExecutionEngine.

* changed one of the collect blocks

* Removed _upstreamState from ExecutionBlockMock, that is in the base-class now

* Added a Test Mock for a an ExecutionBlock that simulates the WAITING/HASMORE/DONE api.

* do not check "hasMore" if not necessary

* Added DistinctCollectBlock::getOrSkipSome from ~Old and changed its return type

(still uses getBlockOld)

* Save state to resume in DistinctCollectBlock::getOrSkipSome

* Extracted redundant code

* fixed some ops

* added one more test

* fix endless blocking

* fix compile error

* fix test

* Refactored HashedCollectBlock::getOrSkipSome

* Return blocks to the manager

* Replaced usage of getBlockOld in HashedCollectBlock::getOrSkipSome

* remove unused shutdown calls, simplify ownership for expressions

* Removed superfluous variable

* Capture const variable by value

* Removed SortedCollectBlock::getOrSkipSomeOld in favour of getOrSkipSome

* Added a working version of SortedCollectBlock::getOrSkipSome

Has yet to be cleaned up

* Removed isTotalAggregation special treatment

* On no input, return a group of nulls (instead of no group at all)

* Bugfixes

* Simplified code

* Move return to the end, eliminate duplicate code

* Corrected skipped count in HashedCollectBlock

* Aligned getNextRow() implementations

* Added comments

* some cleanup

* fix potential memleak

* Bugfix

* Fixed failure tests

* Removed usage of getBlockOld in ExecutionBlock::getOrSkipSome

* Replaced hasMore with an async implementation (mostly)

* Removed getBlockOld()

* Added hasMoreState to the AQL API (and renamed hasMore methods to hasMoreState)

* RemoteBlock now uses the async hasMoreState route

* remove job queue

* options

* Bugfixes in the async implementation of LimitBlock

* LimitBlock::getOrSkipSome now always skips when calculating the fullcount

* fix compile warnings

* restrict threads

* Fixed api of Waiting ExecBlockMock. Unused yet

* Made SortedGatherBlock async-capable

* Removed nonEmptyIndex hack

* Removed duplicate traceGetSome~ calls, moved all to getSome

* Added asserts before replacing getNr*Registers

* Added a TODO note and a comment

* Removed getSomeWithoutRegisterClearoutOld()

* Removed skip()

* Removed common code by using getNr*Registers()

* Use getNr*Registers() in the TraversalBlock as well

* started to add lane

* started to add lane

* added lane

* completed lane

* removed debug output

* fixed merge

* Began working on a test suite for AQL tracing/profiling

* Added more tests and asserts in aql-profiler

* Made some ExecutionBlocks final

* Added a type enum to all blocks and the per-block stats

* Add block type to stats nodes when tracing AQL on block level

* Removed initializeCursor call from instantiateFromPlan

* Avoided additional getSome calls after DONE

* Added more profiler tests

* Refactored ExecutionBlock::getOrSkipSome and fixed two bugs

- set _upstreamState also when skipping
- explicitly use xecutionBlock::getHasMoreState()

* Bugfix: update state

* Reuse parent _skipped wherever possible; rename where not (LimitBlock)

* Simplified SortedCollectBlock::getOrSkipSome and reused general pattern & code

* Implemented missing virtual function (with USE_FAILURE)

* Reset neccessary values during initializeCursor

* Simplified code in EnumerateListBlock a little

* Added a test for DistinctCollectBlock in aql-profiler

* Avoid redundant getSome calls in DistinctCollectBlock

* fix compilation

* Fixed DistinctCollectBlock profiler test

* Added a second profiler test for the DistinctCollectBlock

* Added a profiler test for EnumerateCollectionBlock

* Bugfix in EnumerateListBlock

* added --server.fifoN-size

* Simplified EnumerateCollectionBlock::getSome

* Simplified EnumerateCollectionBlock::getSome, and return HASMORE less often when DONE

* Fix testEnumerateCollectionBlock1 for mmfiles

* do not pass by reference

* Fixed compile error

* fixed merge conflicts

* Added profiler tests for EnumerateCollectionBlock

* Test fix for mmfiles

* Fixed IResearch tests

* Bugfix in DistinctCollectBlock and a regression test

* Updated comment

* Bugfix for query statistics in cluster

* Check plan in distinct test

* Fix aql-profiler tests in cluster

* Removed unused line / bugfix for single server test runs

* This commit implements waking up of AQL queries. (#5651)

* Non-compiling intermediate commit for handover.

* Make branch compile again

* Started implementation of continueable rest cursor handler by moving the callbacks to the outer part. This is not yet fully tested!

* Made finalizeExecute noexcept. We cannot react to this errors as the response was potentially written before. Also introduced continueExecution in the RestHandler engine.

* First successful query wakeup.

* The wakeup callback now posts on the scheduler directly. A resthandler only needs to provide a callback that encapsulates the continueExecution call on this handler

* renamed finalizeExecute to shutdownExecute

* Added a differentiation between Handler and Callback in Query continuation. Handler will be posted in IO service. Callback will be executed directly

* fix audit log

* Removed callback from deleteQueryCursor. This cannot be waiting

* use CONDITION_LOCKER

* removed yet another thread-local variable

* Fixed forward declaration

* Made RestAqlHandler repeatable

* Use defer to close the query in RestAqlHandler. Now waiting will close the query as well.

* Added a mutex in the RestHandlers to make sure if the callback over network is too fast that there is only one Thread running in the RestHandler

* Captured the GeneralCommTask if it is posted to a RestHandler. This is necessary in the PAUSED case

* Refactoring of _noLockHeader responsibilities. Now the BaseHandler selects them and resets them after it is done. Only Coordinators are allowed to define them if a query is loaded.

* Removed reaction to existing nolockheaders in Coordinator Query Planning Phase

* Removed incorrect assertion.

* Further refactoring of NoLockHeaders. Now there is a wrapper class around it which allows for debugging and logging. The state now seems to be better. Also all non-rest-handler triggered queries clean up the NoLockHeaders properly.

* Fixed UserManager, now deletes nolock headers properly

* Swing to the Symphony of Destruction

* Forgot about community build...

* Fixed compiling of Catch tests

* Fixed community build

* need thread for size

* Made the restSimpleHndler repeatable

* Implemented dump and dumpSync in Cursors, Sync will block a thread, dump allows to wait, only relevant for Streaming cursor

* Reactivated StreamingCursors

* Removed debug output.

* Fixed false query continuation

* Reset thread output to non-debug

* Added missing return statements

* Allow some CollectionMethods to hand-in a context that may contain a transaction. This is meant to honor nolock headers.

* Fixed hidden merge conflict

* Bugfix in aql-profiler.js: use plan.nodes order, not stats

* Added two profiler tests for filter

* Avoid too many getBlock calls in the FilterBlock

* Removed debug output

* RemoteBlock API will now send a done(bool) flag whenever we request documents from remote Servers. It is possible that we are DONE and have a result. The pre 3.4.0 API uses exhausted which is exclusive to a result. This API is still implemented for beckwards compatibility.

* Implemented an executeSync function in AqlQuery. This will block the thread until query execution is complete

* Added another test for FILTER, and one test for the HashedCollectBlock

* Added more tests for HashedCollectBlock; avoid unneccessary getSome calls

* Added an profiler IndexBlock test

* IndexBlock: avoid redundant getSome calls, added missing traceGetSomeEnd calls

* Added a second test profiling IndexBlock

* Added a third test for IndexBlock

* Moved general code to module

* Moved noncluster tests into a separate file

* Split aql-profiler testsuite into three files

* Added profiler tests for LimitBlock

* Added a test for NoResultsBlock

* Added profiler tests for TraversalBlock

* Shutdown of an AQL query is now asynchronous. However in Error-Cases it will be executed in a blocking way still

* Optimized TraversalBlock getSome calls due to new (nightly) test results

* Fixed std::min calls I broke

* Let shutdown calls in AQL wait, if the query is executed successfully.

* Fixed queryResult going out of scope

* fix compile error through merge conflict with devel

* Fixed compiler warning "mismatching tags"

* Removed debug log output

* Added TODO notes

* Fixed test fail due to devel merge

* Fixed some invalid sync waiting implementations

* Added a profiler test for SortBlock

* Added profiler tests for SortedCollectBlock

* Fixed bug introduced by devel merge

* Fixed Remoteblocks ignoring errors!

* Added some more continue Callbacks in used places. And removed debug log

* Removed debug log output

* Suppress clang warnings

* Bugfix: use of invalid stack pointer

* Bugfix: RemoteBlock::shutdown now sends code as int, not string

* Revert "Suppress clang warnings"

This reverts commit 05591649c59743c992edd5e78814edc8ca2a83e0.

* Bugfix: cleanup state in RemoteBlock ::shutdown, ::getSome and ::skipSome

* Bugfix in Subquery shutdown: don't skip subquery shutdown when main query shutdown failed

* Allow copy elision
2018-07-09 14:24:10 +02:00
Jan edfdd49a3f
Bug fix/simplify skip hasmore (#5466)
* simplify skip and hasMore

* include less dependencies in header files
2018-05-26 09:27:28 +02:00
Jan f55df6786a
blind commit of work, as I managed to break my local git repository (#5456) 2018-05-25 13:07:28 +02:00
Jan 72ec463a8d
Bug fix/cleanup 2005 (#5404) 2018-05-20 20:57:43 +02:00
Jan 349e2c1681 forward-port AQL optimizations from 3.3 (#5020)
* 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
2018-04-30 11:25:09 +02:00
Jan 5105e2b3c0
Remove "atLeast" from the internal query APIs (#4848) 2018-03-21 09:10:28 +01:00
Michael Hackstein c1650702bf
Feature/aql server based locking (#4783)
* Started Implementing the ServerBasedlocking. There now is a container that can contain multiple query snippets. It now has to setup the necessary calls to the Servers

* Added backwards linking of QueryEngines, sth. DBServers can contact their Coordinators.

* Added LogTopic AQL

* Made AccessMode::Type Hashable

* Created a Mapping Server => LockLevel => Shard and createad a JSON object containing the Lock information for a complete AQL query per server

* Added code to build coordinator engines

* Finished with first draft of Coordinator-side of new DBServer based locking.

* Added a _api/aql/setup route that creates and locks all snippets/collections for one DBServer in a single go

* Fixed some Coordinator parts

* Index node now gracefully reports if it could not find it's collection when created from vpack. Otherwise it just hardly crashed...

* Modified the Coordinator Snippet collector to be able to handle subqueries properly.

* Started adding GraphNode handling. WIP. Need to deploy engines properly. Coordinator crashes on Graph tests

* Fixed compiler errors

* WIP: EngineInfoContainer

* Separated the EngineInfoContainers for Coordinator and DBServer into different files. They diverged more than anticipated

* Added forgotten files. THe DBServer container now creates the TraverserEngine Mapping and moves it into the Infos. They are not keeping it yet and need to add it to the message as well.

* The DBServer engine infos now persist the TraverserEngine infos. Need to add them to messages though.

* The new aql exec-engine now sends out traverserEngines as well

* Formatting and adding DEBUG level output

* Made the RestAQLHandler aware of the TraverserEngineRegistry. Also created the engines now. Return format changed server-side coordinator side needs fix.

* Adapted the Coordinator side for the DBServer based Shard Locking

* The DBServer based Locking now honors restrictions to certain shards

* Fixed a strange double lock bug in the new AQL Server based locking technique. Add some DEBUG output

* Fixed usage of MAINTAINERMODE macro. The assertion was never active

* Added TestCase for ContainerCoordinatorTest to cmake

* Added -DTEST_VIRTUAL to CMAKE. This is used to define virtual functions for mocking ONLY on test-builds.

* Fixed usage of ENABLE_MAINTAINER_MODE ifdef. CLANG format

* On non-enterprise builds ENTERPRISE_VERT defaults to TEST_VIRTUAL => virtual in test else non-virtual

* Added TEST_VIRTUAL to ExecutionEngine, Query and QueryRegistry

* Added first testcase for EngineInfoContainerCoordinator not yet ready.

* Mode CreateBlock a member function of engine, we have the engine in our hands anyways no need to make it static. Included some more TEST_VIRTUAL functions.

* Fixed clang/MacOs compile error. Added some more TEST_VIRTUAL declarations

* Finally fixed the first buildEngines UnitTest \o/

* Added a unit-test for backward linking of dependencies in CoordinatorPlanner

* Added multi-snippet test for EngineInfoContainerCoordinator

* Removed QueryRegistry.h from central header files and replaced by a forward declartion.

* Added a createBlocks method on the ExecutionEngine. It should be responsible to create all those blocks at once. Adapted the UnitTests as well. Not included Tests for the new createBlocks functionality. Need to mock the options feature first

* Added another test that Coordinator Snippets of queries can be created correctly

* Fixed Coordinator-site cleanup of QueryRegistry, if any of the query creations fails with error, incl UnitTest.

* Added first test for RestAqlHandler::setup. It does only test the setup and gives prepartion for real testing.

* Added a assertion of http return code. Still no creation of queries is tested. Requires a huge amount of mocking.

* 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

* Allow the clustercomm to send nolock headers on count. This is used form within AQL

* IsLocked on transactions will now always yield true IF LOCK_NEVER is set. We simply assume someone else holds the lock for us. Also LOCK_NEVER is now set on collection/count if noLock header is send.

* Moved the flag if collections need to be locked into the TraverserEngines.

* Added enterprise-satellite hooks in EngineInfoContainerDBServer

* Removed now obsolete code

* Replaced throwing of Exception by an ResultObject

* Added some more tests and moved adding snippet to query engine more to the outside.

* Added the AQL result type

* Make the branch compile again

* Register WITH collections for Graphs in the new Collector.

* Fixed test code for failing query clone. Idea was to once clone successfully and second time to fail, we verify that first clone is cleaned up properly. However test failed on first clone...

* Removed a double builderClose

* Added Changelog entry

* Removed empty if

* Removed obsolete todo

* Properly initialize the AqlResult with nullptr on error case

* Updated comment

* Simplified Assertion

* Removed debug output object...

* Added additional catch case for std::exception to get some more error info

* Clarified evaluation order for move case

* Added Explicit

* Fixed cleanup of Coordinator if Registry fails to insert query.

* Allow to use other locks than Read/Write for AQL collections. Not yet in API.

* Updated Comments for other Locks on DBSide. Adapted Destruction CatchTests

* Fixed double builderClose and removed unnecessary double commits

* Added a comment to clarify the state

* Moved error output to trace. Leftover from debugging

* Added some tests for complex subquery patterns

* Added a 'fireAndForgetRequests' methods to cluster comm which allows to send out a bunch of messages but does not wait for their results

* Properly cleanup leftovers of queries if the instantiation step already failed

* Added code comment for fireAndForget

* Added indexes to subquery test to make the plan a bit easier

* The cleanup on DBServerEngines in error case now also cleans up traverser engines.

* Removed unnecessary includes

* Removed debug logging

* Fixed hidden merge conflict
2018-03-20 16:52:19 +01:00
Andrey Abramov f6c184df33 Factory method for execution block (#4729) 2018-03-05 15:02:30 +01:00
jsteemann d49c5c3fc0 simplified internal APIs a bit 2017-02-15 12:42:07 +01:00
jsteemann 7e690a0c61 renaming 2017-02-13 15:18:40 +01:00
jsteemann eb73dbf960 renaming 2017-02-13 13:30:57 +01:00
jsteemann f09ec85127 renaming 2017-02-13 12:27:26 +01:00
Jan Steemann a1c2b7cc63 fixed issue #1941 2016-07-14 10:08:17 +02:00
Michael Hackstein 832d2a94f3 Squashed commit of the following:
commit 6b5b1fc821f304ce0445220bbf781060bd2995af
Merge: c987b9f 1754e78
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue Jun 7 12:55:24 2016 +0200

    Merge branch 'AQL_GRAPHICATION' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit c987b9f71f75a95a45a32d5cb15ed5570b2ff938
Merge: c4437e2 274cfeb
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue Jun 7 12:55:07 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit 1754e78736bf3f93c32b0c7c4a5d5569f3c834d9
Author: jsteemann <jan@arangodb.com>
Date:   Tue Jun 7 12:01:24 2016 +0200

    fixed leaks

commit 6f8be7707623c10b1365d12db61011f73ca3e36a
Author: jsteemann <jan@arangodb.com>
Date:   Tue Jun 7 11:53:58 2016 +0200

    don't emit "expected" errors

commit c4437e29c72a54f46942c616447ddee377cce478
Merge: e567d81 f4e2ead
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue Jun 7 11:40:53 2016 +0200

    Merge branch 'AQL_GRAPHICATION' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit e567d810b2ff624fc4acc8c12948cd89b4592b8d
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue Jun 7 11:40:44 2016 +0200

    Removed now unused SHORTEST_PATH code. Use the AQL Node instead.

commit f4e2eadbf03fecf7d0f0aa699caaf1198ca79443
Merge: 3d24da5 52f20f8
Author: jsteemann <jan@arangodb.com>
Date:   Tue Jun 7 11:30:40 2016 +0200

    Merge branch 'AQL_GRAPHICATION' of https://github.com/arangodb/arangodb into AQL_GRAPHICATION

commit 3d24da5b0060025ae7c133600bfae40b11c6ed70
Author: jsteemann <jan@arangodb.com>
Date:   Tue Jun 7 11:30:25 2016 +0200

    simplify initialize()

commit 52f20f842dd966b046e428eb08429f036240e112
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue Jun 7 11:04:08 2016 +0200

    Removed an unused ClusterComm->drop

commit c4bc6fa53340ab9de39bb0ef2d573ca77197c580
Author: jsteemann <jan@arangodb.com>
Date:   Tue Jun 7 11:00:36 2016 +0200

    do not show "expected" errors on shutdown

commit 50c170737311ae031addec8fb251cd5c1a2fbf5b
Merge: 7da771b 0141cdd
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue Jun 7 11:00:34 2016 +0200

    Merge branch 'AQL_GRAPHICATION' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit 7da771bb2bc3daa6c332507e021d37f536d17080
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue Jun 7 10:59:55 2016 +0200

    Fixed VertexUniqueness::PATH in cluster Traverser. And Fixed global edge Uniqueness in cluster.

commit 0141cdd1ca929f14ac5d66a2fcf6da5faf7b0e7f
Author: jsteemann <jan@arangodb.com>
Date:   Tue Jun 7 10:30:16 2016 +0200

    pass by const reference, not by copying

commit 8b96da25cdbee4a8a6508470500ae19a8ddbc129
Merge: 7b79575 d87aa2b
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue Jun 7 09:07:30 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit 7b79575a28871307f25284e1b9141a684ecc5b23
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue Jun 7 09:04:45 2016 +0200

    Attempt to improve getFilteredEdges in cluster.

commit 963e93e4f00afedeaa5fc960d629a6ea7e62f0ed
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon Jun 6 17:05:23 2016 +0200

    Fixed cloning of ShortestPathNode. Also fixed explainer to display Shortest Path Node.

commit 884df03a15ca936367bc79fdf339f633ae6d88a5
Merge: 3a28e21 2477077
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon Jun 6 16:10:10 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit 3a28e210cc6e6097febd7fb0629723ee38dced48
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon Jun 6 16:09:56 2016 +0200

    Now allow to stringify the name of SHORTEST_PATH_NODE.

commit f3898a0a4bb37af46de50a740f43f4e00076c9fb
Merge: a284d2f 7574e60
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon Jun 6 16:03:11 2016 +0200

    Merge branch 'AQL_GRAPHICATION' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit 7574e6005a3b377f23180d1a4ff1d07262576144
Author: jsteemann <jan@arangodb.com>
Date:   Mon Jun 6 16:01:35 2016 +0200

    attempt to init remote blocks in AQL queries

commit a284d2f4803371e2f43af28b36ca77c9d7722f8a
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon Jun 6 15:37:38 2016 +0200

    Added ShortestPathNode as TypeName

commit 6a283fad9469622d1b6f5a955b17a98861ff839c
Merge: cfaf2c0 d54030e
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon Jun 6 13:38:57 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit cfaf2c06885aa65b5289e2b8c3866bcf791989f8
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon Jun 6 11:33:37 2016 +0200

    Fixed Path Uniqueness of vertices in local case

commit 372298c78732dcdf936e3796287d2f7d3c10e3a8
Merge: d55fe00 442c7d0
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon Jun 6 11:32:29 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit d55fe0074f78d0cd567ca1c8d8873f06aba3855f
Merge: 3179c30 9e3c9e3
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon Jun 6 10:50:26 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit 3179c30b068ac384fa8d7723dac95d2ba5731949
Merge: 20bca1c 9fa9d49
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon Jun 6 10:50:09 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit 20bca1c25956789f695765aab498112776296e71
Merge: 4f148ba e843719
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon Jun 6 09:32:41 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit 4f148baafef979a61d8d195b6bed7cdea058ff2e
Author: Michael Hackstein <michael@arangodb.com>
Date:   Fri Jun 3 16:33:23 2016 +0200

    Fixed vertex uniqueness in Cluster case. Still fails in single though

commit 533be3b15c4d2899c1c287cc6f5224260210c7d2
Merge: fc3d65e a3032db
Author: Michael Hackstein <michael@arangodb.com>
Date:   Fri Jun 3 13:58:50 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit fc3d65ebf529344e8870898efb1ec965a88ee106
Author: Michael Hackstein <michael@arangodb.com>
Date:   Fri Jun 3 13:33:47 2016 +0200

    Replaced callback function in PathEnumerator to get Vertices by a real struct, due to issue with virtual function.

commit cac533bbaf195eb1bad5e9428402e3aeb895551f
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu Jun 2 18:06:38 2016 +0200

    Fixed Namespace issue. was okay for clang but not for g++

commit 4f046ad5d43a5654c8e9e35dc178d325588a8f4e
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu Jun 2 17:56:28 2016 +0200

    Fixed memmory issues for ShortestPath in cluster. Seems to be working now. Let full test run start.

commit f8ace613fefaefd5236e0fae47a98c13baff5b77
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu Jun 2 15:20:46 2016 +0200

    First Implementation of ShortestPath in cluster. Seems to be working with default weight but not with attribute-based weight.

commit 49ddf78902f2c814c6dddccc1d4fef7318eeb098
Merge: 31b81f3 b469cea
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu Jun 2 09:17:53 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit 31b81f39530138204bd2f2f9bae33f81a7948cd5
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed Jun 1 17:50:54 2016 +0200

    Unified the shortest Path finders. The shortest path block now directly creates a finder and reuses it throughout the AQL. It does not go via V8Traverser any more. Next Step: Expander Functions for cluster ShortestPath.

commit db402142e4f664f9997853c9f77b60a5d30fa7c6
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed Jun 1 14:40:58 2016 +0200

    Removed _api/graph test. The _api/graph does not exist any more

commit a481570346935be11553047f40957e1cf719a9de
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed Jun 1 14:40:06 2016 +0200

    Fixed inconsistency in RocksDB functions.

commit 2dc6811f9b7632ab12f7a534e7bb8673cfaed526
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed Jun 1 14:39:37 2016 +0200

    Fixed all tests after removing blueprints module

commit e2d68832e6744b6c11d8b5ecd24f50892aafd0f0
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed Jun 1 11:43:38 2016 +0200

    Removed all libraries for the deprecated graph-blueprints module. They can all be replaced by general graphs now. The have been deprecated since 2.4

commit 51330ea34c117e2ed19dc3dd249f460dbb75b281
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed Jun 1 10:38:15 2016 +0200

    Fixed DISTANCE_TO and SHORTEST_PATH in general-graph module. It was not moved to AQL only yet.

commit c876fe736306f0bac1655e37ed6acf75976ac1ec
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed Jun 1 09:22:19 2016 +0200

    Removed now obsolete graph AQL JS code.

commit 18891b346dcd519486c0540bc68b05b2359caf43
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed Jun 1 09:20:54 2016 +0200

    Replaced GRAPH_ECCENTRICITY by a call in the general graph module and relaced all it's tests.

commit 06371d4d2fbd8e77e0caed82d595f250835a909b
Merge: d17c3c7 8dde0e8
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 31 18:44:03 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit d17c3c7d927abba24beffde6da2990e095d4b1c3
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 31 18:29:01 2016 +0200

    Removed BETWEENNESS and ABSOLUTE_BETWEENNESS from AQL and moved it to the general-graph module.

commit efa566ba99394eb2367fe7734fe09868302b5c14
Author: Michael Hackstein <michael@arangodb.com>
Date:   Fri May 27 14:11:22 2016 +0200

    Removed GRAPH_CLOSENESS from AQL and Tests. Reimplemented it in general-graph module instead

commit 0eff3d38947627414972603d95e36ed6beb7a8de
Author: Michael Hackstein <michael@arangodb.com>
Date:   Fri May 27 12:28:57 2016 +0200

    Entirely removed GRAPH_ABSOLUTE_CLOSENESS from AQL. general_graph still offers _absoluteCloseness(). Now general_graph also offers _farness() which is identical and the correct academic name for the result of this function. Also tests are adopted.

commit b3e7678343c380cceb5ae71bca3071ce855baf9e
Author: Michael Hackstein <michael@arangodb.com>
Date:   Fri May 27 11:10:50 2016 +0200

    Removed ABSOLUTE_ECCENTRICITY function from AQL Executor and deleted the JS code for it

commit 904527ce53475485ff1a89f51991a6781573d97a
Author: Michael Hackstein <michael@arangodb.com>
Date:   Fri May 27 10:57:13 2016 +0200

    Reimplemented ABSOLUTE_ECCENTRICITY as AQL only variant.

commit 42a5230b6fabf14ced7a51636a7342a52504a32d
Author: Michael Hackstein <michael@arangodb.com>
Date:   Fri May 27 10:56:37 2016 +0200

    Reactivated bi-directional search in ShortestPath. Was deactivated by accident and algorithm is only correct if activated.

commit 9d61dfd18e1cdb900c39f9bc6d2bb7466a86c7d7
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 25 16:25:35 2016 +0200

    Entirely removed GRAPH_RADIUS from AQL. Moved tests to general-graph module _radius() function. Same for _diameter.

commit 4a8e51483e292b501d1d2ad9983513bc99312bef
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 25 14:52:53 2016 +0200

    Replaced call of _diameter with a new AQL query not using the deleted GRAPH_DIAMETER function

commit 15fc45e438515980ea39d711fcfca5edd78a5bea
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 25 13:05:39 2016 +0200

    Entirely removed GRAPH_DISTANCE_TO from AQL

commit bdaa20cff54170abdcd2f9ec4d246765151d71e5
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 25 12:55:20 2016 +0200

    Implemented all functions in the ShortestPathNode it is now clone-able and serves estimates. Also added Flags for ShortestPath and Traversal in the JSON representation.

commit ae6c922f56c4498aaaba7f76ffb37a0560ca1476
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 24 17:09:15 2016 +0200

    Removed debug output in test

commit dce2ea1e2f1c5244c26bb9fa3b783454aa4e8163
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 24 17:07:12 2016 +0200

    Removed GRAPH_DISTANCE_TO from test. It was identical to SHORTEST_PATH anyways...

commit c4b48bc9457fd7112feb96f9e619568ad79d29ec
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 24 17:00:12 2016 +0200

    Removed GRAPH_SHORTEST_PATH from stresstest and brute test

commit 87a0b725d1cef05473eff0a2b48c3ac52a549192
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 24 16:57:52 2016 +0200

    Removed SHORTEST_PATH and GRAPH_SHORTEST_PATH from Tests. Replaced them by there new IN DIRECTION SHORTEST_PATH equivalent.

commit 72c3cbf69dcf6aa4f167d77b29271e217ce0e2bc
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 24 16:55:50 2016 +0200

    Removed SHORTEST_PATH and GRAPH_SHORTEST_PATH from AQL Executor.

commit 6499ca12802f45f69e30e09fbbcebdcbca88deaa
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 24 14:17:35 2016 +0200

    Shortest Path now honors a distance attribute. Basic AQL graph tests are green yay ;). Now former general-graph tests are next.

commit 316280400585d9af5e09f4365c39fe80423d9eef
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 24 09:48:21 2016 +0200

    Fixed variable usage in Shortest Path. However now it does not terminate

commit 84359e3223cbf01b283b9bda2f6de8b367df236e
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 24 09:17:46 2016 +0200

    Shortest Path now correctly rejects invalid start nodes

commit c8a831e0d6b95445ea3cd276d0c0c0ad2ceb4901
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 24 09:13:06 2016 +0200

    Fixed a bug with autocasting to bool where it was not expected

commit 0300e1b4aa120fc04db7da620a905ed86bedd068
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon May 23 18:08:29 2016 +0200

    First shortest-path runs are successful. First tests are getting green again. Make Tests Green Again

commit d593f3317e8578e307c2246e65d3452d78cf043e
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon May 23 15:58:22 2016 +0200

    Added reading of start and target vertex in ShortestPath Block.

commit 46ce5b7a3cf6abb4a01d8e004b34ad2118573430
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon May 23 15:23:25 2016 +0200

    Fixed Constructor variable ordering

commit 23d666d929bdf84c302fe4729faeab2ab77886b8
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon May 23 15:20:44 2016 +0200

    Added the required parameters and implementation to return the result in ShortestPathBlock. Tests still RED
    . Next actually compute the path

commit 015da1ccdf50ca1123d600ac4b1afb460ad2b2dc
Author: Michael Hackstein <michael@arangodb.com>
Date:   Mon May 23 13:32:42 2016 +0200

    Prepared the ShortestPathFinder to get injected the result container instead of creating it's own one. Deactivated parts of the OLD api, shall be deleted soon.

commit bd72afa565ecaea38a4979180d4aadc0edbf52d7
Author: Michael Hackstein <michael@arangodb.com>
Date:   Fri May 20 15:40:56 2016 +0200

    Added infrastructure for new Shortest Path Node in AQL. It is not Functional yet and will throw errors. Tests are RED

commit 15b76dc27c118f60ee58cf2154ba84ee1311f8e7
Merge: 625e305 893802e
Author: Michael Hackstein <michael@arangodb.com>
Date:   Fri May 20 15:38:51 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit 625e305ca163fcbe928e5353bd06f4232664a0ee
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu May 19 16:23:14 2016 +0200

    Activated the AQL syntax for new non function SHORTEST_PATH in AQL. Also adapted One test file for new Syntax. However the feature is NOT implement at this point. Some Tests are RED

commit a935e9d9f962a2bcb6fdeed5facec2486ab4dc06
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu May 19 12:49:18 2016 +0200

    Removed _paths test. It does not exist any more

commit 1c182858a4d9427b0be9ec5749b587e40f804386
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu May 19 12:47:06 2016 +0200

    Fixed AQL_GRAPH tests

commit 5cd4e79ab77123db322defc5dd2f9417bc99e80e
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu May 19 11:42:47 2016 +0200

    Fixed all tests in aql-general-graph

commit a8ddd72ffa2ee29d085ea4c5002190149200a3b8
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu May 19 11:39:24 2016 +0200

    Removed GRAPH_COMMON_PROPERTIES from tests and AQL.

commit 4c0be7fdd3d610a2196aec3e93338bf3851f3606
Merge: 98e270e 7ca4d39
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu May 19 11:17:59 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit 98e270e47a1f85df47c54e4461457bdb10331696
Merge: ff177cc 1f9f46b
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu May 19 09:35:15 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit ff177ccf47cda7778212621df7b512c8a6a859ee
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 18 18:04:36 2016 +0200

    Removed PATHS() from AQL and tests. It can be replaced by Path Pattern Matching.

commit e568d5966e516c1bc6be9da79b01fd740bf2c4ff
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 18 17:38:49 2016 +0200

    Removed GRAPH_PATHS from Tests and from AQL. It is easily replaceable by Pattern Matching.

commit 107b2890397b4076042dc9b08ea2a7c1ab7f0284
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 18 16:59:36 2016 +0200

    Removed GRAPH_COMMON_NEIGHBORS from aql.js

commit dd7f6b4b68099c9c861b05dd2506cbd0f8b9c22d
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 18 16:54:39 2016 +0200

    Fixed some COMMON_NEIGHBORS transformation. Uniqueness is not guarenteed accross start vertices. It was with GRAPH_COMMON_NEIGHBORS.

commit 863a2e3b4728add2bad088c021d3bcf54ec6f569
Merge: 9a940aa 0064e25
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 18 15:19:40 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit 9a940aa8d8d9c74d26b819d54d743c369dcfa350
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 18 11:07:12 2016 +0200

    Added a new uniqness version for vertices. Not complete yet

commit 8c3db5519ff85b13a24c326c5982102226272635
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 18 09:13:03 2016 +0200

    Replaced GRAPH_COMMON_NEIGHBORS with their new equivalent in AQL in the tests.

commit 7c9782900d798019965c4ab685c24d624dd53238
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 17 16:35:32 2016 +0200

    AQL does not export GRAPH_NEIGHBORS any more

commit e23c3f2b9993d62290da7966419b58e9d391efe2
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 17 16:35:06 2016 +0200

    Replaced vertexUniqueness with uniqueVertices and edgeUniqueness with uniqueEdges as proposed in the preliminary documentation document.

commit b589f6c1113f5e02016eac0a49c0b5ea9f42620e
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 17 15:28:53 2016 +0200

    Removed GRAPH_NEIGHBORS from Tests and replaced them by their corresponding AQL equivalent. Only two of them are red because uniqueness is not correct yet.

commit 0bc36996429493e9ceadcb3ea82a126f2cfa66fa
Merge: 9d0473a 39083cb
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 17 12:48:25 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit 9d0473aeada534cd47e99dab3ceae4f91ed4ebbb
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 17 12:48:13 2016 +0200

    Implemented base version of vertex Uniqueness in AQL traversal. Single Server only.

commit 980fd6aaa09666dbe55e3811fb6430d49bfd5a1a
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 17 11:02:24 2016 +0200

    Edge Uniqueness levels also implemented in Cluster Case. Not yet tested due to errors in the agancy right now.

commit 73e3bf1da26afbdf0dffe815629003364e2469c4
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 17 10:57:51 2016 +0200

    Implemented all levels of edgeUniqueness in local Traversal case.

commit 2aba559e8db4ab7ac4d297590723277bd9a305cd
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 17 10:42:54 2016 +0200

    Now the options test actually checks for correctness of result.

commit 2b36bf92f3cf8ff6d0bc80079fddfebf36c1df92
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 17 10:38:01 2016 +0200

    Started Adding tests for OPTIONS in AQL Traversal

commit 86874ae290da2ba39e5cd42ec5ddaab0487091b2
Merge: f182f24 f6b7bd2
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 17 10:37:30 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit f182f244fdc38c6648fc5527a518ab41e73c6865
Author: Michael Hackstein <michael@arangodb.com>
Date:   Fri May 13 09:45:14 2016 +0200

    Typo fix

commit 15b63ef8a2c9b02af5917634319a5a461905402a
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu May 12 17:29:06 2016 +0200

    AQL Traverser now reacts to option: edgeUniqueness (NONE or PATH). Test yet missing.

commit 1ebd4abd45e085679eb3ef24b6cff6d6debe4f0a
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu May 12 15:34:03 2016 +0200

    Added infrastructure to insert OPTIONS into AQL Traversals. Right now they are only parsed not used.

commit 5440118412b43024beb451e47cc59e33591dbf84
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu May 12 13:29:51 2016 +0200

    Removed NEIGHBORS() from tests and replaced them by new syntax. Tests are RED.

commit 9fc6ec448d970b27cda16abc7f51217d8e2ba3de
Merge: 8084e28 07aa8b4
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu May 12 11:31:43 2016 +0200

    Merge branch 'devel' of github.com:arangodb/arangodb into AQL_GRAPHICATION

commit 8084e2804d4e4c537c9c7719303362b08e2fe0bc
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu May 12 11:30:09 2016 +0200

    Started Moving NEIGHBORS => AQL PPM. Test is RED.

commit afda95eb59b97f43b2b3ad891bb404d69ca5414e
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu May 12 10:55:42 2016 +0200

    Removed GRAPH_EDGES from AQL.

commit 3766babe444781555f5373287aa98f45b7a32406
Author: Michael Hackstein <michael@arangodb.com>
Date:   Thu May 12 10:53:20 2016 +0200

    Removed the old Graph Datasource from Traversals. Only the newer generalGraph is available.

commit 6ace9c992d3d06c5cb9c9e24c117e821412f63f1
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 11 16:31:42 2016 +0200

    Removed _getConnectingEdges from Test. Is not supported any more.

commit fbd28aae6f11782e34fcfb51887c89c878705f0a
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 11 14:55:03 2016 +0200

    Removed GRAPH_EDGES from AQL tests

commit e032683ccf79f185808bfadc154b587af39b5818
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 11 12:42:06 2016 +0200

    Removed EDGES function from AQL.

commit 42b2c31d1eddb6b2790d21d6aedfeb6c3892919f
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 11 11:10:08 2016 +0200

    Replaced EDGES() in Tests by the new corresponding usage of Path Pattern Matching

commit 110d1b497f7df4b94709bfd2149c72dbf4f28e8c
Author: Michael Hackstein <michael@arangodb.com>
Date:   Wed May 11 11:08:09 2016 +0200

    Fixed minor bugs in Cluster Path Pattern Matching. It did not react properly on Invalid user input.

commit 8f47a3a01c0928825c13ceba5f60c3e1fe5e4691
Author: Michael Hackstein <michael@arangodb.com>
Date:   Tue May 10 17:13:33 2016 +0200

    Removed unused AST reference in Index Lookups for Ast Conditions
2016-06-07 13:58:21 +02:00
jsteemann 4a7c9f0f68 simplified bloated comments 2016-04-09 11:27:30 +02:00
jsteemann 279fb105e2 cppcheck 2016-03-09 22:57:49 +01:00
Jan Steemann 9046e1831b clang-format 2016-01-27 13:43:46 +01:00
jsteemann 842384016d namespace cleanup 2016-01-21 00:20:22 +01:00
jsteemann 431900f17a changed namespace from triagens to arangodb 2016-01-17 00:44:53 +01:00
Jan Steemann 687d6133f0 comments reformatting 2016-01-11 09:52:39 +01:00
Jan Steemann 3ad20c0cae auto-generated headers 2016-01-06 18:41:51 +01:00
Jan Steemann a3b026d9d1 removed useless sections from code, unified include guards 2016-01-06 14:15:22 +01:00
Jan Steemann f422576ee0 clang-format 2016-01-05 17:43:24 +01:00
CoDEmanX 3a9648d78a More Americanization 2015-09-03 22:25:43 +02:00
Jan Steemann 0099fe260a return value optimization for AQL 2015-04-30 23:38:27 +02:00
Jan Steemann bf3a1daaa9 recycle AqlItemBlocks 2015-04-27 12:41:55 +02:00
Jan Steemann 7c5cc16a8a less locking for cluster status checks 2015-02-18 18:14:12 +01:00
Jan Steemann a327016312 added method for cluster test 2015-01-24 14:07:06 +01:00
Max Neunhoeffer 05c069f361 Another fix for the distributed locking problem in cluster AQL. 2014-12-23 14:35:19 +01:00
Max Neunhoeffer e50a705d9a Squashed commit of the following: organise locking in distributed AQL
Locking is now done in an extra round after the query is fully
instanciated in the cluster. All participating shards are locked
in alphabetical order of their shard ID (local collection name).
For this to work there is a new action in the RestAqlHandler plus a
mechanism to prevent the usual locking from happening: Each thread has a
thread local static class variable of
  triagens::arango::Transaction::_makeNolockHeaders
which is of type std::unordered_set<std::string>*.
Whenever this is not equal to nullptr and a local collection name is
stored in there, no locking or unlocking takes place. This information
is forwarded by the X-Arango-Nolock HTTP header, whenever an HTTP
request is sent via ClusterComm to a shard.
2014-12-22 14:40:22 +01:00
Willi Goesgens 5ed8816788 Remove Explain of cluster snippets 2014-10-27 16:10:13 +01:00
Willi Goesgens 91e04e3230 Implement outputting of splitted plans which are to be distributed to the db servers 2014-10-24 17:14:13 +02:00
Jan Steemann 54a0f182e2 call shutdown using an errorCode 2014-10-22 19:01:56 +02:00
Jan Steemann e2ef21c33a fixed non-working DistributeBlock 2014-10-22 12:07:31 +02:00
Willi Goesgens b3beff3053 Call shutdown() on execution abortion, so we don't leave trash behind on the cluster nodes. 2014-10-20 16:36:54 +02:00
Jan Steemann c93c952c05 fixed from/to-handling in cluster 2014-10-20 12:32:08 +02:00
Jan Steemann 4ff58364f1 fixed cloning of plans 2014-10-07 12:00:37 +02:00
Willi Goesgens 4b399236f1 Make the Transaction a smart pointer living inside of Query. 2014-10-01 14:30:53 +02:00
Jan Steemann 643ffa104d moved isCoordinator to function of its own 2014-09-29 09:38:15 +02:00