1
0
Fork 0
Commit Graph

772 Commits

Author SHA1 Message Date
Jan Steemann 4522d8ab33 fixed wrong index usage, added tests 2015-05-21 18:29:43 +02:00
Jan Steemann 9c73028541 less copying 2015-05-12 13:36:08 +02:00
Jan Steemann 06cf34700f simplify attribute accesses 2015-05-08 15:14:17 +02:00
Jan Steemann 7e47d75042 fixed wrong condition 2015-05-08 12:44:53 +02:00
Jan Steemann beb45ad8f8 use indexes when referring to an attribute name via bind parameter 2015-05-08 12:39:55 +02:00
Jan Steemann 7783ed1b33 speedups 2015-04-29 17:42:33 +02:00
Jan Steemann 6fe78cddb1 speed up big IN-lists in AQL 2015-04-29 16:22:45 +02:00
Jan Steemann 974b656c1b allow overriding COLLECT method 2015-04-21 14:45:22 +02:00
Jan Steemann 3bb3e15d8e fixed getAttributeAccess() 2015-04-20 14:30:06 +02:00
Jan Steemann 61499432b7 do not remove constant sorts when creating plans, but during optimization phase
less utf8 comparisons
2015-04-20 11:32:29 +02:00
Jan Steemann d9add3a493 fixed collect in cluster 2015-04-16 21:10:48 +02:00
Jan Steemann 528ec17bcd Merge branch 'devel' of https://github.com/arangodb/arangodb into hash-collect
Conflicts:
	arangod/FulltextIndex/fulltext-handles.cpp
2015-04-16 19:06:21 +02:00
Jan Steemann e2000f571f try to satisfy scan-build 2015-04-16 15:04:11 +02:00
Jan Steemann e1312f2088 attempt to satisfy scan-build a bit 2015-04-16 11:47:18 +02:00
Jan Steemann 8926e3f2e2 initial commit 2015-04-15 19:04:21 +02:00
Jan Steemann 2f58e4ea61 small cleanup 2015-03-25 12:42:44 +01:00
Jan Steemann 01745402f3 Merge branch 'devel' of https://github.com/arangodb/arangodb into data-modification 2015-03-24 14:34:20 +01:00
Jan Steemann a3c0612798 added cluster tests 2015-03-24 14:34:09 +01:00
Willi Goesgens 44101c621d Fix macos warning: declaring & calling in one line seems to be undeclared. 2015-03-24 11:33:19 +01:00
Jan Steemann e3bf1c709c upsert blocks 2015-03-23 15:31:07 +01:00
Jan Steemann 8e48f98045 Merge branch 'devel' of https://github.com/arangodb/arangodb into data-modification
Conflicts:
	arangod/Aql/Collection.cpp
	arangod/Aql/ExecutionBlock.cpp
2015-03-20 21:54:39 +01:00
Jan Steemann 1298bd40a8 added tests for out-of-memory situations 2015-03-20 08:54:15 +01:00
Jan Steemann a9cddb824f more usage of unique_ptrs 2015-03-20 00:05:32 +01:00
Jan Steemann 13ddb8b34b fixed some cluster plans 2015-03-17 13:52:09 +01:00
Jan Steemann 6b24da1036 in the middle of refactoring 2015-03-17 09:08:25 +01:00
Jan Steemann 34e101725f fixed assertion 2015-03-16 17:28:54 +01:00
Jan Steemann 7c5cc16a8a less locking for cluster status checks 2015-02-18 18:14:12 +01:00
Jan Steemann 205736a028 added optimizer rule "propagate-constant-attributes" 2015-02-15 13:29:53 +01:00
Jan Steemann 1701be206f more sparse tests 2015-02-11 21:21:14 +01:00
Jan Steemann 33a4d2c4dc added tests 2015-02-11 19:34:00 +01:00
Jan Steemann 003d7e9112 sparse indexes, initial commit, untested 2015-02-07 03:07:41 +01:00
Jan Steemann cdd31f2b92 constification 2015-02-05 00:10:30 +01:00
Jan Steemann c18ff7f300 use-index-for-sort rule can now remove sorts in more cases 2015-02-02 22:53:25 +01:00
Jan Steemann e30ddf0df3 fixed indexing test 2015-02-02 20:33:45 +01:00
Jan Steemann 7af624e2f0 selectivty, try 0 2015-01-27 09:34:04 +01:00
Jan Steemann d348f60e59 added AQL optimizer rule "move-calculations-down" 2015-01-22 20:36:38 +01:00
Jan Steemann 87b1f7fde3 enable indexes in even more cases 2015-01-22 17:24:47 +01:00
Jan Steemann 1c935b6ab2 added tests for filter order, not optimization etc. 2015-01-22 14:16:58 +01:00
Jan Steemann 14e82da2b0 fixed leak 2015-01-19 22:25:16 +01:00
Jan Steemann ee51a8ebfd added more tests for indexes 2015-01-19 11:10:57 +01:00
Jan Steemann 1003e52cf7 some cleanup 2015-01-18 16:41:48 +01:00
Jan Steemann 823369c815 disable the use of indexes in certain unsafe situations 2015-01-17 17:45:36 +01:00
Max Neunhoeffer 892f11d2e8 Clarify code for cluster modififying AQL. 2015-01-12 10:37:06 +01:00
Jan Steemann 2d0a37d826 automatically create _keys in DistributeNode on insert 2015-01-12 10:33:05 +01:00
Jan Steemann 2de9760820 fixed empty error message 2015-01-09 23:29:36 +01:00
Jan Steemann c591357dd3 slightly changed cost estimation for IndexRangeNode 2015-01-07 15:11:42 +01:00
Jan Steemann 62696b6984 prerequisites for further COLLECT optimizations 2015-01-07 09:42:46 +01:00
Jan Steemann 8333591e3f issue #1199: Cannot unlink root node of plan 2015-01-02 17:38:33 +01:00
Max Neunhoeffer cf94935ebc Fix a bug in optimizer rule for DistributeNode. 2014-12-24 00:43:38 +01:00
Max Neunhoeffer 20424bd642 Fix a bug in modifying AQL when REPLACE/UPDATE uses DistributeNode. 2014-12-24 00:18:39 +01:00
Max Neunhoeffer 6fe1fb8568 Fix modifying AQL in cluster. 2014-12-23 22:44:01 +01:00
Max Neunhoeffer 1cdf439845 Broken version, errors not yet fixed. 2014-12-23 16:51:48 +01:00
Max Neunhoeffer 05c069f361 Another fix for the distributed locking problem in cluster AQL. 2014-12-23 14:35:19 +01:00
Jan Steemann 6d6d67f06f activated optimizer rule remove-sort-rand
fixed tests, updated documentation
2014-12-21 18:50:50 +01:00
Jan Steemann 20e7fe7a7a the great rename: array => object, list => array 2014-12-18 21:07:06 +01:00
Jan Steemann f35f8d1643 fixed ranges, added tests 2014-12-16 13:54:46 +01:00
Jan Steemann 4a60a62028 indentation 2014-12-16 00:30:55 +01:00
Jan Steemann 1c65c042a4 added tests, fixed exception 2014-12-16 00:20:40 +01:00
Jan Steemann bcdeabd3ab Merge branch 'devel' of https://github.com/triAGENS/ArangoDB into aql-feature-index-or
Conflicts:
	arangod/Aql/ExecutionBlock.cpp
