ColNameNode removed, a bit more powerfull inserts etc
BEWARE insert into t (i) values(1+1) WILL FAIL - it is not "1" "+" "1" but "1" "+1"
This commit is contained in:
21
parser.h
21
parser.h
@@ -25,7 +25,6 @@ namespace usql {
|
||||
float_value,
|
||||
string_value,
|
||||
bool_value,
|
||||
database_value,
|
||||
logical_operator,
|
||||
relational_operator,
|
||||
arithmetical_operator,
|
||||
@@ -40,7 +39,7 @@ namespace usql {
|
||||
drop_table,
|
||||
set,
|
||||
show,
|
||||
column_name,
|
||||
database_value,
|
||||
offset_limit,
|
||||
column_order,
|
||||
column_value,
|
||||
@@ -55,11 +54,6 @@ namespace usql {
|
||||
Node(const NodeType type) : node_type(type) {}
|
||||
};
|
||||
|
||||
struct ColNameNode : Node {
|
||||
std::string name;
|
||||
|
||||
ColNameNode(const std::string col_name) : Node(NodeType::column_name), name(col_name) {}
|
||||
};
|
||||
|
||||
struct ColOrderNode : Node {
|
||||
std::string col_name;
|
||||
@@ -67,7 +61,7 @@ namespace usql {
|
||||
bool ascending;
|
||||
|
||||
ColOrderNode(const std::string name, bool asc) : Node(NodeType::column_order), col_name(name), col_index(-1), ascending(asc) {}
|
||||
ColOrderNode(int index, bool asc) : Node(NodeType::column_name), col_name(""), col_index(index), ascending(asc) {}
|
||||
ColOrderNode(int index, bool asc) : Node(NodeType::database_value), col_name(""), col_index(index), ascending(asc) {}
|
||||
};
|
||||
|
||||
|
||||
@@ -85,7 +79,7 @@ namespace usql {
|
||||
std::string name;
|
||||
|
||||
SelectColNode(std::unique_ptr<Node> column, std::string alias) :
|
||||
Node(NodeType::column_name), value(std::move(column)), name(alias) {}
|
||||
Node(NodeType::database_value), value(std::move(column)), name(alias) {}
|
||||
};
|
||||
|
||||
struct ColDefNode : Node {
|
||||
@@ -256,10 +250,10 @@ namespace usql {
|
||||
|
||||
struct InsertIntoTableNode : Node {
|
||||
std::string table_name;
|
||||
std::vector<ColNameNode> cols_names;
|
||||
std::vector<DatabaseValueNode> cols_names;
|
||||
std::vector<std::unique_ptr<Node>> cols_values;
|
||||
|
||||
InsertIntoTableNode(const std::string name, std::vector<ColNameNode> names, std::vector<std::unique_ptr<Node>> values) :
|
||||
InsertIntoTableNode(const std::string name, std::vector<DatabaseValueNode> names, std::vector<std::unique_ptr<Node>> values) :
|
||||
Node(NodeType::insert_into), table_name(name), cols_names(names), cols_values(std::move(values)) {}
|
||||
};
|
||||
|
||||
@@ -285,11 +279,11 @@ namespace usql {
|
||||
|
||||
struct UpdateTableNode : Node {
|
||||
std::string table_name;
|
||||
std::vector<ColNameNode> cols_names;
|
||||
std::vector<DatabaseValueNode> cols_names;
|
||||
std::vector<std::unique_ptr<Node>> values;
|
||||
std::unique_ptr<Node> where;
|
||||
|
||||
UpdateTableNode(std::string name, std::vector<ColNameNode> names, std::vector<std::unique_ptr<Node>> vals,
|
||||
UpdateTableNode(std::string name, std::vector<DatabaseValueNode> names, std::vector<std::unique_ptr<Node>> vals,
|
||||
std::unique_ptr<Node> where_clause) :
|
||||
Node(NodeType::update_table), table_name(name), cols_names(names), values(std::move(vals)),
|
||||
where(std::move(where_clause)) {}
|
||||
@@ -369,7 +363,6 @@ namespace usql {
|
||||
std::unique_ptr<Node> parse_expression();
|
||||
std::unique_ptr<Node> parse_expression(std::unique_ptr<Node> left);
|
||||
|
||||
std::unique_ptr<Node> parse_operand_node();
|
||||
std::unique_ptr<Node> parse_value();
|
||||
RelationalOperatorType parse_relational_operator();
|
||||
LogicalOperatorType parse_logical_operator();
|
||||
|
||||
Reference in New Issue
Block a user