20
20
#ifndef DRIZZLED_CURSOR_H
21
21
#define DRIZZLED_CURSOR_H
23
#include <drizzled/xid.h>
23
#include <drizzled/atomics.h>
24
#include <drizzled/definitions.h>
24
25
#include <drizzled/discrete_interval.h>
26
#include <drizzled/error_t.h>
27
#include <drizzled/ha_statistics.h>
28
#include <drizzled/handler_structs.h>
25
29
#include <drizzled/identifier.h>
26
#include <drizzled/definitions.h>
27
30
#include <drizzled/key_map.h>
29
/* Definitions for parameters to do with Cursor-routines */
31
#include <drizzled/message/table.h>
32
#include <drizzled/sql_list.h>
31
33
#include <drizzled/thr_lock.h>
32
#include <drizzled/sql_string.h>
33
#include <drizzled/sql_list.h>
34
#include <drizzled/plugin/storage_engine.h>
35
#include <drizzled/handler_structs.h>
36
#include <drizzled/ha_statistics.h>
37
#include <drizzled/atomics.h>
39
#include <drizzled/message/table.pb.h>
34
#include <drizzled/xid.h>
42
37
#include <algorithm>
39
#include <drizzled/visibility.h>
653
655
uint64_t setup_tables_done_option);
654
656
void free_underlaid_joins(Session *session, Select_Lex *select);
656
bool mysql_handle_derived(LEX *lex, bool (*processor)(Session *session,
658
bool handle_derived(LEX *lex, bool (*processor)(Session *session,
658
660
TableList *table));
659
bool mysql_derived_prepare(Session *session, LEX *lex, TableList *t);
660
bool mysql_derived_filling(Session *session, LEX *lex, TableList *t);
661
bool derived_prepare(Session *session, LEX *lex, TableList *t);
662
bool derived_filling(Session *session, LEX *lex, TableList *t);
661
663
int prepare_create_field(CreateField *sql_field,
662
664
uint32_t *blob_columns,
663
665
int *timestamps, int *timestamps_with_niladic);
665
bool mysql_create_table(Session *session,
666
TableIdentifier &identifier,
667
HA_CREATE_INFO *create_info,
668
message::Table &table_proto,
669
AlterInfo *alter_info,
670
bool tmp_table, uint32_t select_field_count,
671
bool is_if_not_exists);
673
bool mysql_create_table_no_lock(Session *session,
674
TableIdentifier &identifier,
675
HA_CREATE_INFO *create_info,
676
message::Table &table_proto,
677
AlterInfo *alter_info,
678
bool tmp_table, uint32_t select_field_count,
679
bool is_if_not_exists);
681
bool mysql_create_like_table(Session* session,
682
TableIdentifier &destination_identifier,
683
TableList* table, TableList* src_table,
684
message::Table &create_table_proto,
685
bool is_if_not_exists,
688
bool mysql_rename_table(Session &session,
667
bool create_table(Session *session,
668
const identifier::Table &identifier,
669
HA_CREATE_INFO *create_info,
670
message::Table &table_proto,
671
AlterInfo *alter_info,
672
bool tmp_table, uint32_t select_field_count,
673
bool is_if_not_exists);
675
bool create_table_no_lock(Session *session,
676
const identifier::Table &identifier,
677
HA_CREATE_INFO *create_info,
678
message::Table &table_proto,
679
AlterInfo *alter_info,
680
bool tmp_table, uint32_t select_field_count,
681
bool is_if_not_exists);
683
bool create_like_table(Session* session,
684
identifier::Table::const_reference destination_identifier,
685
identifier::Table::const_reference source_identifier,
686
message::Table &create_table_proto,
687
bool is_if_not_exists,
690
bool rename_table(Session &session,
689
691
plugin::StorageEngine *base,
690
TableIdentifier &old_identifier,
691
TableIdentifier &new_identifier);
692
const identifier::Table &old_identifier,
693
const identifier::Table &new_identifier);
693
bool mysql_prepare_update(Session *session, TableList *table_list,
694
Item **conds, uint32_t order_num, order_st *order);
695
int mysql_update(Session *session,TableList *tables,List<Item> &fields,
695
bool prepare_update(Session *session, TableList *table_list,
696
Item **conds, uint32_t order_num, Order *order);
697
int update_query(Session *session,TableList *tables,List<Item> &fields,
696
698
List<Item> &values,COND *conds,
697
uint32_t order_num, order_st *order, ha_rows limit,
699
uint32_t order_num, Order *order, ha_rows limit,
698
700
enum enum_duplicates handle_duplicates, bool ignore);
699
bool mysql_prepare_insert(Session *session, TableList *table_list, Table *table,
701
bool prepare_insert(Session *session, TableList *table_list, Table *table,
700
702
List<Item> &fields, List_item *values,
701
703
List<Item> &update_fields,
702
704
List<Item> &update_values, enum_duplicates duplic,
703
705
COND **where, bool select_insert,
704
706
bool check_fields, bool abort_on_warning);
705
bool mysql_insert(Session *session,TableList *table,List<Item> &fields,
707
bool insert_query(Session *session,TableList *table,List<Item> &fields,
706
708
List<List_item> &values, List<Item> &update_fields,
707
709
List<Item> &update_values, enum_duplicates flag,
709
711
int check_that_all_fields_are_given_values(Session *session, Table *entry,
710
712
TableList *table_list);
711
int mysql_prepare_delete(Session *session, TableList *table_list, Item **conds);
712
bool mysql_delete(Session *session, TableList *table_list, COND *conds,
713
int prepare_delete(Session *session, TableList *table_list, Item **conds);
714
bool delete_query(Session *session, TableList *table_list, COND *conds,
713
715
SQL_LIST *order, ha_rows rows, uint64_t options,
714
716
bool reset_auto_increment);
715
bool mysql_truncate(Session& session, TableList *table_list);
717
bool truncate(Session& session, TableList *table_list);
716
718
TableShare *get_table_share(Session *session, TableList *table_list, char *key,
717
719
uint32_t key_length, uint32_t db_flags, int *error);
718
720
TableShare *get_cached_table_share(const char *db, const char *table_name);