2014-12-15 21:53:51 +01:00
Jan Steemann 1e83716c1d removed debug output 2014-12-13 12:48:09 +01:00
Willi Goesgens 115f226385 Optimizer: Enable removing of filternodes if the index can handle the filter condition. 2014-12-12 21:39:35 +01:00
James 7ab57d64ec Merge branch 'aql-feature-index-or' of ssh://github.com/triAGENS/ArangoDB into aql-feature-index-or 2014-12-09 22:05:57 +00:00
Jan Steemann 22928c1bb5 Merge branch 'devel' of https://github.com/triAGENS/ArangoDB into aql-feature-index-or
Conflicts:
	arangod/Aql/ExecutionBlock.cpp
	arangod/Aql/OptimizerRules.cpp
2014-12-09 22:45:55 +01:00
Jan Steemann 2fbc53f711 fixed potential leaks 2014-12-09 16:27:05 +01:00
James 4fdd97c9a7 fixed another bug 2014-12-09 14:19:52 +00:00
Jan Steemann d638c1c0c9 fixed choicung 2014-12-09 15:18:53 +01:00
James a4dcf1b9d3 Merge branch 'aql-feature-index-or' of ssh://github.com/triAGENS/ArangoDB into aql-feature-index-or 2014-12-09 10:23:07 +00:00
James 46fe461ca1 fixed bug and added test for it. 2014-12-09 09:40:40 +00:00
Max Neunhoeffer 368530dd5a Fix number of plan cap. 2014-12-09 09:59:07 +01:00
Max Neunhoeffer 62f03aa013 Choose skiplistIndex if in doubt. 2014-12-08 16:53:05 +01:00
Max Neunhoeffer fc79c31661 More sensible plan management in useIndexRangeNode optimizer rule. 2014-12-08 15:37:01 +01:00
Jan Steemann 5d9c8ef49a removed compile warnings 2014-12-08 12:54:44 +01:00
Jan Steemann cd17c393ab Merge branch 'devel' of https://github.com/triAGENS/ArangoDB into aql-feature-index-or
Conflicts:
	arangod/Aql/ExecutionBlock.cpp
	arangod/Aql/OptimizerRules.cpp
	arangod/Aql/grammar.cpp
2014-12-08 12:37:13 +01:00
James ad211c83a5 memleaks 2014-12-06 19:01:16 +00:00
James 454ef10898 fixing last 2014-12-06 16:21:59 +00:00
James bf4b718019 memleaks 2014-12-06 16:18:39 +00:00
James f0bb73982c whitespace 2014-12-06 14:22:52 +00:00
Jan Steemann 4c43c1bdaf less plans created by optimizer 2014-12-04 12:49:34 +01:00
Jan Steemann 4f39b9e358 optimize away `INTO` of `COLLECT` if unused 2014-12-03 13:49:03 +01:00
James 8c28127be1 fixing dynamic bounds which are lists. 2014-12-03 11:44:38 +00:00
James 52b174bb3d updating 2014-12-02 11:22:01 +00:00
James b1300fb927 same as last 2014-12-02 10:24:01 +00:00
James 8f735ca9c7 more attempts at fixing memleaks 2014-12-02 10:14:16 +00:00
James 3bab43be0a memleaks 2014-12-02 09:36:11 +00:00
James 2d9c4196ac updating comment 2014-12-02 08:05:33 +00:00
Max Neunhoeffer cfb0b21f2d Add Jan's patch for the indexRangeNode recognition.
We change all EnumerateCollectionNodes to IndexRangeNodes if possible
and do not keep the old plans.
2014-12-01 18:38:30 +01:00
James be95719179 fixed bug in logic of hash index use. 2014-11-28 08:24:56 +00:00
James fe356e2187 some partial fixes 2014-11-27 13:24:16 +00:00
James 40a67f47c7 Merge branch 'devel' of ssh://github.com/triAGENS/ArangoDB into aql-feature-index-or
Conflicts:
	arangod/Aql/ExecutionBlock.cpp
	arangod/Aql/OptimizerRules.cpp
2014-11-27 09:25:43 +00:00
Jan Steemann 8a715d7791 fixed `remove-redundant-or` rule
the rule was not producing correct conditions for queries such as

   FOR i IN collection FILTER i._key > 'a' && i._key > null RETURN i
