system catalogue initial version
This commit is contained in:
@@ -6,9 +6,36 @@
|
||||
|
||||
namespace usql {
|
||||
|
||||
USql::USql() {
|
||||
// create catalogue tables first
|
||||
|
||||
std::vector<std::string> k_debug_sql_commands {
|
||||
"create table usql_tables(name varchar(32) not null, modified boolean not null)",
|
||||
"create table usql_columns(table_name varchar(32) not null, column_name varchar(32) not null, column_type varchar(16) not null, column_length integer not null, nullable boolean not null, column_order integer not null)"
|
||||
};
|
||||
|
||||
// create cataloque tables
|
||||
for (const auto &command : k_debug_sql_commands) {
|
||||
std::unique_ptr<Node> create_table_node = m_parser.parse(command);
|
||||
const CreateTableNode &node = static_cast<CreateTableNode &>(*create_table_node);
|
||||
|
||||
Table table{node.table_name, node.cols_defs};
|
||||
m_tables.push_back(table);
|
||||
|
||||
}
|
||||
// insert data into cataloque tables
|
||||
for (const auto &command : k_debug_sql_commands) {
|
||||
std::unique_ptr<Node> create_table_node = m_parser.parse(command);
|
||||
const CreateTableNode &node = static_cast<CreateTableNode &>(*create_table_node);
|
||||
|
||||
execute_create_table_sys_catalogue(node);
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<Table> USql::execute(const std::string &command) {
|
||||
try {
|
||||
std::unique_ptr<Node> node = m_parser.parse(command);
|
||||
// node->dump();
|
||||
return execute(*node);
|
||||
|
||||
} catch (const std::exception &e) {
|
||||
|
||||
Reference in New Issue
Block a user