From e2bbcae3ac826a5d49169da458c17f932a8cd07d Mon Sep 17 00:00:00 2001 From: Marko Budiselic Date: Tue, 26 Jan 2016 23:40:11 +0100 Subject: [PATCH] initial work on query engine, only rough draft of the first level of the arhitecture, implementation is still empty --- cypher/common.hpp | 15 ++++++++++++++ cypher/parser.cpp | 15 ++------------ cypher/query/write/create.cypher | 2 +- query_engine/code_compiler.hpp | 5 +++++ query_engine/code_generator.hpp | 5 +++++ query_engine/engine | Bin 0 -> 39632 bytes query_engine/main.cpp | 23 +++++++++++++++++++++ query_engine/query_engine.hpp | 33 +++++++++++++++++++++++++++++++ query_engine/query_executor.hpp | 5 +++++ query_engine/query_result.hpp | 9 +++++++++ query_engine/query_traverser.hpp | 5 +++++ 11 files changed, 103 insertions(+), 14 deletions(-) create mode 100644 cypher/common.hpp create mode 100644 query_engine/code_compiler.hpp create mode 100644 query_engine/code_generator.hpp create mode 100755 query_engine/engine create mode 100644 query_engine/main.cpp create mode 100644 query_engine/query_engine.hpp create mode 100644 query_engine/query_executor.hpp create mode 100644 query_engine/query_result.hpp create mode 100644 query_engine/query_traverser.hpp diff --git a/cypher/common.hpp b/cypher/common.hpp new file mode 100644 index 000000000..7ef03ddbb --- /dev/null +++ b/cypher/common.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include "utils/command_line/arguments.hpp" +#include "utils/string/filereader.hpp" + +std::string extract_query(const vector_str& arguments) +{ + if (contain_argument(arguments, "-q")) + return get_argument(arguments, "-q", "CREATE (n) RETURN n"); + auto default_file = "query.cypher"; + auto file = get_argument(arguments, "-f", default_file); + // TODO: error handling + return read_file(file.c_str()); +} + diff --git a/cypher/parser.cpp b/cypher/parser.cpp index 22193f743..0d62e7ec2 100644 --- a/cypher/parser.cpp +++ b/cypher/parser.cpp @@ -6,8 +6,7 @@ #include "debug/tree_print.hpp" #include "codegen/cppgen.hpp" #include "utils/command_line/arguments.hpp" -#include "utils/string/filereader.hpp" - +#include "cypher/common.hpp" #include "utils/terminate_handler.hpp" using std::cout; @@ -17,17 +16,7 @@ using std::endl; // -q -> query // -v -> visitor // -f -> file - -std::string extract_query(const vector_str& arguments) -{ - if (contain_argument(arguments, "-q")) - return get_argument(arguments, "-q", "CREATE (n {a:1, b:2}) RETURN n"); - auto default_file = "query/read/match/match-where.cypher"; - auto file = get_argument(arguments, "-f", default_file); - // TODO: error handling - return read_file(file.c_str()); -} - +// int main(int argc, char *argv[]) { std::set_terminate(&terminate_handler); diff --git a/cypher/query/write/create.cypher b/cypher/query/write/create.cypher index 39cf4da9f..f136ce98c 100644 --- a/cypher/query/write/create.cypher +++ b/cypher/query/write/create.cypher @@ -1 +1 @@ -CREATE (n {name: "value"}) +CREATE (n {name: "Roy", surname: "Keane"}) diff --git a/query_engine/code_compiler.hpp b/query_engine/code_compiler.hpp new file mode 100644 index 000000000..a2b39af04 --- /dev/null +++ b/query_engine/code_compiler.hpp @@ -0,0 +1,5 @@ +#pragma once + +class CodeCompiler +{ +}; diff --git a/query_engine/code_generator.hpp b/query_engine/code_generator.hpp new file mode 100644 index 000000000..dd7fd73cf --- /dev/null +++ b/query_engine/code_generator.hpp @@ -0,0 +1,5 @@ +#pragma once + +class CodeGenerator +{ +}; diff --git a/query_engine/engine b/query_engine/engine new file mode 100755 index 0000000000000000000000000000000000000000..59d50c162ff029de8a22481ba3587383fd60e700 GIT binary patch literal 39632 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 + +#include "utils/command_line/arguments.hpp" +#include "cypher/common.hpp" +#include "query_engine.hpp" + +using std::cout; +using std::endl; + +int main(int argc, char** argv) +{ + // arguments parsing + auto arguments = all_arguments(argc, argv); + + // query extraction + auto cypher_query = extract_query(arguments); + cout << "QUERY: " << cypher_query << endl; + + QueryEngine engine; + engine.execute(cypher_query); + + return 0; +} diff --git a/query_engine/query_engine.hpp b/query_engine/query_engine.hpp new file mode 100644 index 000000000..2c0ef9cc3 --- /dev/null +++ b/query_engine/query_engine.hpp @@ -0,0 +1,33 @@ +#pragma once + +#include + +#include "query_traverser.hpp" +#include "code_generator.hpp" +#include "code_compiler.hpp" +#include "query_executor.hpp" +#include "query_result.hpp" + +using std::cout; +using std::endl; + +// +// Current arhitecture: +// query -> traverser -> [generator] -> [compiler] -> executor +// + +class QueryEngine +{ +public: + QueryResult execute(const std::string& query) + { + cout << "execute: " << query << endl; + return QueryResult(); + } + +private: + QueryTraverser traverser; + CodeGenerator generator; + CodeCompiler compiler; + QueryExecutor executor; +}; diff --git a/query_engine/query_executor.hpp b/query_engine/query_executor.hpp new file mode 100644 index 000000000..5aefbd39b --- /dev/null +++ b/query_engine/query_executor.hpp @@ -0,0 +1,5 @@ +#pragma once + +class QueryExecutor +{ +}; diff --git a/query_engine/query_result.hpp b/query_engine/query_result.hpp new file mode 100644 index 000000000..9d82a36bc --- /dev/null +++ b/query_engine/query_result.hpp @@ -0,0 +1,9 @@ +#pragma once + +#include + +class QueryResult +{ +public: + std::string result; +}; diff --git a/query_engine/query_traverser.hpp b/query_engine/query_traverser.hpp new file mode 100644 index 000000000..c5405fd35 --- /dev/null +++ b/query_engine/query_traverser.hpp @@ -0,0 +1,5 @@ +#pragma once + +class QueryTraverser +{ +};