2014-11-26 21:42:22 +01:00
Jan Steemann 292eaad273 Merge branch 'devel' of https://github.com/triAGENS/ArangoDB into devel 2014-11-26 19:49:38 +01:00
Jan Steemann 45ebdf7581 enable more indexes 2014-11-26 19:49:28 +01:00
Jan Steemann 57aefb988d fix optimization of subqueries 2014-11-26 15:01:55 +01:00
Jan Steemann c69fa0b0dc fixed invalid optimization, added test cases 2014-11-25 23:18:24 +01:00
James ec21728ad2 fixed logic of optimizer rule use-index-range, if one of the OR conditions is not useable, then throw away plan. 2014-11-25 10:08:50 +00:00
James 02538a1063 avoid inserting duplicate values in buildRangeInfo when they come from an IN. 2014-11-25 09:05:06 +00:00
James 908c14fc6a most tests green 2014-11-22 15:20:26 +00:00
James cc94e2413d same as last 2014-11-22 15:08:04 +00:00
James 2704921daf properly handle empty conditions 2014-11-22 14:58:34 +00:00
James 16540bbae4 cleaning up and avoid inserting duplicate conditions. 2014-11-22 14:26:48 +00:00
James c1c44ad64f bug fixes 2014-11-22 13:41:05 +00:00
James b9dc309bc2 more robust logic 2014-11-22 12:39:04 +00:00
James 2f80c76f69 fixed cloning of RangeInfos 2014-11-20 13:24:52 +00:00
James 1f69d82a8a working out bugs 2014-11-20 11:51:22 +00:00
James 202358b2af cleaning up 2014-11-18 13:26:57 +00:00
James d546aa99a8 adding support for OR 2014-11-18 12:30:27 +00:00
James b4d00ebbbf adding distribution of "and" into "or" 2014-11-18 12:25:08 +00:00
James 0613014826 extremely simple IN conditions working. 2014-11-18 10:46:44 +00:00
James 2ee1198ba4 all the tests are green 2014-11-18 09:54:10 +00:00
James 35380b03d1 compilation errors, still doesn't compile. 2014-11-17 13:09:57 +00:00
James 553c638cfe further snapshot 2014-11-17 12:58:33 +00:00
James 0dcffe898c snapshot 2014-11-17 11:11:38 +00:00
James 9f99908315 snapshot 2014-11-17 09:53:44 +00:00
Jan Steemann 896e8daec5 removed unused variable 2014-11-13 14:24:59 +01:00
James 23ea59d405 cleaning up, using ReverseOperator. 2014-11-11 08:43:30 +00:00
James 3e612acdda Merge branch 'aql-feature-lazy-index' of ssh://github.com/triAGENS/ArangoDB into aql-feature-lazy-index 2014-11-11 08:23:23 +00:00
James 08e8fd193e Merge branch 'devel' of ssh://github.com/triAGENS/ArangoDB into aql-feature-lazy-index 2014-11-11 08:21:40 +00:00
Jan Steemann 4a8726ee35 added "split-filters" rule but did not activate it 2014-11-11 00:27:37 +01:00
Jan Steemann 97b5e906da Merge branch 'devel' of https://github.com/triAGENS/ArangoDB into aql-feature-lazy-index 2014-11-08 23:26:38 +01:00
Jan Steemann 567860cf65 more aggresively optimizer filters 2014-11-08 23:26:04 +01:00
Jan Steemann 9c5d150866 use Ast::ReverseOperator 2014-11-08 22:31:31 +01:00
James 14e6370c22 cleaning up. 2014-11-08 17:35:27 +00:00
James e2b8456395 tests and bugfixes. 2014-11-08 17:31:30 +00:00
James 103db8c8b5 more flexible remove-redundant-OR rule 2014-11-08 16:42:39 +00:00
James bc80940018 correct logic. 2014-11-08 13:52:24 +00:00
James 586cacc2ee replace-redundant-OR optimizer rule first version. 2014-11-08 13:45:14 +00:00
James 53782f5364 bug fix 2014-11-08 11:39:09 +00:00
James b849a6da72 some more cleaning up of replace-OR-with-IN 2014-11-08 11:36:56 +00:00
Jan Steemann b0de1bb226 leaner and meaner error messages 2014-11-07 10:53:00 +01:00
Jan Steemann c8c16767be added rule to remove filters if covered by index ranges - not yet activated 2014-11-06 23:18:18 +01:00
Jan Steemann bf30927913 removed canThrow tag for various built-in functions 2014-11-05 14:40:00 +01:00
Jan Steemann 987bfa1285 extended optimizer rule to detect more OR to IN transformation opportunities 2014-11-05 12:10:10 +01:00
James 10220c3207 adding functions. 2014-11-04 22:01:36 +00:00
James 095cc8a9e3 removed incorrect assertion 2014-11-04 21:49:37 +00:00
James 37ab716edc cleaning up 2014-11-04 21:42:34 +00:00
James 3b49921a15 more cleaning up 2014-11-04 21:09:21 +00:00
James 61afce9d10 cleaning up 2014-11-04 21:04:56 +00:00
James 2e48bbb82b tests are green again 2014-11-04 13:16:39 +00:00
James 04770d3563 nearly working better version of previous 2014-11-04 13:01:51 +00:00
James f6e8dcd6ca more general case working. Code needs cleaning up 2014-11-03 22:23:41 +00:00
James 62cb8d3a93 bugfix 2014-11-03 11:10:18 +00:00
James 1ff7e8d252 cleaning up 2014-11-03 10:42:16 +00:00
James fa7668e1ce snapshot 2014-11-03 10:38:05 +00:00
James b301102655 Jan's patch 2014-11-03 09:32:12 +00:00
James 5f6964796e still not working 2014-11-01 19:06:59 +00:00
James 2c10e943b8 still doesn't work 2014-11-01 17:12:44 +00:00
James cd710ed55d snapshot 2014-11-01 16:06:53 +00:00
James d12b5baf12 first try at replace-OR-with-IN optimizer rule. 2014-11-01 14:30:18 +00:00
Jan Steemann 4f68960ed7 removed Ahuacatl [skip ci] 2014-10-31 17:31:00 +01:00
Jan Steemann 31d875921f removed TODOs 2014-10-30 00:45:55 +01:00
Max Neunhoeffer 59c1935466 Get rid of some TODOs and FIXMEs. 2014-10-29 11:25:30 +01:00
Jan Steemann 529bf386d7 fixed some API errors 2014-10-28 11:30:49 +01:00
Max Neunhoeffer 5eed22ad5f Repair distribute-sort-to-cluster rule and make it less aggressive. 2014-10-27 14:02:08 +01:00
Jan Steemann b5c222b9b8 determine whether calculations may run on a DB server 2014-10-27 12:04:06 +01:00
James c99cc155b6 fixing undistribute-remove-after-enum-coll optimizer rule. 2014-10-25 14:24:57 +01:00
Jan Steemann d34c9ade30 re-enable optimizer rule 2014-10-23 16:56:48 +02:00
James 89d554c49b remove some redundant comment 2014-10-21 17:27:39 +01:00
James dc357b96bf fixing distribute in cluster optimizer rule. 2014-10-21 11:04:38 +01:00
James dcf427071c shardIds -> shardKeys in distribute to cluster. 2014-10-17 11:07:33 +01:00
James 32f4216005 updating distribute-in-cluster opt rule 2014-10-17 10:22:26 +01:00
Jan Steemann 912a8162fb some renaming 2014-10-16 17:23:50 +02:00
James 9f942d0ce3 finished first version of DistributeBlock/Node. 2014-10-15 10:53:09 +01:00
James adca1117ff removing debug output, up dating tests. 2014-10-14 11:29:14 +01:00
James 602f03e4e3 adding distribute-in-cluster optimizer rule. 2014-10-14 10:19:27 +01:00
Jan Steemann 7be268c07c changed AQL optimizer to not throw 2014-10-14 10:14:40 +02:00
James 084078f61f fixed tests for remove-unnecessary-remote-scatter and undistribute-remove-after-enum-coll, renamed distributeInCluster to scatterInCluster. 2014-10-09 08:45:34 +01:00
James d2b86de370 fixed tyopo in comment 2014-10-08 10:55:58 +01:00
Jan Steemann c2f0265d7d fixed optimizer rule remove-unnecessary-remote-scatter 2014-10-07 13:21:05 +02:00
James 4a8ef130f5 DistributeBlock getOrSkipSome method minus the hard part. 2014-10-07 10:33:37 +01:00
James 95fd279a52 distribution node/block declarations etc. 2014-10-06 12:57:09 +01:00
Jan Steemann bf31161ef5 activated if-statement 2014-10-06 10:40:04 +02:00
James 029e443b12 removing debug output 2014-10-04 12:21:34 +01:00
James 8bd3a9718c undistributeRemoveAfterEnumColl now more or less works for REMOVE x._key in coll 2014-10-03 11:32:40 +01:00
James c6c0387e50 undistributeRemoveAfterEnumColl optmizer rule now working 2014-10-03 10:13:11 +01:00
Jan Steemann 0e103d33dc added assertion 2014-10-03 01:37:04 +02:00
James 16d54d6694 snapshot 2014-10-02 10:06:45 +01:00
Jan Steemann 7f9da1c397 asserts 2014-10-02 10:34:08 +02:00
Jan Steemann 0d9cdfc87c struct Index 2014-10-01 15:35:16 +02:00
James 7a34d065b5 cleaning up and registering undistributeRemoveAfterEnumColl. 2014-10-01 10:43:54 +01:00
James 2fd8c2b185 prelim version of undistributeRemoveAfterEnumColl 2014-10-01 10:17:36 +01:00
James 22597af5ac version of removeUnnecessaryRemoteScatter which changes the plan in place. 2014-09-30 10:10:03 +01:00
James 3daaaad855 fixing last 2014-09-30 08:48:29 +01:00
James 301ccddf83 Merge branch 'devel' of ssh://github.com/triAGENS/ArangoDB into devel 2014-09-30 08:29:36 +01:00
James d204ce4019 adding registration of the remove unnecessary remote scatter optimizer rule. 2014-09-30 08:29:21 +01:00
Jan Steemann f3015bd70a fixed indentation 2014-09-29 16:52:45 +02:00
Jan Steemann b31987fea7 pass data to RemoteNode 2014-09-29 16:36:52 +02:00
Jan Steemann 643ffa104d moved isCoordinator to function of its own 2014-09-29 09:38:15 +02:00
Jan Steemann 188fe0c43c accidently committed local modifications. revert 2014-09-29 09:31:27 +02:00
Jan Steemann 0d075dca3f pass queryRegistry into the AQL functions 2014-09-29 09:30:32 +02:00
James d53da7ce4a Optimiser rule to get rid of a RemoteNode->ScatterNode combination 2014-09-27 16:43:08 +01:00
Jan Steemann c3ce45e0dd added block instanciation for coordinator, v0.0.0 2014-09-26 20:17:42 +02:00
Jan Steemann f462c5f620 add database and collection info to gather nodes 2014-09-26 13:58:02 +02:00
Willi Goesgens 53ee658be0 Implement moving of sortnode into the clusterable part of the query; add elements to the json serialisation of the gather node 2014-09-26 12:35:58 +02:00
Willi Goesgens 6c81f630a3 Add filter rule which moves Filters & Calculations into the parts of a Plan that is distributed to clusters. 2014-09-25 17:08:20 +02:00
Max Neunhoeffer 591f7acb8b Fix problems with variable bounds. 2014-09-22 23:30:22 +02:00
Jan Steemann d03faffc53 remove subqueries that produce results that are not used in a query 2014-09-18 23:03:43 +02:00
Jan Steemann 4a2693cebd removed #if 2014-09-18 13:23:38 +02:00
Jan Steemann 50571f84db changed node detection for cluster 2014-09-18 13:21:58 +02:00
Max Neunhoeffer ce2f822521 Merge branch 'aql1' of ssh://github.com/triAGENS/ArangoDB into aql2 2014-09-18 09:12:25 +02:00
Jan Steemann 5c552d4137 optimizer rule for scatter / gather 2014-09-17 17:29:36 +02:00
Max Neunhoeffer ae5d231c5d Add a comment. 2014-09-17 16:43:40 +02:00
Max Neunhoeffer e054b738c9 Take out some debugging messages. 2014-09-17 16:41:49 +02:00
Jan Steemann bd62c36771 scatter / gather 0.0 2014-09-17 16:00:54 +02:00
Jan Steemann db70b9bfcb added not-yet used nodes for remote, scatter and gather 2014-09-17 14:31:37 +02:00
Jan Steemann 654c2ba0fe backwards iteration, not yet working 2014-09-17 00:40:24 +02:00
Jan Steemann 992ac23450 fixed ranges 2014-09-16 15:48:33 +02:00
Jan Steemann 54b5e7b034 slightly improved access to dynamic bounds 2014-09-16 15:10:43 +02:00
Jan Steemann 677e681b23 adjusted test 2014-09-15 18:17:42 +02:00
Max Neunhoeffer 6cf8b0cf75 Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2 2014-09-15 16:16:33 +02:00
Max Neunhoeffer 855a695764 Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/ExecutionBlock.cpp
	arangod/Aql/RangeInfo.cpp
	arangod/Aql/RangeInfo.h
