15struct ConstDatabaseCommandVisitor;
16struct DatabaseCommandVisitor;
24 std::unique_ptr<ast::Command>
ast_;
31 virtual void accept(DatabaseCommandVisitor &v) = 0;
32 virtual void accept(ConstDatabaseCommandVisitor &v)
const = 0;
37 template<
typename T = ast::Command>
38 requires std::derived_from<T, ast::Command>
40 template<
typename T = ast::Command>
41 requires std::derived_from<T, ast::Command>
44 std::unique_ptr<ast::Command>
ast(std::unique_ptr<ast::Command> new_ast) {
45 return std::exchange(
ast_, std::move(new_ast));
50 return std::swap(
t_, t);
59 void accept(DatabaseCommandVisitor &v)
override;
60 void accept(ConstDatabaseCommandVisitor &v)
const override;
82 const std::vector<std::string> &
args()
const {
return args_; }
90 void accept(DatabaseCommandVisitor &v)
override;
91 void accept(ConstDatabaseCommandVisitor &v)
const override;
96#define M_DATABASE_INSTRUCTION_LIST(X) \
123 void accept(DatabaseCommandVisitor &v)
override;
124 void accept(ConstDatabaseCommandVisitor &v)
const override;
134 void accept(DatabaseCommandVisitor &v)
override;
135 void accept(ConstDatabaseCommandVisitor &v)
const override;
143 void accept(DatabaseCommandVisitor &v)
override;
144 void accept(ConstDatabaseCommandVisitor &v)
const override;
152 void accept(DatabaseCommandVisitor &v)
override;
153 void accept(ConstDatabaseCommandVisitor &v)
const override;
174 void accept(DatabaseCommandVisitor &v)
override;
175 void accept(ConstDatabaseCommandVisitor &v)
const override;
180#define M_DATABASE_DML_LIST(X) \
202 void accept(DatabaseCommandVisitor &v)
override;
203 void accept(ConstDatabaseCommandVisitor &v)
const override;
216 void accept(DatabaseCommandVisitor &v)
override;
217 void accept(ConstDatabaseCommandVisitor &v)
const override;
230 void accept(DatabaseCommandVisitor &v)
override;
231 void accept(ConstDatabaseCommandVisitor &v)
const override;
244 void accept(DatabaseCommandVisitor &v)
override;
245 void accept(ConstDatabaseCommandVisitor &v)
const override;
264 void accept(DatabaseCommandVisitor &v)
override;
265 void accept(ConstDatabaseCommandVisitor &v)
const override;
287 void accept(DatabaseCommandVisitor &v)
override;
288 void accept(ConstDatabaseCommandVisitor &v)
const override;
307 void accept(DatabaseCommandVisitor &v)
override;
308 void accept(ConstDatabaseCommandVisitor &v)
const override;
313#define M_DATABASE_DDL_LIST(X)\
323#define M_DATABASE_SQL_LIST(X) \
324 M_DATABASE_DML_LIST(X) \
325 M_DATABASE_DDL_LIST(X)
327#define M_DATABASE_COMMAND_LIST(X) \
328 M_DATABASE_INSTRUCTION_LIST(X) \
329 M_DATABASE_SQL_LIST(X) \
#define M_DATABASE_COMMAND_LIST(X)
#define M_DECLARE_VISITOR(VISITOR_NAME, BASE_CLASS, CLASS_LIST)
Defines a visitor VISITOR_NAME to visit the class hierarchy rooted in BASE_CLASS and with subclasses ...
ThreadSafeStringPool::proxy_type ThreadSafePooledString
void accept(DatabaseCommandVisitor &v) override
CreateDatabase(ThreadSafePooledString db_name)
void execute(Diagnostic &diag) override
Executes the command.
ThreadSafePooledString db_name_
void accept(ConstDatabaseCommandVisitor &v) const override
ThreadSafePooledString table_name_
ThreadSafePooledString index_name_
CreateIndex(std::unique_ptr< idx::IndexBase > index, ThreadSafePooledString table_name, ThreadSafePooledString attribute_name, ThreadSafePooledString index_name)
void accept(ConstDatabaseCommandVisitor &v) const override
void execute(Diagnostic &diag) override
Executes the command.
ThreadSafePooledString attribute_name_
std::unique_ptr< idx::IndexBase > index_
void accept(DatabaseCommandVisitor &v) override
CreateTable(std::unique_ptr< Table > table)
void accept(ConstDatabaseCommandVisitor &v) const override
void execute(Diagnostic &diag) override
Executes the command.
void accept(DatabaseCommandVisitor &v) override
std::unique_ptr< Table > table_
Base class for all commands resulting from a data manipulation language (DML) statement.
Configuration parameters for importing a DSV file.
The command pattern for operations in the DBMS.
virtual void accept(DatabaseCommandVisitor &v)=0
std::unique_ptr< ast::Command > ast_
the AST of the command; optional
virtual void accept(ConstDatabaseCommandVisitor &v) const =0
Scheduler::Transaction * t_
the transaction this command belongs to
std::unique_ptr< ast::Command > ast(std::unique_ptr< ast::Command > new_ast)
virtual ~DatabaseCommand()=default
virtual void execute(Diagnostic &diag)=0
Executes the command.
Scheduler::Transaction * transaction()
void transaction(Scheduler::Transaction *t)
A DatabaseInstruction represents an invokation of an instruction with (optional) arguments.
std::vector< std::string > args_
the arguments of this instruction
const std::vector< std::string > & args() const
Returns the arguments of this instruction.
DatabaseInstruction(std::vector< std::string > args)
Delete records from a Table of a Database.
void execute(Diagnostic &diag) override
Executes the command.
void accept(ConstDatabaseCommandVisitor &v) const override
void accept(DatabaseCommandVisitor &v) override
DropDatabase(ThreadSafePooledString db_name)
void execute(Diagnostic &diag) override
Executes the command.
void accept(DatabaseCommandVisitor &v) override
void accept(ConstDatabaseCommandVisitor &v) const override
ThreadSafePooledString db_name_
DropIndex(std::vector< ThreadSafePooledString > index_names)
std::vector< ThreadSafePooledString > index_names_
void execute(Diagnostic &diag) override
Executes the command.
void accept(ConstDatabaseCommandVisitor &v) const override
void accept(DatabaseCommandVisitor &v) override
void accept(DatabaseCommandVisitor &v) override
void execute(Diagnostic &diag) override
Executes the command.
void accept(ConstDatabaseCommandVisitor &v) const override
std::vector< ThreadSafePooledString > table_names_
DropTable(std::vector< ThreadSafePooledString > table_names)
void accept(ConstDatabaseCommandVisitor &v) const override
void accept(DatabaseCommandVisitor &v) override
void execute(Diagnostic &diag) override
Executes the command.
Import records from a delimiter separated values (DSV) file into a Table of a Database.
ImportDSV(const Table &table, std::filesystem::path path, DSVConfig cfg)
std::filesystem::path path_
void accept(DatabaseCommandVisitor &v) override
void execute(Diagnostic &diag) override
Executes the command.
void accept(ConstDatabaseCommandVisitor &v) const override
Insert records into a Table of a Database.
void accept(DatabaseCommandVisitor &v) override
void accept(ConstDatabaseCommandVisitor &v) const override
void execute(Diagnostic &diag) override
Executes the command.
Run a query against the selected database.
std::unique_ptr< Consumer > logical_plan_
std::unique_ptr< MatchBase > physical_plan_
std::unique_ptr< QueryGraph > graph_
void accept(DatabaseCommandVisitor &v) override
void accept(ConstDatabaseCommandVisitor &v) const override
void execute(Diagnostic &diag) override
Executes the command.
A table is a sorted set of attributes.
Modify records of a Table of a Database.
void execute(Diagnostic &diag) override
Executes the command.
void accept(ConstDatabaseCommandVisitor &v) const override
void accept(DatabaseCommandVisitor &v) override
UseDatabase(ThreadSafePooledString db_name)
void execute(Diagnostic &diag) override
Executes the command.
void accept(DatabaseCommandVisitor &v) override
void accept(ConstDatabaseCommandVisitor &v) const override
ThreadSafePooledString db_name_
Learn an SPN on every table in the database that is currently in use.
void accept(ConstDatabaseCommandVisitor &v) const override
void accept(DatabaseCommandVisitor &v) override
void execute(Diagnostic &diag) override
Executes the command.
learn_spns(std::vector< std::string > args)