Jan Steemann
abc87b2d5f
added IndexNode stub
2015-09-25 13:40:51 +02:00
Michael Hackstein
1941b7f880
Added a new IndexNode does not compile yet
2015-09-25 13:18:43 +02:00
Michael Hackstein
1a7f414c16
Merge branch 'devel' of github.com:arangodb/arangodb into JHMH
2015-09-18 12:21:39 +02:00
Frank Celler
c4d1fff729
new traversal
2015-09-18 10:40:28 +02:00
CoDEmanX
b4593a7e82
Change spelling of 'initialize' to American English (comments and log messages only)
2015-09-01 17:07:21 +02:00
Max Neunhoeffer
ff135a10ad
Add some overrides to silence a clang compiler warning.
2015-08-19 14:46:06 +02:00
Jan Steemann
2d8777bc6c
make the optimizer create less plans
2015-07-30 00:07:32 +02:00
Jan Steemann
4912ce3200
fix cluster startup
2015-07-29 12:55:06 +02:00
Jan Steemann
cdfdec9244
save some overhead when walking plans
2015-07-28 11:44:34 +02:00
Jan Steemann
ead280afe5
added DISTINCT
2015-07-24 13:19:55 +02:00
Jan Steemann
c6d5f7d775
use move
2015-07-23 10:30:49 +02:00
Jan Steemann
ce31550a9f
fix variable naming in COLLECT INTO results in case the COLLECT is placed in a subquery which itself is followed by other constructs that require variables
2015-06-19 13:00:49 +02:00
Jan Steemann
d2fef98c02
renamed internal function
2015-06-03 18:24:24 +02:00
Jan Steemann
3bb5eb1a9d
small optimizations
2015-06-02 23:20:00 +02:00
Jan Steemann
574d521472
added alternative slice() method for AqlItemBlock
...
this method will copy only the first row from a source block into
a one-row target block. certain registers can be excluded. used to
initialize the registers for a subquery
2015-04-28 22:47:07 +02:00
Jan Steemann
974b656c1b
allow overriding COLLECT method
2015-04-21 14:45:22 +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
ff6e56d89c
adjusted some tests
2015-04-15 23:45:07 +02:00
Jan Steemann
8926e3f2e2
initial commit
2015-04-15 19:04:21 +02:00
Jan Steemann
013209b9c7
add expressionType to JSON output of CalculationNode
2015-04-03 15:02:17 +02:00
Jan Steemann
2f58e4ea61
small cleanup
2015-03-25 12:42:44 +01:00
Jan Steemann
a3c0612798
added cluster tests
2015-03-24 14:34:09 +01:00
Jan Steemann
66e2273482
added documentation for UPSERT
2015-03-24 00:44:52 +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
a9cddb824f
more usage of unique_ptrs
2015-03-20 00:05:32 +01:00
Jan Steemann
6b24da1036
in the middle of refactoring
2015-03-17 09:08:25 +01:00
Jan Steemann
dd74c6ac87
execute read and write operations of different collections in the same AQL query in lockstep, and not sequentially
2015-02-05 18:27:10 +01:00
Jan Steemann
e84a5e8eb3
use indexes for sorting in more cases
2015-02-05 00:10:12 +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
875a695b22
selectivity estimates
2015-02-02 20:14:36 +01:00
Jan Steemann
c49986d0e8
preparation for conditions
2015-01-25 10:40:13 +01:00
Jan Steemann
86716e1834
fix subquery optimization
2015-01-19 11:01:32 +01:00
Jan Steemann
1003e52cf7
some cleanup
2015-01-18 16:41:48 +01:00
Jan Steemann
2d0a37d826
automatically create _keys in DistributeNode on insert
2015-01-12 10:33:05 +01:00
Jan Steemann
f2590881f1
return old or new values in data-modification operations
2015-01-08 16:35:54 +01:00
Willi Goesgens
e2f206fd2c
Merge branch 'devel' of github.com:triAGENS/ArangoDB into devel
...
Conflicts:
arangod/Aql/grammar.cpp
2015-01-07 15:50:44 +01:00
Willi Goesgens
f905123802
Implement REMOVE/INSERT/UPDATE/REPLACE return the changed values
2015-01-07 15:48:13 +01:00
Jan Steemann
62696b6984
prerequisites for further COLLECT optimizations
2015-01-07 09:42:46 +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
Jan Steemann
6d6d67f06f
activated optimizer rule remove-sort-rand
...
fixed tests, updated documentation
2014-12-21 18:50:50 +01:00
Jan Steemann
19d2d6668f
added random iteration for collections
2014-12-19 18:01:13 +01:00
Jan Steemann
dd60e53ce3
added more collect special cases
2014-12-16 22:52:33 +01:00
Jan Steemann
f4d7a57c19
changed `COLLECT...INTO x COUNT` to `COLLECT...WITH COUNT INTO x`
...
allow executing subqueries without double brackets
jslint
2014-12-12 23:02:24 +01:00
Jan Steemann
8f6193faa2
added optional COUNT clause for AQL COLLECT
2014-12-12 17:18:04 +01:00
Max Neunhoeffer
62f03aa013
Choose skiplistIndex if in doubt.
2014-12-08 16:53:05 +01:00
Jan Steemann
8f99e59747
issue #1163 : fullcount was sometimes used for wrong LIMIT node
2014-12-05 19:02:51 +01:00
Jan Steemann
dd68db2252
fixed precedence of range operator
2014-12-05 11:00:26 +01:00
Jan Steemann
7e161b88ce
issue #1131 : added KEEP for `COLLECT...INTO`
2014-12-03 17:44:10 +01:00
Jan Steemann
4f39b9e358
optimize away `INTO` of `COLLECT` if unused
2014-12-03 13:49:03 +01:00
Max Neunhoeffer
7161a6b848
Reengineer cost estimation completely.
...
One test failing in single-server-AQL.
Cluster not yet tested.
2014-11-14 18:58:08 -05: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
7d036da648
fixed limit estimation
2014-11-06 13:44:55 +01:00
Jan Steemann
bf30927913
removed canThrow tag for various built-in functions
2014-11-05 14:40:00 +01:00
Jan Steemann
025d73ae03
re-added support for fullCount
2014-11-01 15:20:05 +01:00
Max Neunhoeffer
bfce170cae
Fix cost estimation of SortNodes.
2014-10-29 15:41:38 +01:00
Jan Steemann
8bb213e7ba
sort and cache list expression values
...
emplace
fixed wrong assertion
2014-10-29 01:02:20 +01:00
Jan Steemann
529bf386d7
fixed some API errors
2014-10-28 11:30:49 +01:00
Jan Steemann
13d240384f
less namespace pollution
2014-10-28 00:24:37 +01:00
Jan Steemann
b7c93c361a
fixed tests
2014-10-27 16:43:10 +01:00
Jan Steemann
97a4355c4e
fixed tests
2014-10-21 13:45:46 +02:00
Max Neunhoeffer
6eb2073336
Rename VarOverview into RegisterPlan, because that is what it is.
2014-10-20 09:14:01 +02:00
Max Neunhoeffer
db7b23bdb8
Fix cloning of VarOverview.
2014-10-20 09:04:32 +02: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
Willi Goesgens
3a7a03a51f
Don't add intermediate calculationnodes for LET-statements to forward the results of subqueries. Instead adjust the outvariable of the subquerynode.
2014-10-10 17:00:49 +02:00
Jan Steemann
4ff58364f1
fixed cloning of plans
2014-10-07 12:00:37 +02:00
Jan Steemann
0f83d8132f
fixed some transaction threading errors
2014-10-06 18:39:01 +02:00
Willi Goesgens
7dac9d8cc7
Merge branch 'devel' of github.com:triAGENS/ArangoDB into devel
2014-10-06 14:16:39 +02:00
Willi Goesgens
48c5ff938e
If we clone an ExecutionNode for the same AST we also have to copy the evaluation members, but we don't need a deep-copy.
2014-10-06 14:15:41 +02:00
James
5af60d121e
Merge branch 'devel' of ssh://github.com/triAGENS/ArangoDB into devel
2014-10-06 12:57:17 +01:00
James
95fd279a52
distribution node/block declarations etc.
2014-10-06 12:57:09 +01:00
Willi Goesgens
8f74eeff97
Assert whether we have a varoverview.
2014-10-06 13:20:31 +02:00
James
5a070a4e0a
remove const-qualified types in VarInfo struct to allow compilation.
2014-10-03 09:27:35 +01:00
Willi Goesgens
e1efab6fb5
Fix cloning to other ASTs - dereference pointers to IDs and look up the items on the new lists
2014-10-02 18:41:13 +02:00
Jan Steemann
573d837561
off-by-one fix
2014-10-02 17:06:12 +02:00
Willi Goesgens
bc627dda7b
Also copy the varoverview to the clone.
2014-10-02 10:40:09 +02:00
Max Neunhoeffer
be07d39457
Rename staticAnalysis -> planRegisters.
2014-10-02 00:11:15 +02:00
Jan Steemann
5b0b1f0af5
indenting
2014-10-01 19:06:29 +02:00
Jan Steemann
0d9cdfc87c
struct Index
2014-10-01 15:35:16 +02:00
Max Neunhoeffer
993a89fea2
Fix compilation again.
2014-09-30 23:30:55 +02:00
Max Neunhoeffer
4b21832bba
Take out unnecessary friend class declarations.
2014-09-30 23:23:46 +02:00
Max Neunhoeffer
8bffb3daa3
Finish transplantation.
2014-09-30 23:20:51 +02:00
Max Neunhoeffer
5676e82872
Make it compile using friend classes.
2014-09-30 20:14:39 +02:00
Max Neunhoeffer
40d7dec7bc
Snapshot.
2014-09-30 16:49:12 +02:00
Max Neunhoeffer
5dbcac8efe
Start transplantation of _varOverview to ExecutionNodes.
2014-09-30 16:44:01 +02:00
Willi Goesgens
3f566f6289
Enable node* clone functions to produce deep copies which live on a specified query.
2014-09-30 14:09:12 +02:00
Jan Steemann
b31987fea7
pass data to RemoteNode
2014-09-29 16:36:52 +02:00
Jan Steemann
ec1e6552ca
clone plan for DBServers
2014-09-29 15:57:53 +02:00
Jan Steemann
3ac25ad56f
fixed some issues with remote queries
2014-09-29 12:14:03 +02:00
Jan Steemann
d177bc110c
comments
2014-09-29 09:06:06 +02:00
Jan Steemann
9e47f3ca27
Merge branch 'devel' of https://github.com/triAGENS/ArangoDB into devel
...
Conflicts:
arangod/Aql/ExecutionNode.h
2014-09-26 20:23:52 +02:00
Jan Steemann
c3ce45e0dd
added block instanciation for coordinator, v0.0.0
2014-09-26 20:17:42 +02:00
Willi Goesgens
d003eecac1
We need to pass a reference since we want to return values onto this; and return const references to not duplicate the memory.
2014-09-26 15:22:41 +02:00
Jan Steemann
578d22c95b
Merge branch 'devel' of https://github.com/triAGENS/ArangoDB into devel
2014-09-26 13:58:16 +02:00
Jan Steemann
f462c5f620
add database and collection info to gather nodes
2014-09-26 13:58:02 +02:00
Willi Goesgens
41fb15d462
Merge branch 'devel' of github.com:triAGENS/ArangoDB into devel
2014-09-26 13:44:16 +02:00
Willi Goesgens
14eda3e348
- create type for SortElements to be used instead of stacked templates
...
- abstract json parsing of SortElemnts into an own function
- implement deserialisation of Scatter/GatherNode
2014-09-26 13:42:26 +02:00
Max Neunhoeffer
5c7d058043
Add stubs for RemoteBlock.
2014-09-26 13:34:08 +02:00
Max Neunhoeffer
e9bac83e67
Merge branch 'devel' of ssh://github.com/triAGENS/ArangoDB into devel
2014-09-26 13:23:33 +02:00
Max Neunhoeffer
c4fd3e7553
First steps towards RemoteBlock.
2014-09-26 13:23:21 +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
James
b7a1247252
adding variables/sort direction in _elements to GatherNode.
2014-09-23 17:31:27 +01:00
Jan Steemann
5c552d4137
optimizer rule for scatter / gather
2014-09-17 17:29:36 +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
Willi Goesgens
c71d142b51
We missed to output the modification options vector.
2014-09-16 18:25:41 +02:00
Jan Steemann
54b5e7b034
slightly improved access to dynamic bounds
2014-09-16 15:10:43 +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
Willi Goesgens
8bad042d08
Remove friend declaration since it seems not to be needed anyways.
2014-09-15 13:42:21 +02:00
Max Neunhoeffer
9bfd5eb8c6
Improve comments for getVarusage and friends.
2014-09-15 13:37:16 +02:00
Jan Steemann
5a1dc63946
fixed tons of compile errors in VS
2014-09-15 12:04:49 +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
Max Neunhoeffer
247f739bee
Sort out variable usage in variable bound expressions.
...
Not yet compiling, need to sort out access to the Ast object.
2014-09-12 11:21:52 +02:00
Max Neunhoeffer
e120da8a23
Note what needs doing to fix bug with variable lookup.
2014-09-12 00:59:59 +02:00
Jan Steemann
34beb65148
use primary index & edge index
2014-09-11 17:01:53 +02:00
Max Neunhoeffer
31e02e42cb
Instanciate expressions for variable bounds.
...
And various cleanups.
2014-09-11 14:28:38 +02:00
Max Neunhoeffer
5ff594f3bc
Add some debugging output.
2014-09-10 16:36:12 +02:00
Jan Steemann
ba21bf4019
fixed cloning of IndexRangeNodes
2014-09-10 10:54:32 +02:00
Willi Goesgens
de32cddc1e
Fix memory leak in case of exceptions thrown when parsing the variable from json
2014-09-09 13:22:49 +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
Willi Goesgens
ebbb9c34b6
Redundand-Sort: implement removing of left item superseeding the sort
2014-09-04 17:53:20 +02:00
Willi Goesgens
30b33a1793
Fix buffer overrun while comparing two sortNodes
2014-09-04 17:29:22 +02:00
Max Neunhoeffer
7e7b47ab71
Sort out negative cost estimations.
2014-09-02 10:15:02 +02:00
Jan Steemann
822c5daa32
assert costs are positive
2014-09-01 15:03:23 +02:00
James
fd4b4e5df4
"proper" estimateCost method for IndexRangeNode.
2014-08-29 14:22:46 +02:00
Jan Steemann
e47c2b99d3
use stable sort
2014-08-29 12:22:27 +02:00
James
46b40015ee
renovating RangeInfo stuff to avoid mem leaks.
2014-08-29 11:52:19 +02:00
James
b25f9d8301
fixed bug in last.
2014-08-29 09:34:23 +02:00
James
58a288fe77
copying a RangeIndexNode now properly copies the range infos.
2014-08-29 09:26:11 +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
ca814c9733
remove-redundant-sorts
2014-08-28 13:54:17 +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
James
ee3a401c88
Merge branch 'aql2' of ssh://github.com/triAGENS/ArangoDB into aql2
...
Conflicts:
arangod/Aql/ExecutionNode.h
2014-08-28 09:48:49 +02:00
James
511f08e4ca
adding stub for estimateCost for IndexRangeNode.
2014-08-28 09:48:05 +02:00
Jan Steemann
6d0dfcdeba
changed ctor
2014-08-28 00:27:24 +02:00
Jan Steemann
1e0a393d48
fixed wrong comment
2014-08-27 23:54:32 +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
Max Neunhoeffer
27d8409425
Implement canThrow method for SubqueryNode.
2014-08-27 13:07: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
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