2014-09-15 16:16:21 +02:00
Max Neunhoeffer 77d6f41b5c Fix more bugs in variable bounds. 2014-09-15 16:10:54 +02:00
Jan Steemann a31cb2af30 disable sort optimizations under certain conditions 2014-09-15 15:28:41 +02:00
Max Neunhoeffer 4a1e3d6b9c Fix bug with variable bounds: must not access document set in this node. 2014-09-15 13:37:38 +02:00
Jan Steemann 5a1dc63946 fixed tons of compile errors in VS 2014-09-15 12:04:49 +02:00
Max Neunhoeffer 511930a8c1 Make variable bounds compile-time switchable. 2014-09-14 22:30:45 +02:00
Max Neunhoeffer 025d57175e Disable variable bounds to let tests run again. 2014-09-14 22:26:57 +02:00
Max Neunhoeffer e617c091e7 Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2 2014-09-14 21:47:46 +02:00
Max Neunhoeffer b48d1c1270 Fix more bugs. 2014-09-14 21:47:37 +02:00
Jan Steemann ed7e5d0e67 allow primary key access via _id attribute, too 2014-09-14 00:46:44 +02:00
Jan Steemann 4f6f2ac34f Merge branch 'aql2' of https://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/ExecutionBlock.cpp
2014-09-12 17:03:04 +02:00
Max Neunhoeffer 0ae0f126b2 Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2 2014-09-12 15:24:28 +02:00
Max Neunhoeffer 465cf950c9 Try to fix bug with variable bounds.
Not yet finished.
2014-09-12 15:24:08 +02:00
Jan Steemann 6552490cbe Merge branch 'aql2' of https://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/ExecutionNode.cpp
	arangod/Aql/ExecutionNode.h
	arangod/Aql/ExecutionPlan.cpp
	arangod/Aql/OptimizerRules.cpp
