delete traverser (skeleton only)
This commit is contained in:
parent
0e897b412a
commit
3eb84e8f1c
@ -12,7 +12,6 @@ using std::string;
|
|||||||
class CodeGenerator
|
class CodeGenerator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
void generate_cpp(const std::string& query,
|
void generate_cpp(const std::string& query,
|
||||||
const uint64_t stripped_hash,
|
const uint64_t stripped_hash,
|
||||||
const std::string& path)
|
const std::string& path)
|
||||||
@ -33,8 +32,7 @@ public:
|
|||||||
{"class_name", "CodeCPU"},
|
{"class_name", "CodeCPU"},
|
||||||
{"stripped_hash", std::to_string(stripped_hash)},
|
{"stripped_hash", std::to_string(stripped_hash)},
|
||||||
{"query", query},
|
{"query", query},
|
||||||
{"code", code_traverser.code},
|
{"code", code_traverser.code}
|
||||||
{"return_type", "int"}
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
utils::write_file(generated, path);
|
utils::write_file(generated, path);
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
#define DEBUG 1
|
||||||
|
|
||||||
#include "utils/command_line/arguments.hpp"
|
#include "utils/command_line/arguments.hpp"
|
||||||
#include "cypher/common.hpp"
|
#include "cypher/common.hpp"
|
||||||
#include "query_engine.hpp"
|
#include "query_engine.hpp"
|
||||||
|
@ -5,17 +5,12 @@
|
|||||||
#include "query_program.hpp"
|
#include "query_program.hpp"
|
||||||
#include "database/db.hpp"
|
#include "database/db.hpp"
|
||||||
#include "utils/log/logger.hpp"
|
#include "utils/log/logger.hpp"
|
||||||
|
#include "query_engine/debug.hpp"
|
||||||
|
|
||||||
// preparations before execution
|
// preparations before execution
|
||||||
// execution
|
// execution
|
||||||
// postprocess the results
|
// postprocess the results
|
||||||
|
|
||||||
#define DEBUG 1
|
|
||||||
#include "query_engine/debug.hpp"
|
|
||||||
|
|
||||||
using std::cout;
|
|
||||||
using std::endl;
|
|
||||||
|
|
||||||
class ProgramExecutor
|
class ProgramExecutor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -23,7 +18,7 @@ public:
|
|||||||
auto execute(QueryProgram& program)
|
auto execute(QueryProgram& program)
|
||||||
{
|
{
|
||||||
auto result = program.code->run(db, program.stripped.arguments);
|
auto result = program.code->run(db, program.stripped.arguments);
|
||||||
print_props(*result->data["n"]->data[0]);
|
PRINT_PROPS(*result->data["n"]->data[0]);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
14
query_engine/traverser/code.hpp
Normal file
14
query_engine/traverser/code.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
struct Code
|
||||||
|
{
|
||||||
|
void reset()
|
||||||
|
{
|
||||||
|
code = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string code;
|
||||||
|
};
|
||||||
|
|
@ -4,20 +4,15 @@
|
|||||||
|
|
||||||
#include "cypher/visitor/traverser.hpp"
|
#include "cypher/visitor/traverser.hpp"
|
||||||
#include "cypher/ast/queries.hpp"
|
#include "cypher/ast/queries.hpp"
|
||||||
|
#include "code.hpp"
|
||||||
#include "write_traverser.hpp"
|
#include "write_traverser.hpp"
|
||||||
#include "read_traverser.hpp"
|
#include "read_traverser.hpp"
|
||||||
|
#include "update_traverser.hpp"
|
||||||
|
#include "delete_traverser.hpp"
|
||||||
|
|
||||||
class CodeTraverser : public Traverser
|
class CodeTraverser : public Traverser, public Code
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
std::string code;
|
|
||||||
|
|
||||||
void reset()
|
|
||||||
{
|
|
||||||
code = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
void visit(ast::WriteQuery& write_query) override
|
void visit(ast::WriteQuery& write_query) override
|
||||||
{
|
{
|
||||||
auto write_traverser = WriteTraverser();
|
auto write_traverser = WriteTraverser();
|
||||||
@ -31,4 +26,18 @@ public:
|
|||||||
read_query.accept(read_traverser);
|
read_query.accept(read_traverser);
|
||||||
code = read_traverser.code;
|
code = read_traverser.code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void visit(ast::UpdateQuery& update_query) override
|
||||||
|
{
|
||||||
|
auto update_traverser = UpdateTraverser();
|
||||||
|
update_query.accept(update_traverser);
|
||||||
|
code = update_traverser.code;
|
||||||
|
}
|
||||||
|
|
||||||
|
void visit(ast::DeleteQuery& delete_query) override
|
||||||
|
{
|
||||||
|
auto delete_traverser = DeleteTraverser();
|
||||||
|
delete_query.accept(delete_traverser);
|
||||||
|
code = delete_traverser.code;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
8
query_engine/traverser/delete_traverser.hpp
Normal file
8
query_engine/traverser/delete_traverser.hpp
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "code.hpp"
|
||||||
|
#include "cypher/visitor/traverser.hpp"
|
||||||
|
|
||||||
|
class DeleteTraverser : public Traverser, public Code
|
||||||
|
{
|
||||||
|
};
|
@ -1,9 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "code.hpp"
|
||||||
#include "cypher/visitor/traverser.hpp"
|
#include "cypher/visitor/traverser.hpp"
|
||||||
|
|
||||||
class ReadTraverser : public Traverser
|
class ReadTraverser : public Traverser, public Code
|
||||||
{
|
{
|
||||||
public:
|
|
||||||
std::string code;
|
|
||||||
};
|
};
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "code.hpp"
|
||||||
#include "cypher/visitor/traverser.hpp"
|
#include "cypher/visitor/traverser.hpp"
|
||||||
|
|
||||||
class UpdateTraverser : public Traverser
|
class UpdateTraverser : public Traverser, public Code
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user