memgraph/docs/user_technical
florijan 76fe8bfadf Variable expansion consolidaton
Summary:
- Removed BreadthFirstAtom, using EdgeAtom only with a Type enum.
- Both variable expansions (breadth and depth first) now have mandatory inner node and edge Identifiers.
- Both variable expansions use inline property filtering and support inline lambdas.
- BFS and variable expansion now have the same planning process.
- Planner modified in the following ways:
	- Variable expansions support inline property filtering (two filters added to all_filters, one for inline, one for post-expand).
	- Asserting against existing_edge since we don't support that anymore.
	- Edge and node symbols bound after variable expansion to disallow post-expand filters to get inlined.
	- Some things simplified due to different handling.
- BreadthFirstExpand logical operator merged into ExpandVariable. Two Cursor classes remain and are dynamically chosen from.

As part of planned planner refactor we should ensure that a filter is applied only once. The current implementation is very suboptimal for property filtering in variable expansions.

@buda: we will start refactoring this these days. This current planner logic is too dense and complex. It is becoming technical debt. Most of the time I spent working on this has been spent figuring the planning out, and I still needed Teon's help at times. Implementing the correct and optimal version of query execution (avoiding multiple potentially expensive filterings) was out of reach also due to tech debt.

Reviewers: buda, teon.banek

Reviewed By: teon.banek

Subscribers: pullbot, buda

Differential Revision: https://phabricator.memgraph.io/D852
2017-10-05 13:12:39 +02:00
..
bundle Added alpha documentation bundle script. 2017-06-14 15:54:15 +02:00
couscous.yml Setup a basic skeleton for Technical Documentation 2017-06-07 11:08:45 +02:00
data-types.md Property storage now supports Map 2017-08-24 10:29:49 +02:00
installation.md Remove ast-cache flag 2017-09-27 09:04:31 +02:00
open-cypher.md Variable expansion consolidaton 2017-10-05 13:12:39 +02:00
quick-start.md Temporary IDs now sent to Bolt client. Documentation updated. 2017-08-09 14:45:09 +02:00
README.md Add a chapter in user documentation on data types 2017-07-19 17:30:40 +02:00
run Bug fix because cd working_dir hasn't been correct. 2017-05-31 16:06:44 +02:00
upcoming-features.md Named path support 2017-09-19 09:45:50 +02:00
update_version Workin progress. v0.7.0 docs update + update script. 2017-09-07 09:46:55 +02:00

Technical Documentation

About Memgraph

Memgraph is an ACID compliant high performance transactional in-memory graph database management system featuring highly concurrent data structures, multi-version concurrency control and asynchronous IO.

Contents