2014-09-12 15:17:50 +02:00
Jan Steemann a5c52998e8 remove redundant calculations 2014-09-12 15:10:48 +02:00
Max Neunhoeffer 35ffe6b9e4 Restructure who has Ast and ExecutionPlan.
Not compiling yet.
2014-09-12 14:44:20 +02:00
Jan Steemann 2767bdc7e0 use edge index on both _from and _to 2014-09-11 18:19:05 +02:00
Jan Steemann c3b90a1037 Merge branch 'aql2' of https://github.com/triAGENS/ArangoDB into aql2 2014-09-11 17:02:03 +02:00
Jan Steemann 34beb65148 use primary index & edge index 2014-09-11 17:01:53 +02:00
Max Neunhoeffer 6c69129a71 Start computing the variable bounds at runtime. 2014-09-11 16:58:59 +02:00
Max Neunhoeffer 31e02e42cb Instanciate expressions for variable bounds.
And various cleanups.
2014-09-11 14:28:38 +02:00
Max Neunhoeffer c79b95b048 Activate finding of variable bounds. 2014-09-10 16:35:33 +02:00
Max Neunhoeffer 27a9dd050e Variable bounds are recognised. 2014-09-10 16:10:02 +02:00
Max Neunhoeffer 31a1c95e40 Further cleanup of IndexRangeRule and ranges infrastructure.
Prepare for variable bounds.
2014-09-10 12:07:30 +02:00
Max Neunhoeffer dfed690d56 Further cleanup of EQ method in useIndexRange rule. 2014-09-10 11:36:11 +02:00
Max Neunhoeffer 6795f425ab Cleanup buildRangeInfo. 2014-09-10 11:15:43 +02:00
Max Neunhoeffer 7dcdd27891 Merge branch 'aql2' into mmh 2014-09-10 09:41:54 +02:00
Max Neunhoeffer b98cb86605 Take out debugging output. 2014-09-10 09:38:53 +02:00
Willi Goesgens 3e6e008a81 useIndexForSort:
- redirect to pass #5 here too, so now possible obsolete CalculaionNodes are removed by the removeUnnecessaryCalculationsRule
2014-09-09 17:19:49 +02:00
Max Neunhoeffer 8aa75f01a5 Snapshot to move home. 2014-09-09 17:05:47 +02:00
Willi Goesgens 202636cee0 Refactor Optimizer ordering
- create enum with the different steps named
  - unify numbering scheme
  - deploy enum to all places where int level was used
  - add passN enum so you can jump to a Pass when calling addPlan

