Commit Graph

229 Commits

Author SHA1 Message Date
Teon Banek
4bfae46150 Add basic planning of WHERE
Summary:
Add testing unbound variable in WHERE

Remove some duplication in planner tests

Reviewers: florijan, mislav.bradac

Reviewed By: florijan

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D186
2017-03-27 16:02:24 +02:00
florijan
d387651205 Query::Plan::Produce - added support for Produce without input
Reviewers: teon.banek, buda

Reviewed By: teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D189
2017-03-27 15:55:25 +02:00
florijan
34cdbc2f39 Query::Plan::CreateExpand frame bugfix
Summary: CreateExpand now puts both node and edge on the frame. This is not unit-tested because it would require an infrastructure change, and the code is quite simple.

Reviewers: teon.banek, buda, mislav.bradac

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D187
2017-03-27 15:32:50 +02:00
florijan
1280e77fd3 Query - Logical - Delete op added and tested. Minor refactors.
Reviewers: buda, teon.banek, mislav.bradac

Reviewed By: teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D184
2017-03-27 14:57:44 +02:00
florijan
eca90c43b3 Query - LogicalOp - Filter op added
Reviewers: buda, teon.banek, mislav.bradac

Reviewed By: teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D176
2017-03-27 13:16:58 +02:00
Teon Banek
71c2813f39 Update and refactor query unit tests
Summary:
Test multiple create
Add utility macros for easier creation of AST
Use test query macros when testing semantic analysis
Document the query test macros
Use query test macros in interpreter tests

Reviewers: florijan, mislav.bradac, buda

Reviewed By: mislav.bradac

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D178
2017-03-27 10:18:15 +02:00
Mislav Bradac
6a547839e1 Where and delete from antlr to highlevel ast
Reviewers: teon.banek

Reviewed By: teon.banek

Differential Revision: https://phabricator.memgraph.io/D181
2017-03-27 10:18:08 +02:00
Mislav Bradac
9c7acf780c Implement expression evaluation
Reviewers: buda

Reviewed By: buda

Differential Revision: https://phabricator.memgraph.io/D179
2017-03-24 17:44:05 +01:00
florijan
3a07a95f61 Query - EdgeFilter - test improvements and bugfix
Summary: EdgeFiltering on type was implemented wrong, requiring ALL the given edge types to be satisfied instead of OR. Added a test and fixed implementation. Also resolved a few TODOs in EdgeFilterTest.

Reviewers: buda, teon.banek, mislav.bradac

Reviewed By: teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D170
2017-03-24 14:18:05 +01:00
florijan
f9b91cf680 Query - Logical - CreateNode now accepts an optional input. If provided, CreateNode creates a node for each successful Pull from input. If not provided, CreateNode creates a single node
Reviewers: buda, mislav.bradac, teon.banek

Reviewed By: teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D173
2017-03-24 14:17:32 +01:00
florijan
2215173a58 Utils - random graph generator hacked
Summary: RandomGraphGenerator added

Reviewers: teon.banek, mislav.bradac, buda

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D165
2017-03-24 13:13:04 +01:00
Teon Banek
35668d5b9f Make GNU Readline dependency optional
Reviewers: florijan, buda

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D171
2017-03-24 12:42:45 +01:00
Dominik Gleich
087c56315e Fix engine.
Summary:
Test engine update.

https://docs.google.com/document/d/1rnFsCFock-K3ZbuvMiCYWhGS_m7-DZV37JtxWRClD_8/edit

Reviewers: mislav.bradac, dtomicevic, buda

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D167
2017-03-24 12:37:01 +01:00
florijan
11eb643a5e Query - REPL fixes
Summary: Minor fixes.

Reviewers: teon.banek

Reviewed By: teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D168
2017-03-24 09:50:53 +01:00
Mislav Bradac
f146c458be Implement opencypher to ast expression conversion
Reviewers: buda

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D164
2017-03-23 16:46:15 +01:00
Marko Budiselic
08c43e7c87 Coverage for test binaries is excluded.
Summary: Coverage for test binaries is excluded.

Reviewers: teon.banek

Reviewed By: teon.banek

Subscribers: pullbot, buda

Differential Revision: https://phabricator.memgraph.io/D161
2017-03-23 16:07:25 +01:00
florijan
f304dfef28 Query Console implemented
Summary: buda, teon.banek, mislav.bradac

Reviewers: mislav.bradac, buda, teon.banek

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D163
2017-03-23 15:51:25 +01:00
Marko Budiselic
e9357ea13b Bug fix implicit conversion from PropertyValue to TypedValue.
Summary: Bug fix implicit conversion from PropertyValue to TypedValue.

