memgraph/tests/manual
Teon Banek 2c50ea41d5 Split GraphDb to distributed and single node files
Summary:
This change, hopefully, simplifies the implementation of different kinds
of GraphDb. The pimpl idiom is now simplified by removing all of the
crazy inheritance. Implementations classes are just plain data stores,
without any methods. The interface classes now have a more flat
hierarchy:

```
    GraphDb (pure interface)
         |
    +----+---------- DistributedGraphDb (pure interface)
    |                         |
Single Node             +-----+------+
                        |            |
                      Master       Worker
```

DistributedGraphDb is used as an intermediate interface for all the
things that should work only in distributed. Therefore, virtual calls
for distributed stuff have been removed from GraphDb. Some are exposed
via DistributedGraphDb, other's are only in concrete Master and Worker
classes. The code which relied on those virtual calls has been
refactored to either use DistributedGraphDb, take a pointer to what is
actually needed or use dynamic_cast. Obviously, dynamic_cast is a
temporary solution and should be replaced with another mechanism (e.g.
virtual call, or some other function pointer style).

The cost of the above change is some code duplication in constructors
and destructors of classes. This duplication has a lot of little tweaks
that make it hard to generalize, not to mention that virtual calls do
not work in constructor and destructor. If we really care about
generalizing this, we should think about abandoning RAII in favor of
constructor + Init method.

The next steps for splitting the dependencies that seem logical are:

  1) Split GraphDbAccessor implementation, either via inheritance or
     passing in an implementation pointer. GraphDbAccessor should then
     only be created by a virtual call on GraphDb.
  2) Split Interpreter implementation. Besides allowing single node
     interpreter to exist without depending on distributed, this will
     enable the planner and operators to be correctly separated.

Reviewers: msantl, mferencevic, ipaljak

Reviewed By: msantl

Subscribers: dgleich, pullbot

Differential Revision: https://phabricator.memgraph.io/D1493
2018-07-20 10:48:38 +02:00
..
snapshot_generation Extract communication to static library 2018-07-11 12:52:41 +02:00
antlr_parser.cpp youcompleteme config has been added to the repo 2017-02-20 14:17:41 +01:00
antlr_sigsegv.cpp Clean utils folder (namespaces, function names) 2018-04-22 09:44:32 +02:00
antlr_tree_pretty_print.cpp Implement expression code generator 2017-03-08 14:10:16 +01:00
binomial.cpp Clean utils folder (namespaces, function names) 2018-04-22 09:44:32 +02:00
bolt_client.cpp Implement SSL support for servers and clients 2018-06-20 17:56:47 +02:00
card_fraud_generate_snapshot.cpp Clean utils folder (namespaces, function names) 2018-04-22 09:44:32 +02:00
card_fraud_local.cpp Extract io/network into mg-io library 2018-05-30 14:58:41 +02:00
CMakeLists.txt Extract communication to static library 2018-07-11 12:52:41 +02:00
distributed_common.hpp Split GraphDb to distributed and single node files 2018-07-20 10:48:38 +02:00
distributed_repl.cpp Split GraphDb to distributed and single node files 2018-07-20 10:48:38 +02:00
endinan.cpp examples folder has been removed; src/test folder has been removed; the existing tests were moved to tests folder; StacktraceException has been introduced; query_plan_templated has been moved to query folder; hazard pointers have been deleted because they are not used any more 2017-02-18 18:03:48 +01:00
generate_snapshot.cpp Refactor snapshot generators to reduce code duplication 2018-03-22 17:27:45 +01:00
graph_500_generate_snapshot.cpp Distributed BFS 2018-05-15 17:38:51 +02:00
kvstore_console.cpp Initial implementation of telemetry 2018-06-20 14:49:07 +02:00
query_hash.cpp Clean utils folder (namespaces, function names) 2018-04-22 09:44:32 +02:00
query_planner.cpp Add test stream clause 2018-07-09 11:00:18 +02:00
raft_rpc.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
repl.cpp Fix and rename REPL 2018-03-08 10:58:43 +01:00
single_query.cpp Extract TypedValue/DecodedValue conversion to higher component 2018-07-11 12:51:31 +02:00
sl_position_and_count.cpp GraphDbAccessor - label+property index cardinalities for exact value and value ranges 2017-07-06 10:22:19 +02:00
ssl_client.cpp Implement SSL support for servers and clients 2018-06-20 17:56:47 +02:00
ssl_server.cpp Implement SSL support for servers and clients 2018-06-20 17:56:47 +02:00
stripped_timing.cpp Add AST cache 2017-06-14 18:59:31 +02:00
test_antlr_sigsegv Added antlr sigsegv test. 2017-08-03 13:06:18 +02:00
xorshift.cpp Clean utils folder (namespaces, function names) 2018-04-22 09:44:32 +02:00