useIndexForSort:
  - remove inline deletion of dependend nodes of our (removed) sortnode
  - redirect to pass #5 so now possible obsolete CalculaionNodes are removed by the removeUnnecessaryCalculationsRule
2014-09-09 16:27:49 +02:00
Jan Steemann 2a49bf843d updated tests 2014-09-09 15:20:42 +02:00
Jan Steemann 639a026c66 fixed tests 2014-09-09 09:57:52 +02:00
Jan Steemann 4bda3e3979 finished test for remove-redundant-sorts 2014-09-08 17:33:11 +02:00
Jan Steemann 8fdb2f05af added positive list of nodetypes 2014-09-08 10:39:59 +02:00
Jan Steemann 478007089a do not push sort beyond limit, collect etc. 2014-09-08 10:31:44 +02:00
Willi Goesgens 02207d5f70 Cost estimates: IndexRangeNodes without range have to be more expensive than ones with. 2014-09-05 14:23:25 +02:00
Willi Goesgens ebbb9c34b6 Redundand-Sort: implement removing of left item superseeding the sort 2014-09-04 17:53:20 +02:00
Willi Goesgens e23cbf1add Work on Filter to IndexRangeNode tests 2014-09-04 16:33:37 +02:00
Willi Goesgens 61d1bfa76b SortIndex: only indicate we modified a rule if we realy did. 2014-09-03 09:47:08 +02:00
Willi Goesgens 021f3371f2 SortIndex: move the unlinking of the sort attributes after unlinking the sort itself 2014-09-01 18:30:49 +02:00
Willi Goesgens 3b93d0847d SortIndex: fix the way we register our results to the framework 2014-09-01 13:33:18 +02:00
Max Neunhoeffer ecf379c113 Fix a bug with the level management of the useSortRule. 2014-08-30 00:54:47 +02:00
James b6f9f11e5e added all node types to FilterToEnumCollFinder. 2014-08-29 17:44:32 +02:00
James 38520d49eb Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/OptimizerRules.cpp
2014-08-29 17:17:59 +02:00
James 21febb33ac cleaning up RangeInfo stuff. 2014-08-29 17:16:08 +02:00
Willi Goesgens 40361d63dc Merge branch 'aql2' of github.com:triAGENS/ArangoDB into aql2 2014-08-29 17:10:35 +02:00
Willi Goesgens 1f0ce045d3 remove debug output 2014-08-29 17:10:20 +02:00
Max Neunhoeffer bf1f11e651 Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2 2014-08-29 16:57:56 +02:00
Max Neunhoeffer fa9e55eafb Finish taking into account multiple FILTER for IndexRangeRule. 2014-08-29 16:57:34 +02:00
Willi Goesgens 0cb12fc3f5 SortIndex: initialize the rangeInfo the proper way. 2014-08-29 16:45:20 +02:00
Max Neunhoeffer 4ae076db40 Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/OptimizerRules.cpp
2014-08-29 15:51:08 +02:00
Max Neunhoeffer 65e765478d Make IndexRange rule look for multiple variables in FILTERs.
Still TODO: Pickup further variables when seeing FILTERs.
2014-08-29 15:49:37 +02:00
Jan Steemann 91590f754f Merge branch 'aql2' of https://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/OptimizerRules.cpp
2014-08-29 15:49:35 +02:00
Jan Steemann b8e12063e2 added "rules" output 2014-08-29 15:27:02 +02:00
James e1ee728a75 remove debug prints. 2014-08-29 14:41:20 +02:00
Willi Goesgens 67894665f4 revert #cef3864e29cfb5308df55e19a2186af07c21d3b8 which was a wrong conflict resolution. 2014-08-29 14:38:39 +02:00
Willi Goesgens d6881ddabd Merge branch 'aql2' of github.com:triAGENS/ArangoDB into aql2 2014-08-29 12:27:33 +02:00
Willi Goesgens be1c84f480 Exceptions: don't print Backtraces if the exception is handled in the subsequent js code. 2014-08-29 12:15:19 +02:00
James 16ef52bd81 Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2 2014-08-29 11:52:46 +02:00
James 46b40015ee renovating RangeInfo stuff to avoid mem leaks. 2014-08-29 11:52:19 +02:00
Max Neunhoeffer c9193e44b8 Sort out some exception issues. 2014-08-29 11:37:01 +02:00
Max Neunhoeffer f780cff9c6 Fix a bug with a new plan and insert a catch. 2014-08-29 11:09:18 +02:00
Jan Steemann c47807e2ee Merge branch 'aql2' of https://github.com/triAGENS/ArangoDB into aql2 2014-08-28 16:56:05 +02:00
James a14be1d3be Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2 2014-08-28 16:55:39 +02:00
Jan Steemann 687c56f923 Merge branch 'aql2' of https://github.com/triAGENS/ArangoDB into aql2 2014-08-28 16:55:22 +02:00
James 4b5e42c52a bugfixes and leaks fixed. 2014-08-28 16:55:18 +02:00
Jan Steemann d3624c3244 attempt to fix infinite ranges in skiplists 2014-08-28 16:54:45 +02:00
Max Neunhoeffer 16a5899e8f Add a FIXME. 2014-08-28 16:52:03 +02:00
Max Neunhoeffer c1568d94f0 Improve a comment. 2014-08-28 16:50:26 +02:00
Jan Steemann fd5e687ef0 Merge branch 'aql2' of https://github.com/triAGENS/ArangoDB into aql2 2014-08-28 15:34:17 +02:00
Jan Steemann 694d64da3c do not optimize away non-deterministic functions 2014-08-28 15:34:06 +02:00
Max Neunhoeffer 665777c59a Make dummyRule local in the optimizer. 2014-08-28 14:49:33 +02:00
James 05dac4f52d Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/Optimizer.cpp
2014-08-28 14:41:51 +02:00
James 1deed3ebce fixed bugs useIndexRange. 2014-08-28 14:39:26 +02:00
Jan Steemann 7ba6b17d45 Merge branch 'aql2' of https://github.com/triAGENS/ArangoDB into aql2 2014-08-28 13:54:37 +02:00
Jan Steemann ca814c9733 remove-redundant-sorts 2014-08-28 13:54:17 +02:00
Max Neunhoeffer 9b49328218 Rearrange levels for optimizer rules. Use rules multiple times. 2014-08-28 13:46:46 +02:00
Max Neunhoeffer e1b557ff20 Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/Optimizer.cpp
2014-08-28 13:33:33 +02:00
Max Neunhoeffer 12e15b6c2e Adjust the output level of useSortIndex rule. 2014-08-28 13:29:44 +02:00
Max Neunhoeffer 338a9c6c54 Implement permutation of EnumerateCollectionNodes.
Also: restructure leveling of rules.
And:  remove some debugging output (and add some other).
2014-08-28 13:28:04 +02:00
Jan Steemann 2eb38c9657 remove-redundant-sorts, initial 2014-08-28 12:39:28 +02:00
Willi Goesgens 9d4b1b1c88 SortNode: our variables can also be in other ExecutionNodes then the Calculation node. Take this into account.
SortIndex optimizer: when looking at our properties only check Calculation nodes, ignore other types of ExecutionNodes
2014-08-28 11:48:23 +02:00
Willi Goesgens 7b9b3d8570 fix memory leak in parametrization of new IndexRangeNodes 2014-08-28 09:20:47 +02:00
Jan Steemann 37295fb2b1 changed wrong comments 2014-08-27 23:54:06 +02:00
Max Neunhoeffer f279c40262 Fix an early destruction bug. 2014-08-27 22:10:18 +02:00
Max Neunhoeffer 4441316115 Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2 2014-08-27 16:52:57 +02:00
Max Neunhoeffer 449d0cd961 Completely redo the optimizer. 2014-08-27 16:52:38 +02:00
Willi Goesgens da6bac560d SortIndex optimizer: clean up namingschemes, add documentation. 2014-08-27 16:09:25 +02:00
Willi Goesgens e67a2ed36a SortIndex optimizer:
- remove SortNodes which are superseeded by an IndexRangeNode
  - calculate the properties of an SortNode before entering the walker
  - add abstraction class
