InnoDB Plugin
1.0
|
#include <ha_innodb.h>
Public Member Functions | |
ha_innobase (handlerton *hton, TABLE_SHARE *table_arg) | |
enum row_type | get_row_type () const |
const char * | table_type () const |
const char * | index_type (uint key_number) |
const char ** | bas_ext () const |
Table_flags | table_flags () const |
ulong | index_flags (uint idx, uint part, bool all_parts) const |
uint | max_supported_keys () const |
uint | max_supported_key_length () const |
uint | max_supported_key_part_length () const |
const key_map * | keys_to_use_for_scanning () |
int | open (const char *name, int mode, uint test_if_locked) |
handler * | clone (const char *name, MEM_ROOT *mem_root) |
int | close (void) |
double | scan_time () |
double | read_time (uint index, uint ranges, ha_rows rows) |
longlong | get_memory_buffer_size () const |
int | write_row (uchar *buf) |
int | update_row (const uchar *old_data, uchar *new_data) |
int | delete_row (const uchar *buf) |
bool | was_semi_consistent_read () |
void | try_semi_consistent_read (bool yes) |
void | unlock_row () |
int | index_init (uint index, bool sorted) |
int | index_end () |
int | index_read (uchar *buf, const uchar *key, uint key_len, enum ha_rkey_function find_flag) |
int | index_read_idx (uchar *buf, uint index, const uchar *key, uint key_len, enum ha_rkey_function find_flag) |
int | index_read_last (uchar *buf, const uchar *key, uint key_len) |
int | index_next (uchar *buf) |
int | index_next_same (uchar *buf, const uchar *key, uint keylen) |
int | index_prev (uchar *buf) |
int | index_first (uchar *buf) |
int | index_last (uchar *buf) |
int | rnd_init (bool scan) |
int | rnd_end () |
int | rnd_next (uchar *buf) |
int | rnd_pos (uchar *buf, uchar *pos) |
int | ft_init () |
void | ft_end () |
FT_INFO * | ft_init_ext (uint flags, uint inx, String *key) |
int | ft_read (uchar *buf) |
void | position (const uchar *record) |
int | info (uint) |
int | analyze (THD *thd, HA_CHECK_OPT *check_opt) |
int | optimize (THD *thd, HA_CHECK_OPT *check_opt) |
int | discard_or_import_tablespace (my_bool discard) |
int | extra (enum ha_extra_function operation) |
int | reset () |
int | external_lock (THD *thd, int lock_type) |
int | transactional_table_lock (THD *thd, int lock_type) |
int | start_stmt (THD *thd, thr_lock_type lock_type) |
void | position (uchar *record) |
ha_rows | records_in_range (uint inx, key_range *min_key, key_range *max_key) |
ha_rows | estimate_rows_upper_bound () |
void | update_create_info (HA_CREATE_INFO *create_info) |
int | parse_table_name (const char *name, HA_CREATE_INFO *create_info, ulint flags, ulint flags2, char *norm_name, char *temp_path, char *remote_path) |
int | create (const char *name, register TABLE *form, HA_CREATE_INFO *create_info) |
int | truncate () |
int | delete_table (const char *name) |
int | rename_table (const char *from, const char *to) |
int | check (THD *thd, HA_CHECK_OPT *check_opt) |
char * | update_table_comment (const char *comment) |
char * | get_foreign_key_create_info () |
int | get_foreign_key_list (THD *thd, List< FOREIGN_KEY_INFO > *f_key_list) |
int | get_parent_foreign_key_list (THD *thd, List< FOREIGN_KEY_INFO > *f_key_list) |
bool | can_switch_engines () |
uint | referenced_by_foreign_key () |
void | free_foreign_key_create_info (char *str) |
THR_LOCK_DATA ** | store_lock (THD *thd, THR_LOCK_DATA **to, enum thr_lock_type lock_type) |
void | init_table_handle_for_HANDLER () |
virtual void | get_auto_increment (ulonglong offset, ulonglong increment, ulonglong nb_desired_values, ulonglong *first_value, ulonglong *nb_reserved_values) |
int | reset_auto_increment (ulonglong value) |
virtual bool | get_error_message (int error, String *buf) |
virtual bool | get_foreign_dup_key (char *, uint, char *, uint) |
uint8 | table_cache_type () |
my_bool | register_query_cache_table (THD *thd, char *table_key, uint key_length, qc_engine_callback *call_back, ulonglong *engine_data) |
bool | primary_key_is_clustered () |
int | cmp_ref (const uchar *ref1, const uchar *ref2) |
bool | check_if_incompatible_data (HA_CREATE_INFO *info, uint table_changes) |
enum_alter_inplace_result | check_if_supported_inplace_alter (TABLE *altered_table, Alter_inplace_info *ha_alter_info) |
bool | prepare_inplace_alter_table (TABLE *altered_table, Alter_inplace_info *ha_alter_info) |
bool | inplace_alter_table (TABLE *altered_table, Alter_inplace_info *ha_alter_info) |
bool | commit_inplace_alter_table (TABLE *altered_table, Alter_inplace_info *ha_alter_info, bool commit) |
Static Public Member Functions | |
static const char * | get_mysql_bin_log_name () |
static ulonglong | get_mysql_bin_log_pos () |
Private Member Functions | |
uint | store_key_val_for_row (uint keynr, char *buff, uint buff_len, const uchar *record) |
void | update_thd (THD *thd) |
void | update_thd () |
int | change_active_index (uint keynr) |
int | general_fetch (uchar *buf, uint direction, uint match_mode) |
dberr_t | innobase_lock_autoinc () |
ulonglong | innobase_peek_autoinc () |
dberr_t | innobase_set_max_autoinc (ulonglong auto_inc) |
dberr_t | innobase_reset_autoinc (ulonglong auto_inc) |
dberr_t | innobase_get_autoinc (ulonglong *value) |
void | innobase_initialize_autoinc () |
dict_index_t * | innobase_get_index (uint keynr) |
void | build_template (bool whole_row) |
void | reset_template () |
int | info_low (uint, bool) |
Private Attributes | |
row_prebuilt_t * | prebuilt |
THD * | user_thd |
THR_LOCK_DATA | lock |
INNOBASE_SHARE * | share |
uchar * | upd_buf |
ulint | upd_buf_size |
Table_flags | int_table_flags |
uint | primary_key |
ulong | start_of_scan |
uint | last_match_mode |
uint | num_write_row |
Multi Range Read interface @{ | |
DsMrr_impl | ds_mrr |
int | multi_range_read_init (RANGE_SEQ_IF *seq, void *seq_init_param, uint n_ranges, uint mode, HANDLER_BUFFER *buf) |
int | multi_range_read_next (char **range_info) |
ha_rows | multi_range_read_info_const (uint keyno, RANGE_SEQ_IF *seq, void *seq_init_param, uint n_ranges, uint *bufsz, uint *flags, Cost_estimate *cost) |
ha_rows | multi_range_read_info (uint keyno, uint n_ranges, uint keys, uint *bufsz, uint *flags, Cost_estimate *cost) |
class Item * | idx_cond_push (uint keyno, class Item *idx_cond) |
The class defining a handle to an Innodb table
|
private |
Builds a 'template' to the prebuilt struct.
The template is used in fast retrieval of just those column values MySQL needs in its processing.
whole_row | true if access is needed to a whole row, false if accessing individual fields is enough |
enum_alter_inplace_result ha_innobase::check_if_supported_inplace_alter | ( | TABLE * | altered_table, |
Alter_inplace_info * | ha_alter_info | ||
) |
On-line ALTER TABLE interface
altered_table | TABLE object for new version of table. |
ha_alter_info | Structure describing changes to be done by ALTER TABLE and holding data used during in-place alter. |
HA_ALTER_INPLACE_NOT_SUPPORTED | Not supported |
HA_ALTER_INPLACE_NO_LOCK | Supported |
HA_ALTER_INPLACE_SHARED_LOCK_AFTER_PREPARE | Supported, but requires lock during main phase and exclusive lock during prepare phase. |
HA_ALTER_INPLACE_NO_LOCK_AFTER_PREPARE | Supported, prepare phase requires exclusive lock. |
bool ha_innobase::commit_inplace_alter_table | ( | TABLE * | altered_table, |
Alter_inplace_info * | ha_alter_info, | ||
bool | commit | ||
) |
Commit or rollback the changes made during
prepare_inplace_alter_table() and inplace_alter_table() inside the storage engine. Note that the allowed level of concurrency during this operation will be the same as for inplace_alter_table() and thus might be higher than during prepare_inplace_alter_table(). (E.g concurrent writes were blocked during prepare, but might not be during commit).
altered_table | TABLE object for new version of table. |
ha_alter_info | Structure describing changes to be done by ALTER TABLE and holding data used during in-place alter. |
commit | true => Commit, false => Rollback. |
true | Failure |
false | Success |
class Item* ha_innobase::idx_cond_push | ( | uint | keyno, |
class Item * | idx_cond | ||
) |
Attempt to push down an index condition.
[in] | keyno | MySQL key number |
[in] | idx_cond | Index condition to be checked |
bool ha_innobase::inplace_alter_table | ( | TABLE * | altered_table, |
Alter_inplace_info * | ha_alter_info | ||
) |
Alter the table structure in-place with operations
specified using HA_ALTER_FLAGS and Alter_inplace_information. The level of concurrency allowed during this operation depends on the return value from check_if_supported_inplace_alter().
altered_table | TABLE object for new version of table. |
ha_alter_info | Structure describing changes to be done by ALTER TABLE and holding data used during in-place alter. |
true | Failure |
false | Success |
ha_rows ha_innobase::multi_range_read_info | ( | uint | keyno, |
uint | n_ranges, | ||
uint | keys, | ||
uint * | bufsz, | ||
uint * | flags, | ||
Cost_estimate * | cost | ||
) |
Initialize multi range read and get information.
keyno | |
seq | |
seq_init_param | |
n_ranges | |
bufsz | |
flags | |
cost |
ha_rows ha_innobase::multi_range_read_info_const | ( | uint | keyno, |
RANGE_SEQ_IF * | seq, | ||
void * | seq_init_param, | ||
uint | n_ranges, | ||
uint * | bufsz, | ||
uint * | flags, | ||
Cost_estimate * | cost | ||
) |
Initialize multi range read and get information.
keyno | |
seq | |
seq_init_param | |
n_ranges | |
bufsz | |
flags | |
cost |
int ha_innobase::multi_range_read_init | ( | RANGE_SEQ_IF * | seq, |
void * | seq_init_param, | ||
uint | n_ranges, | ||
uint | mode, | ||
HANDLER_BUFFER * | buf | ||
) |
Initialize multi range read
seq | |
seq_init_param | |
n_ranges | |
mode | |
buf |
int ha_innobase::multi_range_read_next | ( | char ** | range_info | ) |
Process next multi range read
range_info |
bool ha_innobase::prepare_inplace_alter_table | ( | TABLE * | altered_table, |
Alter_inplace_info * | ha_alter_info | ||
) |
Allows InnoDB to update internal structures with concurrent
writes blocked (provided that check_if_supported_inplace_alter() did not return HA_ALTER_INPLACE_NO_LOCK). This will be invoked before inplace_alter_table().
altered_table | TABLE object for new version of table. |
ha_alter_info | Structure describing changes to be done by ALTER TABLE and holding data used during in-place alter. |
true | Failure |
false | Success |
|
inlineprivate |
Resets a query execution 'template'.
|
private |
The multi range read session object
|
private |
number of write_row() calls
|
private |
prebuilt struct in InnoDB, used to save CPU time with prebuilt data structures
|
private |
information for MySQL table locking
|
private |
this is set to 1 when we are starting a table scan but have not yet fetched any row, else 0
|
private |
buffer used in updates
|
private |
the size of upd_buf in bytes
|
private |
the thread handle of the user currently using the handle; this is set in external_lock function