Reviewers: mislav.bradac

Reviewed By: mislav.bradac

Subscribers: buda

Differential Revision: https://phabricator.memgraph.io/D160
2017-03-22 19:40:11 +01:00
Marko Budiselic
3b42cd2579 Everything is merged (communication + query engine) but we have to fix the PULL_ALL issue. 2017-03-22 17:57:06 +01:00
Matej Ferencevic
5a5ffface3 Modified hardcoded queries to use new encoder.
Summary:
Removed old encoder.

Changed namespace from bolt to communication::bolt.

Removed old include from new encoder.

Added an empty message success to encoder.

Changed order in communication::Server.

Changed bolt session to use new encoder.

Merge remote-tracking branch 'origin/dev' into mg_hardcoded_queries

Fixed PrintRecordStream.

Reviewers: buda, dgleich

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D158
2017-03-22 17:09:22 +01:00
florijan
b236694fd2 Query - entry.hpp renamed to interpreter.hpp, Engine renamed to Interpreter
Summary: Query - interpreter console hack

Reviewers: buda, teon.banek, mislav.bradac

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D157
2017-03-22 16:39:00 +01:00
Matej Ferencevic
3bf0bd40a7 Initial version of new bolt encoder.
Reviewers: dgleich, buda

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D104
2017-03-22 16:13:47 +01:00
Teon Banek
8da6ce67c0 Add planning CreateExpand operator
Summary: Add planning CreateExpand operator. This is quite similar to planning Expand, but I wouldn't abstract the duplicated parts yet. Also, raise semantic error if creating bidirectional edges

Reviewers: buda, mislav.bradac, florijan

Reviewed By: mislav.bradac

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D155
2017-03-22 15:41:50 +01:00
florijan
981f93d575 Query - ExpandCreate, prop tests, MATCH_CREATE
Summary: Query - ExpandCreate op added (with tests). LogicalOp tests have property enabled. MATCH-CREATE test started but disabled due to MVCC.

Reviewers: buda, mislav.bradac, teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D150
2017-03-22 13:41:21 +01:00
Mislav Bradac
33eaf80344 Change thrown exception classes in cypher visitor
Reviewers: buda

Reviewed By: buda

Differential Revision: https://phabricator.memgraph.io/D151
2017-03-22 11:19:28 +01:00
Teon Banek
bff671af43 Add planning Expand logical operator
Summary:
Make LogicalOperator visitable.
Add unit tests for logical planner.
Add planning Expand logical operators.
Test planning edge expansion.
Add documentation to planner implementation.

Reviewers: florijan, buda, mislav.bradac

Reviewed By: mislav.bradac

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D147
2017-03-22 10:58:42 +01:00
Teon Banek
b33a654137 Add basic type checking to SymbolGenerator
Summary:
Test for simple type mismatch of node/edge types.
Add basic type checking of variables.
Check for edge type when creating an edge.
Add documentation to private structs and methods.

Reviewers: mislav.bradac, buda, florijan

Reviewed By: mislav.bradac

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D148
2017-03-22 10:49:52 +01:00
Dominik Gleich
6be2399ad1 Fix warnings all over the codebase.
Reviewers: florijan, buda

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D146
2017-03-22 09:32:06 +01:00
Mislav Bradac
8e7ccf6e83 Extract literals to ast
Summary:
Extract literals to ast Literal node
Fix bugs in TypedValue
Add tests for properties to cypher_main_visitor test

Reviewers: buda, florijan, dgleich, teon.banek

Reviewed By: dgleich, teon.banek

Subscribers: dgleich, pullbot

Differential Revision: https://phabricator.memgraph.io/D149
2017-03-21 15:23:54 +01:00
florijan
a2a4c28168 Query - Add expansion LogicalOp and tests
Summary: Query - AstTreeStorage - TODO for forwarding resolved

Reviewers: teon.banek, mislav.bradac, buda

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D139
2017-03-21 11:26:05 +01:00
matej.gradicek
88a96c2ebd Fixed logging tests.
Summary: Fixed logging tests.

Reviewers: buda

Reviewed By: buda

Subscribers: pullbot, matej.gradicek

Differential Revision: https://phabricator.memgraph.io/D137
2017-03-20 08:18:52 +00:00
Mislav Bradac
848d022c60 Bug fixes in cypher_main_visitor and add create clause
Reviewers: teon.banek, florijan