2014-08-27 15:39:37 +02:00
James 61ee74e0fd Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2 2014-08-27 14:52:05 +02:00
Willi Goesgens 5e75ec8bb5 Expression:
- add function isSimpleAccessReference() to check whether it is a coll.attr.attr
 - add function getAccessNRef() to retrieve pair("attr.attr", "coll"),
SortIndex optimizer:
 - use the new functionality to get better readable code.
rename indexes -> indices
2014-08-26 17:26:46 +02:00
Willi Goesgens 18d308af0f SortNode: add method that looks up the expressions referenced by the Sortnode, and returns them paired with ASC/DESC. 2014-08-26 15:38:55 +02:00
James 851420c723 Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2 2014-08-26 15:19:13 +02:00
Willi Goesgens ff4e00eb86 SortIndex optimizer:
- rename getIndexes to getIndexesUnordered
  - add CompareIndex & getIndexesOrdered to retrieve a list which does an ordered match on the available skiplist indices
  - fetch the ordered matching indices
  - only remove the sortnode if its a full qualified match.
2014-08-26 13:53:19 +02:00
James b8415aaca5 making useIndexRange abort if it encounters a limit node. 2014-08-26 13:11:31 +02:00
James ad3e6d22a1 Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2 2014-08-26 13:02:58 +02:00
James bf952d37be IndexRangeBlock working for hash indexes. 2014-08-26 13:02:31 +02:00
Willi Goesgens 27063a08b5 SortIndex optimizer:
- group the ASC/DESC
 - find out the real attribute name for nested attributes
2014-08-26 09:48:20 +02:00
Max Neunhoeffer a7b3f4fe1f Take out TODO line. 2014-08-26 09:46:00 +02:00
Max Neunhoeffer 4fecd85e4c Add a destructor to delete _ranges in FilterToEnumCollFinder. 2014-08-26 09:45:32 +02:00
Willi Goesgens 10603f904d Walker: the process of walking now is aborted if the before-hook returns true. 2014-08-25 15:48:21 +02:00
James 8896a01753 making the arguments of IndexRangeNode more general. 2014-08-25 15:11:54 +02:00
James 033735fbba removing debug output and commenting out useIndexRange. 2014-08-25 13:12:19 +02:00
James c801fc4992 deserialising of IndexRangeNode finally working. 2014-08-25 13:05:22 +02:00
Jan Steemann b978133e1b fixed compile warning 2014-08-22 20:05:44 +02:00
Jan Steemann 768c3b9bbc comments 2014-08-22 18:03:42 +02:00
Jan Steemann 04fbe668cc Merge branch 'aql2' of https://github.com/triAGENS/ArangoDB into aql2 2014-08-22 17:58:12 +02:00
Jan Steemann 1d34fa4896 stub for IndexRangeBlock 2014-08-22 17:58:02 +02:00
Willi Goesgens 8a402683ed Optimizers: start implementing the sorting via indexes. 2014-08-22 16:48:52 +02:00
James 8559f60766 fixed bugs in last. 2014-08-22 16:25:23 +02:00
James 931aaee618 Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/OptimizerRules.cpp
2014-08-22 16:19:01 +02:00
James 4c49a3be5e deserialising of IndexRangeNode almost completed. 2014-08-22 16:17:10 +02:00
Jan Steemann 514c2e74f3 indentation 2014-08-22 13:56:01 +02:00
Jan Steemann 55608ceae2 use index nodes 2014-08-22 13:53:01 +02:00
Jan Steemann 30c6b26b6d add plans! 2014-08-22 10:44:19 +02:00
James fcb3342729 Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/OptimizerRules.cpp
2014-08-21 18:41:24 +02:00
James fecaccf37f fixing comparison of bounds. 2014-08-21 18:40:02 +02:00
James 89ba89bf77 added method to check if a range info contains a unique value, and cleaned up FilterToEnumCollFinder. 2014-08-21 17:39:06 +02:00
James 409e663818 fixed bugs in comparison of tightness of range bounds, and made it so that invalid ranges insert NoResultNode in the plan. 2014-08-21 17:14:42 +02:00
Jan Steemann 4482d840ac added moveFiltersUpRule 2014-08-21 16:54:01 +02:00
Jan Steemann a1fcf9b28e activate rule to move calculations up 2014-08-21 16:38:49 +02:00
Jan Steemann 89e74559ae Merge branch 'aql2' of https://github.com/triAGENS/ArangoDB into aql2 2014-08-21 15:54:48 +02:00
Jan Steemann 0205f651a6 working on moveCalculationsUpRule 2014-08-21 15:54:40 +02:00
Max Neunhoeffer 5aaa4cf899 Merge. 2014-08-21 15:50:16 +02:00
James 053ab548ba Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/OptimizerRules.cpp
2014-08-21 15:48:58 +02:00
James 4d17c347cc bug fixes in last. 2014-08-21 15:38:42 +02:00
James deaa8f1271 only applying hash indexes if ranges indicate equality. 2014-08-21 15:27:53 +02:00
Jan Steemann 51c89c6829 Merge branch 'aql2' of https://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/ExecutionPlan.cpp
	arangod/Aql/ExecutionPlan.h
