2014-11-12 00:11:07 +01:00
|
|
|
#ifndef __CREATE_STATEMENT_H__
|
|
|
|
#define __CREATE_STATEMENT_H__
|
|
|
|
|
2014-12-03 17:43:02 +01:00
|
|
|
#include "SQLStatement.h"
|
2014-11-12 00:11:07 +01:00
|
|
|
|
|
|
|
namespace hsql {
|
|
|
|
|
2014-11-26 14:43:22 +01:00
|
|
|
/**
|
|
|
|
* @struct ColumnDefinition
|
2014-12-15 18:32:46 +01:00
|
|
|
* @brief Represents definition of a table column
|
2014-11-26 14:43:22 +01:00
|
|
|
*/
|
|
|
|
struct ColumnDefinition {
|
|
|
|
enum DataType {
|
|
|
|
TEXT,
|
|
|
|
INT,
|
|
|
|
DOUBLE
|
|
|
|
};
|
|
|
|
|
2014-11-26 18:20:10 +01:00
|
|
|
ColumnDefinition(char* name, DataType type) :
|
|
|
|
name(name),
|
|
|
|
type(type) {}
|
|
|
|
|
2014-12-15 18:32:46 +01:00
|
|
|
virtual ~ColumnDefinition() {
|
|
|
|
delete name;
|
|
|
|
}
|
2014-11-26 18:20:10 +01:00
|
|
|
|
2014-11-26 14:43:22 +01:00
|
|
|
char* name;
|
|
|
|
DataType type;
|
|
|
|
};
|
2014-11-12 00:11:07 +01:00
|
|
|
|
2014-12-15 18:32:46 +01:00
|
|
|
|
2014-11-12 00:11:07 +01:00
|
|
|
/**
|
|
|
|
* @struct CreateStatement
|
2014-12-15 18:32:46 +01:00
|
|
|
* @brief Represents "CREATE TABLE students (name TEXT, student_number INTEGER, city TEXT, grade DOUBLE)"
|
2014-11-12 00:11:07 +01:00
|
|
|
*/
|
2014-12-03 17:43:02 +01:00
|
|
|
struct CreateStatement : SQLStatement {
|
2014-11-26 14:43:22 +01:00
|
|
|
enum CreateType {
|
|
|
|
kTable,
|
|
|
|
kTableFromTbl, // Hyrise file format
|
|
|
|
};
|
|
|
|
|
2014-12-03 17:43:02 +01:00
|
|
|
CreateStatement(CreateType type) :
|
|
|
|
SQLStatement(kStmtCreate),
|
|
|
|
type(type),
|
2014-11-17 02:18:31 +01:00
|
|
|
if_not_exists(false),
|
2014-11-26 18:20:10 +01:00
|
|
|
columns(NULL),
|
2014-11-13 01:27:47 +01:00
|
|
|
file_path(NULL),
|
|
|
|
table_name(NULL) {};
|
2014-11-26 18:20:10 +01:00
|
|
|
|
2014-12-15 18:32:46 +01:00
|
|
|
virtual ~CreateStatement() {
|
|
|
|
delete columns;
|
|
|
|
delete file_path;
|
|
|
|
delete table_name;
|
|
|
|
}
|
2014-11-12 00:11:07 +01:00
|
|
|
|
2014-12-03 17:43:02 +01:00
|
|
|
CreateType type;
|
2014-11-17 02:18:31 +01:00
|
|
|
bool if_not_exists;
|
2014-11-26 18:20:10 +01:00
|
|
|
|
|
|
|
List<ColumnDefinition*>* columns;
|
|
|
|
|
2014-11-12 00:11:07 +01:00
|
|
|
const char* file_path;
|
|
|
|
const char* table_name;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} // namespace hsql
|
|
|
|
#endif
|