Reviewed By: teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D143
2017-03-17 16:47:29 +01:00
Teon Banek
5e6aaf231d Add tests for symbol generation in CREATE clause
Summary:
Add tests for symbol generation in CREATE clause and correctly (hopefully)
check symbols in create clause and properties.

Reviewers: florijan, mislav.bradac, buda

Reviewed By: mislav.bradac

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D135
2017-03-17 15:50:19 +01:00
Mislav Bradac
dd56acf375 Add tests for CypherMainVisitor
Summary:
Add tests for CypherMainVisitor
Initialise members to nullptrs in ast.hpp data structures
Preserver users identifier names

Reviewers: teon.banek

Reviewed By: teon.banek

Differential Revision: https://phabricator.memgraph.io/D138
2017-03-17 10:45:13 +01:00
Mislav Bradac
0db7883670 Add AstTreeStorage
Reviewers: teon.banek

Reviewed By: teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D134
2017-03-16 15:07:22 +01:00
florijan
da0c9c03d6 Query - create implementation started
Summary: CreateOp tests

Reviewers: teon.banek, buda, mislav.bradac

Reviewed By: teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D132
2017-03-16 09:31:04 +01:00
Teon Banek
ffd399906a Use Symbol to get frame value
Summary:
Since we always use the symbol position to read from frame, it's more
convenient for `Frame::operator[]` to accept `Symbol` instead of `int`.

Reviewers: florijan, mislav.bradac, buda

Reviewed By: florijan, buda

Differential Revision: https://phabricator.memgraph.io/D129
2017-03-15 16:31:13 +01:00
florijan
6c7372b3c5 Query - AST tests in progress
Summary:
Query compiler AST test in progress
Logical operator testing. NodeFilter LogicalOperator added

Reviewers: mislav.bradac, buda, teon.banek

Reviewed By: buda, teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D126
2017-03-15 16:05:23 +01:00
Teon Banek
42e8d339c5 Add tests for symbol generation
Summary:
Add tests for symbol generator

Also, remove redundant PreVisit method from AST visitor

Reviewers: mislav.bradac, buda, florijan

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D124
2017-03-15 14:27:21 +01:00
Teon Banek
b956d0812b Move all query related exceptions to a single file
Reviewers: mislav.bradac, buda, florijan

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D125
2017-03-15 14:13:14 +01:00
florijan
1a6aaaed58 DBMS now returns a unique pointer to a GraphDbAccessor
Summary: See above.

Reviewers: mislav.bradac

Reviewed By: mislav.bradac

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D120
2017-03-14 13:37:23 +01:00
florijan
1d2d609896 VertexAccessor::in_out() added
Reviewers: buda, dgleich

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D100
2017-03-14 07:48:11 +01:00
Marko Budiselic
3e0b12f646 Merge branch 'compiler_prototype' into dev 2017-03-13 13:35:23 +01:00
Marko Budiselic
d0abb9f023 Interpreter works! 2017-03-12 03:05:31 +01:00
Marko Budiselic
1f75572d5e it compilesga -A! 2017-03-12 00:04:10 +01:00
Mislav Bradac
026e0e6fbd Implement ast generation by cypher visitor 2017-03-11 23:22:38 +01:00
Marko Budiselic
0eeb1fc5b4 Basic interpreter implementation. 2017-03-11 21:09:26 +01:00
Marko Budiselic
9030454132 Add compiler prototype entry point (work in progress). 2017-03-11 21:02:25 +01:00
Dominik Gleich
4a220411e1 Fix warnings.
Reviewers: buda, mferencevic

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D110
2017-03-10 21:36:55 +01:00
Teon Banek
333861e7e9 Generate flags for PlanCompiler via cmake
Summary:
Add join function to functions.cmake

This is a convenience function which will join a list of values by
replacing ';' with the given separator.

cmake: Add fetching compile flags in gcc format

This is a utility function which takes all target compilation flags that
can be passed to gcc or clang.

Generate flags for PlanCompiler via cmake

Cmake will now collect all compiler options and definitions which are
then stored in a generated `query/plan_compiler.hpp`. The generated file
is not tracked by git and is stored inside cmake's build directory. The
file is fast to generate and may change often depending on the build
type.

Additionally, link and include directories are also generated as
absolute paths. In the future, we may want to support relative paths so
that copying/installing the build dir creates runnable binaries.

Add -Wall flag for all build types

Lowercase #pragma once in tests for network_common

It seems 'once' may be case sensitive, since clang outputs a warning for
it that the pragma is unknown.

Reviewers: buda

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D107
2017-03-10 18:21:31 +01:00