2014-08-21 15:24:11 +02:00
Max Neunhoeffer 321ab35551 Finish _parents in ExecutionNodes business. 2014-08-21 15:15:46 +02:00
Jan Steemann 1d78071176 fixed filter removal optimizer rule 2014-08-21 13:57:08 +02:00
Max Neunhoeffer af93a13209 Fix instanciation of NoResultsNode. 2014-08-21 13:45:46 +02:00
James 7b5f52069a Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/OptimizerRules.cpp
2014-08-21 13:16:24 +02:00
James bcaf26cba1 removing debug comments. 2014-08-21 13:14:41 +02:00
James aa03c16be0 Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/OptimizerRules.cpp
2014-08-21 12:53:05 +02:00
James c4811009a8 fixing replaceNode for ExecutionPlan. 2014-08-21 12:32:07 +02:00
Jan Steemann 1edd170317 turned off optimization 2014-08-21 11:21:03 +02:00
James a8801803dd more IndexRangeNode stuff 2014-08-21 11:16:39 +02:00
Max Neunhoeffer cf6fe967a1 Make enterSubqueries switchable in findNodesOfType 2014-08-21 09:44:59 +02:00
Jan Steemann 670b407185 disable filters that never produce results 2014-08-20 18:24:52 +02:00
James b5d4fc52d1 added clone method for execution plan, removed debug prints. 2014-08-20 16:34:35 +02:00
James 260c790bc5 fixed bugs in last. 2014-08-20 16:13:53 +02:00
Jan Steemann 3fe8831a03 fixed optimizer bug due to duplicate variable representation 2014-08-20 14:18:33 +02:00
James 24b2dd1906 finding index in CalculationNodeFinder. 2014-08-20 11:38:02 +02:00
Jan Steemann 592ada1d36 Merge branch 'aql2' of https://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/ExecutionNode.h
2014-08-19 18:58:32 +02:00
Jan Steemann 99ce138c12 fixed creation of subqueries from JSON input 2014-08-19 18:51:11 +02:00
James 447282d0bd Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2
Conflicts:
	arangod/Aql/Optimizer.cpp
	arangod/Aql/OptimizerRules.cpp
2014-08-19 17:00:16 +02:00
James c0ce6d361c AND working for IndexRangeNode. 2014-08-19 16:58:10 +02:00
Jan Steemann 232cc163c2 renamed optimizer rule 2014-08-19 16:10:57 +02:00
Jan Steemann 70a4f49095 removed commented code 2014-08-19 16:09:10 +02:00
James 370892566f added new class to contain ranges, and take their intersections. 2014-08-19 15:53:17 +02:00
Jan Steemann 79e68e72e3 fixed removeUnnecessaryCalc 2014-08-19 15:46:04 +02:00
Jan Steemann e4abcdc843 added optimizer rule 2014-08-19 13:59:05 +02:00
James b82b0fbefc remove comment and update the toJsonHelper for IndexRangeNode. 2014-08-19 12:08:22 +02:00
James 857083adc9 starting to add optimizer rules which create IndexRangeNodes. 2014-08-19 12:02:50 +02:00
Jan Steemann 1030ea1b7c working on optimizer rules 2014-08-19 10:22:08 +02:00
Jan Steemann 36430620fa remove filters which are always true 2014-08-18 17:03:08 +02:00
Jan Steemann b923e660e8 comments 2014-08-18 16:58:31 +02:00
Jan Steemann f41e0313fe added optimization rule for constant filters (not yet working) 2014-08-18 16:53:45 +02:00
Max Neunhoeffer 9e91d9bba3 Finish first optimization rule: remove unnecessary calcs.
So far not activated, because test suite crashes.
Need to look into details.
2014-08-16 00:09:11 +02:00
Max Neunhoeffer f671fb7e36 Add the first actual optimization rule (as a stub). 2014-08-15 16:54:53 +02:00
Max Neunhoeffer 50851bfcba 2nd try at infrastructure for optimizer. 2014-08-14 14:33:03 +02:00
Max Neunhoeffer 1de9f0bfe5 Create infrastructure for the query optimizer. 2014-08-14 11:16:21 +02:00