indexes WIP
This commit is contained in:
42
usql.h
42
usql.h
@@ -20,19 +20,19 @@ public:
|
||||
private:
|
||||
std::unique_ptr<Table> execute(Node &node);
|
||||
|
||||
std::unique_ptr<Table> execute_create_table(CreateTableNode &node);
|
||||
std::unique_ptr<Table> execute_create_index(CreateIndexNode &node);
|
||||
std::unique_ptr<Table> execute_create_table_as_table(CreateTableAsSelectNode &node);
|
||||
std::unique_ptr<Table> execute_load(LoadIntoTableNode &node);
|
||||
std::unique_ptr<Table> execute_save(SaveTableNode &node);
|
||||
std::unique_ptr<Table> execute_drop(DropTableNode &node);
|
||||
static std::unique_ptr<Table> execute_set(SetNode &node);
|
||||
static std::unique_ptr<Table> execute_show(ShowNode &node);
|
||||
std::unique_ptr<Table> execute_create_table(const CreateTableNode &node);
|
||||
std::unique_ptr<Table> execute_create_index(const CreateIndexNode &node);
|
||||
std::unique_ptr<Table> execute_create_table_as_table(const CreateTableAsSelectNode &node);
|
||||
std::unique_ptr<Table> execute_load(const LoadIntoTableNode &node);
|
||||
std::unique_ptr<Table> execute_save(const SaveTableNode &node);
|
||||
std::unique_ptr<Table> execute_drop(const DropTableNode &node);
|
||||
static std::unique_ptr<Table> execute_set(const SetNode &node);
|
||||
static std::unique_ptr<Table> execute_show(const ShowNode &node);
|
||||
|
||||
std::unique_ptr<Table> execute_insert_into_table(InsertIntoTableNode &node);
|
||||
std::unique_ptr<Table> execute_insert_into_table(const InsertIntoTableNode &node);
|
||||
std::unique_ptr<Table> execute_select(SelectFromTableNode &node) const;
|
||||
std::unique_ptr<Table> execute_delete(DeleteFromTableNode &node);
|
||||
std::unique_ptr<Table> execute_update(UpdateTableNode &node);
|
||||
std::unique_ptr<Table> execute_delete(const DeleteFromTableNode &node);
|
||||
std::unique_ptr<Table> execute_update(const UpdateTableNode &node);
|
||||
|
||||
|
||||
private:
|
||||
@@ -56,13 +56,14 @@ private:
|
||||
[[nodiscard]] Table *find_table(const std::string &name) const;
|
||||
|
||||
void check_table_not_exists(const std::string &name) const;
|
||||
void check_index_not_exists(const std::string &index_name);
|
||||
|
||||
private:
|
||||
Parser m_parser;
|
||||
std::list<Table> m_tables;
|
||||
|
||||
static void execute_distinct(SelectFromTableNode &node, Table *result);
|
||||
static void execute_order_by(SelectFromTableNode &node, Table *table, Table *result);
|
||||
static void execute_order_by(SelectFromTableNode &node, Table *result);
|
||||
static void execute_offset_limit(OffsetLimitNode &node, Table *result);
|
||||
|
||||
static void expand_asterix_char(SelectFromTableNode &node, Table *table) ;
|
||||
@@ -82,15 +83,18 @@ private:
|
||||
|
||||
static std::unique_ptr<ValueNode> count_function(ColValue *agg_func_value, const std::vector<std::unique_ptr<ValueNode>> &evaluatedPars);
|
||||
|
||||
static void evalRowWhere(SelectFromTableNode &where_node,
|
||||
Table *src_table, Row *src_row,
|
||||
Table *rslt_table, Row *rslt_row,
|
||||
const std::vector<ColDefNode> &rslt_tbl_col_defs, const std::vector<int> &src_table_col_index,
|
||||
bool is_aggregated) ;
|
||||
static void eval_where_on_row(SelectFromTableNode &where_node,
|
||||
Table *src_table, Row *src_row,
|
||||
Table *rslt_table, Row *rslt_row,
|
||||
const std::vector<ColDefNode> &rslt_tbl_col_defs, const std::vector<int> &src_table_col_index,
|
||||
bool is_aggregated) ;
|
||||
|
||||
std::pair<bool, std::vector<int>> probe_index_scan(const Node *where, Table *table) const;
|
||||
std::pair<bool, std::vector<int>> look_for_usable_index(const Node *where, Table *table) const;
|
||||
std::pair<bool, std::vector<rowid_t>> probe_index_scan(const Node *where, Table *table) const;
|
||||
std::pair<bool, std::vector<rowid_t>> look_for_usable_index(const Node *where, Table *table) const;
|
||||
bool normalize_where(const Node *node) const;
|
||||
|
||||
Table::rows_scanner get_iterator(Table *table, const Node *where) const;
|
||||
};
|
||||
|
||||
|
||||
} // namespace
|
||||
Reference in New Issue
Block a user