42 lines
1.4 KiB
C++
42 lines
1.4 KiB
C++
#include "parser.h"
|
|
#include "executor.h"
|
|
|
|
// https://dev.to/joaoh82/what-would-sqlite-look-like-if-written-in-rust-part-1-2np4
|
|
|
|
// parser should get lexer as param and table executor to be able translate * or get types or so
|
|
// podporovat create as select
|
|
// drop table
|
|
|
|
int main(int argc, char *argv[]) {
|
|
Parser parser{};
|
|
Executor executor{};
|
|
|
|
std::vector<std::string> sql_commands {
|
|
"create table a (i integer not null, s varchar(64), f float null)",
|
|
"insert into a (i, s) values(1, 'one')",
|
|
"insert into a (i, s) values(2, 'two')",
|
|
"insert into a (i, s) values(3, 'two')",
|
|
"insert into a (i, s) values(4, 'four')",
|
|
"insert into a (i, s) values(5, 'five')",
|
|
"select i, s from a where i > 2",
|
|
"select i, s from a where i = 1",
|
|
"select i, s from a where s = 'two'",
|
|
"select i, s from a where i <= 3 and s = 'one'",
|
|
"select i, s from a where i > 0",
|
|
"delete from a where i = 4",
|
|
"select i, s from a where i > 0",
|
|
"update a set f = 9.99 where i = 3",
|
|
// "update a set s = 'three', f = 1.0 + 2.0 where i = 3",
|
|
"select i, s, f from a where i = 3"
|
|
// "select i, s from a where i > 0"
|
|
};
|
|
|
|
|
|
for(auto command : sql_commands) {
|
|
auto node = parser.parse(command);
|
|
executor.execute(*node);
|
|
}
|
|
|
|
return 0;
|
|
}
|