1
0
Fork 0
Commit Graph

13 Commits

Author SHA1 Message Date
a-brandt 3e302a5aea changed function TRI_IsAllowedCollectionName 2012-11-14 14:09:00 +01:00
Jan Steemann a68fff16e2 issue #271: allow very simple optimisations for AQL function usage
This change will create field access hints also for AQL function calls.
Calls to functions will not be optimised, but meaningless usages of functions will not be optimised away.
For example:

FOR p IN PATHS(users, relations, "outbound")
  FILTER LENGTH(p.edges) > 0 && LENGTH(p.edges) < 0
  RETURN p

The FILTER in the above query uses the LENGTH() function two times in a way that no result will be produced.
Before, function calls were excluded from expression collapsing and simplification.
Now, multiple calls to the same function with the same call argument might be optimised away if the calls will
lead to no results being produced. This will only work for functions that are called with exactly one argument
which also must be an attribute name, and when the function calls are used in relational operations.
2012-10-26 13:32:01 +02:00
Jan Steemann 792f57b760 issue #271: simple paths() function optimisations
When an "outbound" query is made with the paths() function, the optimiser will now use an index if a FILTER condition can exploit an index on .source.
Example query:

FOR p IN PATHS(users, relations, "outbound")
  FILTER p.source._id == "some-id"
  RETURN p

The index on p._id was not exploited before, because the optimiser did not know that variable "p" related to collection "users" and that the condition actually would filter on users._id (the variable name in the FILTER statement is "p.source._id).
Now, AQL functions can define callbacks which are called by the optimiser to try some function-specific optimisations.
The optimise callback for PATHS() tries to exploit indexes for filters that filter on the vertex collection (1st parameter to PATHS() call). Indexes can be exploited if the query is an "outbound" query and there are filters on "source", or if the query is an "inbound" query and there are filters on "destination". "anybound" queries will not be optimised
2012-10-26 13:32:01 +02:00
Oreste Panaia 4d8d78e880 Merge branch 'devel' of https://github.com/triAGENS/ArangoDB into devel
Conflicts:
	VisualStudio/Arango Front End Library/Arango Front End Library.vcxproj
	arangod/Actions/RestActionHandler.cpp
	arangod/RestServer/ArangoServer.cpp
	lib/ApplicationServer/ApplicationServer.cpp
2012-10-22 21:04:12 +08:00
Oreste Panaia aad73db128 various changes for windows 2012-10-22 20:51:31 +08:00
Jan Steemann c2be68fc7f issue #245 2012-10-17 14:21:46 +02:00
Oreste Panaia fbd74b3569 windows 2012-10-08 23:30:30 +08:00
Jan Steemann 5bb8b5dd04 added explain output for collect statements 2012-06-14 10:09:03 +02:00
Jan Steemann 381fc2f9f9 optimiser change: collections are annotated with hints on how they are accessed. this info is picked up by the explain command 2012-06-12 16:50:36 +02:00
Jan Steemann 4ec362fc8f some optimiser stuff 2012-06-12 09:36:58 +02:00
Jan Steemann efd48664ef Merge branch 'devel' of https://github.com/triAGENS/ArangoDB into devel
Conflicts:
	Ahuacatl/ahuacatl-statement-dump.c
	Ahuacatl/ahuacatl-statement-dump.h
	Ahuacatl/ahuacatl-statementlist.c
	Ahuacatl/ahuacatl-tree-dump.c
	Ahuacatl/ahuacatl-tree-dump.h
	Ahuacatl/ahuacatl-tree-walker.h
	Makefile.files
	Makefile.in
	arangod/Ahuacatl/ahuacatl-tree-dump.c
	arangod/Ahuacatl/ahuacatl-tree-dump.h
	arangod/Ahuacatl/ahuacatl-tree-walker.c
	arangod/Ahuacatl/ahuacatl-tree-walker.h
2012-06-08 17:34:20 +02:00
Frank Celler 313c3c31ed Merge branch '1.0' of github.com:triAGENS/ArangoDB into devel
Conflicts:
	arangod/RestServer/ArangoServer.cpp
	arangosh/V8Client/arangosh.cpp
2012-06-08 15:13:01 +02:00
Frank Celler d2c758d663 the great rename 2012-06-08 15:01:25 +02:00