memgraph/include/query_engine/program_executor.hpp

38 lines
916 B
C++
Raw Normal View History

#pragma once
#include <string>
#include "database/db.hpp"
#include "query_engine/exceptions/exceptions.hpp"
2016-07-18 01:32:35 +08:00
#include "query_engine/util.hpp"
#include "query_program.hpp"
// preparations before execution
// execution
// postprocess the results
// BARRIER!
namespace barrier
{
Db& trans(::Db& ref);
}
template <typename Stream>
class ProgramExecutor
{
public:
// QueryProgram has to know about the Stream
// Stream has to be passed in this function for every execution
auto execute(QueryProgram<Stream> &program, Db &db,
Stream &stream)
{
2016-07-18 01:32:35 +08:00
try {
// TODO: return result of query/code exection
return program.code->run(barrier::trans(db), program.stripped.arguments, stream);
2016-07-18 01:32:35 +08:00
} catch (...) {
// TODO: return more information about the error
throw QueryEngineException("code execution error");
}
}
};