![]() |
MySQL 9.1.0
Source Code Documentation
|
The class defining a partitioning aware handle to an InnoDB table. More...
#include <ha_innopart.h>
Classes | |
struct | saved_prebuilt_t |
Public Types | |
using | Reader = Parallel_reader_adapter |
![]() | |
using | Reader = Parallel_reader_adapter |
![]() | |
enum | enum_range_scan_direction { RANGE_SCAN_ASC , RANGE_SCAN_DESC } |
enum | { NONE = 0 , INDEX , RND , SAMPLING } |
typedef ulonglong | Table_flags |
using | Blob_context = void * |
using | Load_init_cbk = std::function< bool(void *cookie, ulong ncols, ulong row_len, const ulong *col_offsets, const ulong *null_byte_offsets, const ulong *null_bitmasks)> |
This callback is called by each parallel load thread at the beginning of the parallel load for the adapter scan. More... | |
using | Load_cbk = std::function< bool(void *cookie, uint nrows, void *rowdata, uint64_t partition_id)> |
This callback is called by each parallel load thread when processing of rows is required for the adapter scan. More... | |
using | Load_end_cbk = std::function< void(void *cookie)> |
This callback is called by each parallel load thread when processing of rows has ended for the adapter scan. More... | |
typedef void(* | my_gcolumn_template_callback_t) (const TABLE *, void *) |
Callback function that will be called by my_prepare_gcolumn_template once the table has been opened. More... | |
Public Member Functions | |
ha_innopart (handlerton *hton, TABLE_SHARE *table_arg) | |
Construct ha_innopart handler. More... | |
~ha_innopart () override=default | |
handler * | clone (const char *name, MEM_ROOT *mem_root) override |
Clone this handler, used when needing more than one cursor to the same table. More... | |
enum_alter_inplace_result | check_if_supported_inplace_alter (TABLE *altered_table, Alter_inplace_info *ha_alter_info) override |
Check if InnoDB supports a particular alter table in-place. More... | |
bool | prepare_inplace_alter_table (TABLE *altered_table, Alter_inplace_info *ha_alter_info, const dd::Table *old_table_def, dd::Table *new_table_def) override |
Prepare in-place ALTER for table. More... | |
bool | inplace_alter_table (TABLE *altered_table, Alter_inplace_info *ha_alter_info, const dd::Table *old_table_def, dd::Table *new_table_def) override |
Alter the table structure in-place. More... | |
bool | commit_inplace_alter_table (TABLE *altered_table, Alter_inplace_info *ha_alter_info, bool commit, const dd::Table *old_table_def, dd::Table *new_table_def) override |
Commit or rollback. More... | |
bool | prepare_inplace_alter_partition (TABLE *altered_table, Alter_inplace_info *ha_alter_info, const dd::Table *old_dd_tab, dd::Table *new_dd_tab) |
Allows InnoDB to update internal structures with concurrent writes blocked (given that check_if_supported_inplace_alter() did not return HA_ALTER_INPLACE_NO_LOCK). More... | |
bool | inplace_alter_partition (Alter_inplace_info *ha_alter_info) |
Alter the table structure in-place with operations specified using HA_ALTER_FLAGS and Alter_inplace_information. More... | |
bool | commit_inplace_alter_partition (TABLE *altered_table, Alter_inplace_info *ha_alter_info, bool commit, const dd::Table *old_dd_tab, dd::Table *new_dd_tab) |
Prepare to commit or roll back ALTER TABLE...ALGORITHM=INPLACE. More... | |
int | optimize (THD *thd, HA_CHECK_OPT *check_opt) override |
Optimize table. More... | |
int | set_dd_discard_attribute (dd::Table *table_def, bool discard) |
Set DD discard attribute for tablespace. More... | |
int | discard_or_import_tablespace (bool discard, dd::Table *table_def) override |
Discards or imports an InnoDB tablespace. More... | |
int | extra (enum ha_extra_function operation) override |
Extra hints from MySQL. More... | |
void | print_error (int error, myf errflag) override |
Print error information. More... | |
bool | is_ignorable_error (int error) override |
Can error be ignored. More... | |
int | start_stmt (THD *thd, thr_lock_type lock_type) override |
Start statement. More... | |
ha_rows | records_in_range (uint inx, key_range *min_key, key_range *max_key) override |
Estimates the number of index records in a range. More... | |
ha_rows | estimate_rows_upper_bound () override |
Gives an UPPER BOUND to the number of rows in a table. More... | |
uint | alter_table_flags (uint flags) |
void | update_create_info (HA_CREATE_INFO *create_info) override |
Update create_info. More... | |
int | create (const char *name, TABLE *form, HA_CREATE_INFO *create_info, dd::Table *table_def) override |
Creates a new table to an InnoDB database. More... | |
int | delete_table (const char *name, const dd::Table *dd_table) override |
Drop a table. More... | |
int | rename_table (const char *from, const char *to, const dd::Table *from_table, dd::Table *to_table) override |
Rename a table. More... | |
int | check (THD *thd, HA_CHECK_OPT *check_opt) override |
Checks a partitioned table. More... | |
int | repair (THD *thd, HA_CHECK_OPT *repair_opt) override |
Repair a partitioned table. More... | |
void | get_auto_increment (ulonglong offset, ulonglong increment, ulonglong nb_desired_values, ulonglong *first_value, ulonglong *nb_reserved_values) override |
Get the current auto_increment value. More... | |
enum row_type | get_partition_row_type (const dd::Table *partition_table, uint part_id) override |
Get partition row type from SE. More... | |
int | cmp_ref (const uchar *ref1, const uchar *ref2) const override |
Compares two 'refs'. More... | |
int | read_range_first (const key_range *start_key, const key_range *end_key, bool eq_range_arg, bool sorted) override |
Read first row between two ranges. More... | |
void | position (const uchar *record) override |
Store a reference to the current row to 'ref' field of the handle. More... | |
bool | check_if_incompatible_data (HA_CREATE_INFO *info, uint table_changes) override |
Part of old, deprecated in-place ALTER API. More... | |
int | delete_all_rows () override |
Delete all rows from the table. More... | |
int | disable_indexes (uint mode) override |
Disable indexes. More... | |
int | enable_indexes (uint mode) override |
Enable indexes. More... | |
int | ft_init () override |
Initialize FT index scan. More... | |
FT_INFO * | ft_init_ext (uint flags, uint inx, String *key) override |
Initialize FT index scan. More... | |
FT_INFO * | ft_init_ext_with_hints (uint inx, String *key, Ft_hints *hints) override |
Initialize FT index scan. More... | |
int | ft_read (uchar *buf) override |
Fetch next result from the FT result set. More... | |
bool | get_foreign_dup_key (char *child_table_name, uint child_table_name_len, char *child_key_name, uint child_key_name_len) override |
Retrieves the names of the table and the key for which there was a duplicate entry in the case of HA_ERR_FOREIGN_DUPLICATE_KEY. More... | |
int | read_range_next () override |
Read next row between two endpoints. More... | |
uint32_t | calculate_key_hash_value (Field **field_array) override |
Table_flags | table_flags () const override |
Get the table flags to use for the statement. More... | |
void | release_auto_increment () override |
Do cleanup for auto increment calculation. More... | |
int | parallel_scan_init (void *&scan_ctx, size_t *num_threads, bool use_reserved_threads, size_t max_desired_threads) override |
Get number of threads that would be spawned for parallel read. More... | |
int | parallel_scan (void *scan_ctx, void **thread_ctxs, Reader::Init_fn init_fn, Reader::Load_fn load_fn, Reader::End_fn end_fn) override |
Start parallel read of data. More... | |
void | parallel_scan_end (void *parallel_scan_ctx) override |
Run the parallel read of data. More... | |
void | get_dynamic_partition_info (ha_statistics *stat_info, ha_checksum *check_sum, uint part_id) override |
Implementing Partition_handler interface. More... | |
uint | alter_flags (uint flags) const override |
Alter flags. More... | |
Partition_handler * | get_partition_handler () override |
void | set_part_info (partition_info *part_info, bool early) override |
Set the partition info object to be used by the handler. More... | |
void | initialize_partitioning (partition_info *part_info, bool early) |
handler * | get_handler () override |
Return the table handler. More... | |
![]() | |
ha_innobase (handlerton *hton, TABLE_SHARE *table_arg) | |
Construct ha_innobase handler. More... | |
~ha_innobase () override=default | |
row_type | get_real_row_type (const HA_CREATE_INFO *create_info) const override |
Get real row type for the table created based on one specified by user, CREATE TABLE options and SE capabilities. More... | |
const char * | table_type () const override |
Returns the table type (storage engine name). More... | |
enum ha_key_alg | get_default_index_algorithm () const override |
Get default key algorithm for SE. More... | |
bool | is_index_algorithm_supported (enum ha_key_alg key_alg) const override |
Check if SE supports specific key algorithm. More... | |
ulong | index_flags (uint idx, uint part, bool all_parts) const override |
Returns the operations supported for indexes. More... | |
uint | max_supported_keys () const override |
Returns the maximum number of keys. More... | |
uint | max_supported_key_length () const override |
Returns the maximum key length. More... | |
uint | max_supported_key_part_length (HA_CREATE_INFO *create_info) const override |
double | read_time (uint index, uint ranges, ha_rows rows) override |
Calculate the time it takes to read a set of ranges through an index This enables us to optimise reads for clustered indexes. More... | |
longlong | get_memory_buffer_size () const override |
Return the size of the InnoDB memory buffer. More... | |
int | index_read (uchar *buf, const uchar *key, uint key_len, ha_rkey_function find_flag) override |
Positions an index cursor to the index specified in the handle. More... | |
int | index_read_last (uchar *buf, const uchar *key, uint key_len) override |
The following functions works like index_read, but it find the last row with the current key value or prefix. More... | |
void | ft_end () |
int | info (uint) override |
Returns statistics information of the table to the MySQL interpreter, in various fields of the handle object. More... | |
int | analyze (THD *thd, HA_CHECK_OPT *check_opt) override |
Updates index cardinalities of the table, based on random dives into each index tree. More... | |
void | position (uchar *record) |
bool | get_se_private_data (dd::Table *dd_table, bool reset) override |
Get storage-engine private data for a data dictionary table. More... | |
int | get_extra_columns_and_keys (const HA_CREATE_INFO *, const List< Create_field > *, const KEY *, uint, dd::Table *dd_table) override |
Add hidden columns and indexes to an InnoDB table definition. More... | |
bool | upgrade_table (THD *thd, const char *db_name, const char *table_name, dd::Table *dd_table) override |
Set Engine specific data to dd::Table object for upgrade. More... | |
uint | lock_count (void) const override |
Returns number of THR_LOCK locks used for one instance of InnoDB table. More... | |
void | init_table_handle_for_HANDLER () override |
Call this when you have opened a new table handle in HANDLER, before you call index_read_map() etc. More... | |
bool | get_error_message (int error, String *buf) override |
See comment in handler.cc. More... | |
bool | primary_key_is_clustered () const override |
Determines if the primary key is clustered index. More... | |
bool | bulk_load_check (THD *thd) const override |
Check if the table is ready for bulk load. More... | |
size_t | bulk_load_available_memory (THD *thd) const override |
Get the total memory available for bulk load in innodb buffer pool. More... | |
void * | bulk_load_begin (THD *thd, size_t data_size, size_t memory, size_t num_threads) override |
Begin parallel bulk data load to the table. More... | |
int | bulk_load_execute (THD *thd, void *load_ctx, size_t thread_idx, const Rows_mysql &rows, Bulk_load::Stat_callbacks &wait_cbk) override |
Execute bulk load operation. More... | |
int | open_blob (THD *thd, void *load_ctx, size_t thread_idx, Blob_context &blob_ctx, unsigned char *blobref) override |
Open a blob for write operation. More... | |
int | write_blob (THD *thd, void *load_ctx, size_t thread_idx, Blob_context blob_ctx, unsigned char *blobref, const unsigned char *data, size_t data_len) override |
Write to a blob. More... | |
int | close_blob (THD *thd, void *load_ctx, size_t thread_idx, Blob_context blob_ctx, byte *blobref) override |
Close the blob. More... | |
int | bulk_load_end (THD *thd, void *load_ctx, bool is_error) override |
End bulk load operation. More... | |
![]() | |
void | unbind_psi () |
void | rebind_psi () |
void | start_psi_batch_mode () |
Put the handler in 'batch' mode when collecting table io instrumented events. More... | |
void | end_psi_batch_mode () |
End a batch started with start_psi_batch_mode . More... | |
bool | end_psi_batch_mode_if_started () |
If a PSI batch was started, turn if off. More... | |
handler (handlerton *ht_arg, TABLE_SHARE *share_arg) | |
virtual | ~handler (void) |
virtual std::string | explain_extra () const |
Return extra handler specific text for EXPLAIN. More... | |
void | init () |
This is called after create to allow us to set up cached variables. More... | |
void | ha_set_record_buffer (Record_buffer *buffer) |
Set a record buffer that the storage engine can use for multi-row reads. More... | |
Record_buffer * | ha_get_record_buffer () const |
Get the record buffer that was set with ha_set_record_buffer(). More... | |
bool | ha_is_record_buffer_wanted (ha_rows *const max_rows) const |
Does this handler want to get a Record_buffer for multi-row reads via the ha_set_record_buffer() function? And if so, what is the maximum number of records to allocate space for in the buffer? More... | |
int | ha_open (TABLE *table, const char *name, int mode, int test_if_locked, const dd::Table *table_def) |
int | ha_close (void) |
Close handler. More... | |
int | ha_index_init (uint idx, bool sorted) |
Initialize use of index. More... | |
int | ha_index_end () |
End use of index. More... | |
int | ha_rnd_init (bool scan) |
Initialize table for random read or scan. More... | |
int | ha_rnd_end () |
End use of random access. More... | |
int | ha_rnd_next (uchar *buf) |
Read next row via random scan. More... | |
int | ha_rnd_pos (uchar *buf, uchar *pos) |
Read row via random scan from position. More... | |
int | ha_index_read_map (uchar *buf, const uchar *key, key_part_map keypart_map, enum ha_rkey_function find_flag) |
Read [part of] row via [part of] index. More... | |
int | ha_index_read_last_map (uchar *buf, const uchar *key, key_part_map keypart_map) |
int | ha_index_read_idx_map (uchar *buf, uint index, const uchar *key, key_part_map keypart_map, enum ha_rkey_function find_flag) |
Initializes an index and read it. More... | |
int | ha_index_next (uchar *buf) |
Reads the next row via index. More... | |
int | ha_index_prev (uchar *buf) |
Reads the previous row via index. More... | |
int | ha_index_first (uchar *buf) |
Reads the first row via index. More... | |
int | ha_index_last (uchar *buf) |
Reads the last row via index. More... | |
int | ha_index_next_same (uchar *buf, const uchar *key, uint keylen) |
Reads the next same row via index. More... | |
int | ha_reset () |
Check handler usage and reset state of file to after 'open'. More... | |
int | ha_index_or_rnd_end () |
Table_flags | ha_table_flags () const |
The cached_table_flags is set at ha_open and ha_external_lock. More... | |
int | ha_external_lock (THD *thd, int lock_type) |
These functions represent the public interface to users of the handler class, hence they are not virtual. More... | |
int | ha_write_row (uchar *buf) |
int | ha_update_row (const uchar *old_data, uchar *new_data) |
Update the current row. More... | |
int | ha_delete_row (const uchar *buf) |
void | ha_release_auto_increment () |
int | ha_check_for_upgrade (HA_CHECK_OPT *check_opt) |
int | ha_check (THD *thd, HA_CHECK_OPT *check_opt) |
to be actually called to get 'check()' functionality More... | |
int | ha_repair (THD *thd, HA_CHECK_OPT *check_opt) |
Repair table: public interface. More... | |
void | ha_start_bulk_insert (ha_rows rows) |
Start bulk insert. More... | |
int | ha_end_bulk_insert () |
End bulk insert. More... | |
int | ha_bulk_update_row (const uchar *old_data, uchar *new_data, uint *dup_key_found) |
Bulk update row: public interface. More... | |
int | ha_delete_all_rows () |
Delete all rows: public interface. More... | |
int | ha_truncate (dd::Table *table_def) |
Truncate table: public interface. More... | |
int | ha_optimize (THD *thd, HA_CHECK_OPT *check_opt) |
Optimize table: public interface. More... | |
int | ha_analyze (THD *thd, HA_CHECK_OPT *check_opt) |
Analyze table: public interface. More... | |
bool | ha_check_and_repair (THD *thd) |
Check and repair table: public interface. More... | |
int | ha_disable_indexes (uint mode) |
Disable indexes: public interface. More... | |
int | ha_enable_indexes (uint mode) |
Enable indexes: public interface. More... | |
int | ha_discard_or_import_tablespace (bool discard, dd::Table *table_def) |
Discard or import tablespace: public interface. More... | |
int | ha_rename_table (const char *from, const char *to, const dd::Table *from_table_def, dd::Table *to_table_def) |
Rename table: public interface. More... | |
int | ha_delete_table (const char *name, const dd::Table *table_def) |
Delete table: public interface. More... | |
void | ha_drop_table (const char *name) |
Drop table in the engine: public interface. More... | |
int | ha_create (const char *name, TABLE *form, HA_CREATE_INFO *info, dd::Table *table_def) |
Create a table in the engine: public interface. More... | |
int | ha_load_table (const TABLE &table, bool *skip_metadata_update) |
Loads a table into its defined secondary storage engine: public interface. More... | |
int | ha_unload_table (const char *db_name, const char *table_name, bool error_if_not_loaded) |
Unloads a table from its defined secondary storage engine: public interface. More... | |
bool | ha_get_se_private_data (dd::Table *dd_table, bool reset) |
Submit a dd::Table object representing a core DD table having hardcoded data to be filled in by the DDSE. More... | |
void | adjust_next_insert_id_after_explicit_value (ulonglong nr) |
int | update_auto_increment () |
uint | get_dup_key (int error) |
virtual void | change_table_ptr (TABLE *table_arg, TABLE_SHARE *share) |
Change the internal TABLE_SHARE pointer. More... | |
const TABLE_SHARE * | get_table_share () const |
const TABLE * | get_table () const |
virtual double | index_only_read_time (uint keynr, double records) |
Calculate cost of 'index only' scan for given index and number of records. More... | |
virtual Cost_estimate | table_scan_cost () |
Cost estimate for doing a complete table scan. More... | |
virtual Cost_estimate | index_scan_cost (uint index, double ranges, double rows) |
Cost estimate for reading a number of ranges from an index. More... | |
virtual Cost_estimate | read_cost (uint index, double ranges, double rows) |
Cost estimate for reading a set of ranges from the table using an index to access it. More... | |
virtual double | page_read_cost (uint index, double reads) |
Cost estimate for doing a number of non-sequentially accesses against the storage engine. More... | |
virtual double | worst_seek_times (double reads) |
Provide an upper cost-limit of doing a specified number of seek-and-read key lookups. More... | |
double | table_in_memory_estimate () const |
Return an estimate of how much of the table that is currently stored in main memory. More... | |
double | index_in_memory_estimate (uint keyno) const |
Return an estimate of how much of the index that is currently stored in main memory. More... | |
int | ha_sample_init (void *&scan_ctx, double sampling_percentage, int sampling_seed, enum_sampling_method sampling_method, const bool tablesample) |
Initialize sampling. More... | |
int | ha_sample_next (void *scan_ctx, uchar *buf) |
Get the next record for sampling. More... | |
int | ha_sample_end (void *scan_ctx) |
End sampling. More... | |
int | ha_multi_range_read_next (char **range_info) |
int | ha_read_range_first (const key_range *start_key, const key_range *end_key, bool eq_range, bool sorted) |
int | ha_read_range_next () |
bool | has_transactions () |
virtual uint | extra_rec_buf_length () const |
virtual bool | is_fatal_error (int error) |
Determine whether an error is fatal or not. More... | |
int | ha_records (ha_rows *num_rows) |
Wrapper function to call records() in storage engine. More... | |
int | ha_records (ha_rows *num_rows, uint index) |
Wrapper function to call records_from_index() in storage engine. More... | |
virtual void | column_bitmaps_signal () |
Signal that the table->read_set and table->write_set table maps changed The handler is allowed to set additional bits in the above map in this call. More... | |
uint | get_index (void) const |
virtual bool | start_bulk_update () |
virtual bool | start_bulk_delete () |
virtual int | exec_bulk_update (uint *dup_key_found) |
After this call all outstanding updates must be performed. More... | |
virtual void | end_bulk_update () |
Perform any needed clean-up, no outstanding updates are there at the moment. More... | |
virtual int | end_bulk_delete () |
Execute all outstanding deletes and close down the bulk delete. More... | |
void | set_end_range (const key_range *range, enum_range_scan_direction direction) |
Set the end position for a range scan. More... | |
int | compare_key (key_range *range) |
Compare if found key (in row) is over max-value. More... | |
int | compare_key_icp (const key_range *range) const |
int | compare_key_in_buffer (const uchar *buf) const |
Check if the key in the given buffer (which is not necessarily TABLE::record[0]) is within range. More... | |
int | ha_ft_read (uchar *buf) |
int | ha_read_first_row (uchar *buf, uint primary_key) |
Read first row (only) from a table. More... | |
int | ha_extra (enum ha_extra_function operation) |
Request storage engine to do an extra operation: enable,disable or run some functionality. More... | |
virtual int | extra_opt (enum ha_extra_function operation, ulong cache_size) |
virtual const handlerton * | hton_supporting_engine_pushdown () |
Get the handlerton of the storage engine if the SE is capable of pushing down some of the AccessPath functionality. More... | |
virtual bool | start_read_removal (void) |
Start read (before write) removal on the current table. More... | |
virtual ha_rows | end_read_removal (void) |
End read (before write) removal and return the number of rows really written. More... | |
void | set_next_insert_id (ulonglong id) |
void | restore_auto_increment (ulonglong prev_insert_id) |
virtual int | assign_to_keycache (THD *, HA_CHECK_OPT *) |
virtual int | preload_keys (THD *, HA_CHECK_OPT *) |
virtual int | indexes_are_disabled (void) |
Check if indexes are disabled. More... | |
virtual void | append_create_info (String *packet) |
uint | max_record_length () const |
uint | max_keys () const |
uint | max_key_parts () const |
uint | max_key_length () const |
uint | max_key_part_length (HA_CREATE_INFO *create_info) const |
virtual uint | max_supported_record_length () const |
virtual uint | max_supported_key_parts () const |
virtual uint | min_record_length (uint options) const |
virtual bool | low_byte_first () const |
virtual ha_checksum | checksum () const |
virtual bool | is_crashed () const |
Check if the table is crashed. More... | |
virtual bool | auto_repair () const |
Check if the table can be automatically repaired. More... | |
virtual const Item * | cond_push (const Item *cond) |
Push condition down to the table handler. More... | |
virtual void | cancel_pushed_idx_cond () |
Reset information about pushed index conditions. More... | |
virtual uint | number_of_pushed_joins () const |
Reports number of tables included in pushed join which this handler instance is part of. More... | |
virtual const TABLE * | member_of_pushed_join () const |
If this handler instance is part of a pushed join sequence returned TABLE instance being root of the pushed query? More... | |
virtual const TABLE * | parent_of_pushed_join () const |
If this handler instance is a child in a pushed join sequence returned TABLE instance being my parent? More... | |
virtual table_map | tables_in_pushed_join () const |
int | ha_index_read_pushed (uchar *buf, const uchar *key, key_part_map keypart_map) |
int | ha_index_next_pushed (uchar *buf) |
bool | ha_prepare_inplace_alter_table (TABLE *altered_table, Alter_inplace_info *ha_alter_info, const dd::Table *old_table_def, dd::Table *new_table_def) |
Public functions wrapping the actual handler call. More... | |
bool | ha_inplace_alter_table (TABLE *altered_table, Alter_inplace_info *ha_alter_info, const dd::Table *old_table_def, dd::Table *new_table_def) |
Public function wrapping the actual handler call. More... | |
bool | ha_commit_inplace_alter_table (TABLE *altered_table, Alter_inplace_info *ha_alter_info, bool commit, const dd::Table *old_table_def, dd::Table *new_table_def) |
Public function wrapping the actual handler call. More... | |
void | ha_notify_table_changed (Alter_inplace_info *ha_alter_info) |
Public function wrapping the actual handler call. More... | |
virtual void | use_hidden_primary_key () |
use_hidden_primary_key() is called in case of an update/delete when (table_flags() and HA_PRIMARY_KEY_REQUIRED_FOR_DELETE) is defined but we don't have a primary key More... | |
virtual int | bulk_update_row (const uchar *old_data, uchar *new_data, uint *dup_key_found) |
This method is similar to update_row, however the handler doesn't need to execute the updates at this point in time. More... | |
virtual int | truncate (dd::Table *table_def) |
Quickly remove all rows from a table. More... | |
virtual bool | check_and_repair (THD *thd) |
Check and repair the table if necessary. More... | |
virtual void | drop_table (const char *name) |
virtual bool | set_ha_share_ref (Handler_share **arg_ha_share) |
void | set_ha_table (TABLE *table_arg) |
int | get_lock_type () const |
bool | ha_upgrade_table (THD *thd, const char *dbname, const char *table_name, dd::Table *dd_table, TABLE *table_arg) |
Set se_private_id and se_private_data during upgrade. More... | |
void | ha_set_primary_handler (handler *primary_handler) |
Store a pointer to the handler of the primary table that corresponds to the secondary table in this handler. More... | |
handler * | ha_get_primary_handler () const |
Get a pointer to a handler for the table in the primary storage engine, if this handler is for a table in a secondary storage engine. More... | |
void | ha_mv_key_capacity (uint *num_keys, size_t *keys_length) const |
Return max limits for a single set of multi-valued keys. More... | |
virtual void | set_external_table_offload_error (const char *) |
Propagates the secondary storage engine offload failure reason for a query to the external engine when the offloaded query fails in the secondary storage engine. More... | |
virtual void | external_table_offload_error () const |
Identifies and throws the propagated external engine query offload or exec failure reason given by the external engine handler. More... | |
![]() | |
Partition_helper (handler *main_handler) | |
virtual | ~Partition_helper () |
virtual void | set_part_info_low (partition_info *part_info, bool early) |
Set partition info. More... | |
bool | init_partitioning (MEM_ROOT *mem_root) |
Initialize variables used before the table is opened. More... | |
void | ph_release_auto_increment () |
Release unused auto increment values. More... | |
int | ph_write_row (uchar *buf) |
INSERT/UPDATE/DELETE functions. More... | |
int | ph_update_row (const uchar *old_data, uchar *new_data) |
Update an existing row in the partitioned table. More... | |
int | ph_delete_row (const uchar *buf) |
Delete an existing row in the partitioned table. More... | |
int | ph_rnd_init (bool scan) |
MODULE full table scan. More... | |
int | ph_rnd_end () |
End of a table scan. More... | |
int | ph_rnd_next (uchar *buf) |
Read next row during full table scan (scan in random row order). More... | |
void | ph_position (const uchar *record) |
Save position of current row. More... | |
int | ph_index_init_setup (uint key_nr, bool sorted) |
MODULE index scan. More... | |
int | ph_index_first (uchar *buf) |
Start an index scan from leftmost record and return first record. More... | |
int | ph_index_last (uchar *buf) |
Start an index scan from rightmost record and return first record. More... | |
int | ph_index_next (uchar *buf) |
Read next record in a forward index scan. More... | |
int | ph_index_next_same (uchar *buf, uint keylen) |
Read next same record. More... | |
int | ph_index_prev (uchar *buf) |
Read next record when performing index scan backwards. More... | |
int | ph_index_read_map (uchar *buf, const uchar *key, key_part_map keypart_map, enum ha_rkey_function find_flag) |
Read one record in an index scan and start an index scan. More... | |
int | ph_index_read_last_map (uchar *buf, const uchar *key, key_part_map keypart_map) |
Read last using key. More... | |
int | ph_index_read_idx_map (uchar *buf, uint index, const uchar *key, key_part_map keypart_map, enum ha_rkey_function find_flag) |
Read index by key and keymap. More... | |
int | ph_read_range_first (const key_range *start_key, const key_range *end_key, bool eq_range_arg, bool sorted) |
Start a read of one range with start and end key. More... | |
int | ph_read_range_next () |
Read next record in read of a range with start and end key. More... | |
virtual void | get_dynamic_partition_info_low (ha_statistics *stat_info, ha_checksum *check_sum, uint part_id) |
Functions matching Partition_handler API. More... | |
void | prepare_change_partitions () |
Prepare for reorganizing partitions by setting up partition_info::read_partitions according to the partition_info mark-up. More... | |
![]() | |
Partition_handler ()=default | |
virtual | ~Partition_handler ()=default |
virtual int | get_default_num_partitions (HA_CREATE_INFO *info) |
Get default number of partitions. More... | |
virtual void | set_auto_partitions (partition_info *part_info) |
Setup auto partitioning. More... | |
virtual bool | get_num_parts (const char *name, uint *num_parts) |
Get number of partitions for table in SE. More... | |
int | truncate_partition (dd::Table *table_def) |
Truncate partitions. More... | |
int | exchange_partition (uint part_id, dd::Table *part_table_def, dd::Table *swap_table_def) |
Exchange partition. More... | |
Static Public Member Functions | |
static int | key_and_rowid_cmp (KEY **key_info, uchar *a, uchar *b) |
Compare key and rowid. More... | |
![]() | |
static bool | my_prepare_gcolumn_template (THD *thd, const char *db_name, const char *table_name, my_gcolumn_template_callback_t myc, void *ib_table) |
Callback to allow InnoDB to prepare a template for generated column processing. More... | |
static bool | my_eval_gcolumn_expr_with_open (THD *thd, const char *db_name, const char *table_name, const MY_BITMAP *const fields, uchar *record, const char **mv_data_ptr, ulong *mv_length) |
Callback for generated columns processing. More... | |
static bool | my_eval_gcolumn_expr (THD *thd, TABLE *table, const MY_BITMAP *const fields, uchar *record, const char **mv_data_ptr, ulong *mv_length) |
Callback for computing generated column values. More... | |
![]() | |
static uint32 | ph_calculate_key_hash_value (Field **field_array) |
Calculate key hash value from an null terminated array of fields. More... | |
Protected Member Functions | |
int | info_low (uint flag, bool is_analyze) override |
Updates and return statistics. More... | |
bool | can_reuse_mysql_template () const override |
Can reuse the template. More... | |
int | rnd_next (uchar *record) override |
Protected handler:: functions specific for native InnoDB partitioning. More... | |
int | rnd_pos (uchar *record, uchar *pos) override |
Get a row from a position. More... | |
int | records (ha_rows *num_rows) override |
Total number of rows in all used partitions. More... | |
int | index_next (uchar *record) override |
Reads the next row from a cursor, which must have previously been positioned using index_read. More... | |
int | index_next_same (uchar *record, const uchar *, uint keylen) override |
Reads the next row matching to the key value given as the parameter. More... | |
int | index_prev (uchar *record) override |
Reads the previous row from a cursor, which must have previously been positioned using index_read. More... | |
int | index_first (uchar *record) override |
Positions a cursor on the first record in an index and reads the corresponding row to buf. More... | |
int | index_last (uchar *record) override |
Positions a cursor on the last record in an index and reads the corresponding row to buf. More... | |
int | index_read_last_map (uchar *record, const uchar *key, key_part_map keypart_map) override |
The following functions works like index_read, but it find the last row with the current key value or prefix. More... | |
int | index_read_map (uchar *buf, const uchar *key, key_part_map keypart_map, enum ha_rkey_function find_flag) override |
Positions an index cursor to the index specified in the handle ('active_index'). More... | |
int | index_read_idx_map (uchar *buf, uint index, const uchar *key, key_part_map keypart_map, enum ha_rkey_function find_flag) override |
Positions an index cursor to the index specified in argument. More... | |
![]() | |
int | delete_table (const char *name, const dd::Table *table_def, enum enum_sql_command sqlcom) |
Drop a table. More... | |
int | srv_concurrency_enter () |
Enter InnoDB engine after checking max allowed threads. More... | |
void | srv_concurrency_exit () |
Leave Innodb, if no more tickets are left. More... | |
void | update_thd (THD *thd) |
Updates the user_thd field in a handle and also allocates a new InnoDB transaction handle if needed, and updates the transaction fields in the m_prebuilt struct. More... | |
int | general_fetch (uchar *buf, uint direction, uint match_mode) |
Reads the next or previous row from a cursor, which must have previously been positioned using index_read. More... | |
void | build_template (bool whole_row) |
Builds a 'template' to the m_prebuilt struct. More... | |
int | end_stmt () |
MySQL calls this method at the end of each statement. More... | |
template<typename Table > | |
bool | prepare_inplace_alter_table_impl (TABLE *altered_table, Alter_inplace_info *ha_alter_info, const Table *old_dd_tab, Table *new_dd_tab) |
Implementation of prepare_inplace_alter_table() More... | |
template<typename Table > | |
bool | inplace_alter_table_impl (TABLE *altered_table, Alter_inplace_info *ha_alter_info) |
Implementation of inplace_alter_table() More... | |
template<typename Table > | |
bool | commit_inplace_alter_table_impl (TABLE *altered_table, Alter_inplace_info *ha_alter_info, bool commit, Table *new_dd_tab) |
Implementation of commit_inplace_alter_table() More... | |
void | mv_key_capacity (uint *num_keys, size_t *keys_length) const override |
Return max limits for a single set of multi-valued keys. More... | |
![]() | |
virtual int | records_from_index (ha_rows *num_rows, uint index) |
Number of rows in table counted using the secondary index chosen by optimizer. More... | |
virtual int | index_read_pushed (uchar *, const uchar *, key_part_map) |
virtual int | index_next_pushed (uchar *) |
virtual void | notify_table_changed (Alter_inplace_info *ha_alter_info) |
Notify the storage engine that the table definition has been updated. More... | |
void | ha_statistic_increment (ulonglong System_status_var::*offset) const |
THD * | ha_thd () const |
PSI_table_share * | ha_table_share_psi (const TABLE_SHARE *share) const |
Acquire the instrumented table information from a table share. More... | |
Handler_share * | get_ha_share_ptr () |
Get an initialized ha_share. More... | |
void | set_ha_share_ptr (Handler_share *arg_ha_share) |
Set ha_share to be used by all instances of the same table/partition. More... | |
void | lock_shared_ha_data () |
Take a lock for protecting shared handler data. More... | |
void | unlock_shared_ha_data () |
Release lock for protecting ha_share. More... | |
![]() | |
bool | open_partitioning (Partition_share *part_share) |
Set m_part_share, Allocate internal bitmaps etc. More... | |
void | close_partitioning () |
Close partitioning for a table. More... | |
void | lock_auto_increment () |
Lock auto increment value if needed. More... | |
void | unlock_auto_increment () |
unlock auto increment. More... | |
void | get_auto_increment_first_field (ulonglong increment, ulonglong nb_desired_values, ulonglong *first_value, ulonglong *nb_reserved_values) |
Get a range of auto increment values. More... | |
int | init_record_priority_queue () |
Initialize the record priority queue used for sorted index scans. More... | |
void | destroy_record_priority_queue () |
Destroy the record priority queue used for sorted index scans. More... | |
bool | print_partition_error (int error) |
Print partitioning specific error. More... | |
bool | print_admin_msg (THD *thd, uint len, const char *msg_type, const char *db_name, const char *table_name, const char *op_name, const char *fmt,...) |
Print a message row formatted for ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE. More... | |
int | check_misplaced_rows (uint read_part_id, bool repair) |
Check/fix misplaced rows. More... | |
bool | set_altered_partitions () |
Set used partitions bitmap from Alter_info. More... | |
virtual int | copy_partitions (ulonglong *const deleted) |
Copy partitions as part of ALTER TABLE of partitions. More... | |
Private Member Functions | |
void | clear_ins_upd_nodes () |
Clear used ins_nodes and upd_nodes. More... | |
void | clear_blob_heaps () |
Clear the blob heaps for all partitions. More... | |
int | reset () override |
Reset state of file to after 'open'. More... | |
int | change_active_index (uint part_id, uint keynr) |
Changes the active index of a handle. More... | |
int | next_partition_index () |
Move to next partition and set its index. More... | |
int | innobase_initialize_autoinc () |
Internally called for initializing auto increment value. More... | |
dict_index_t * | innobase_get_index (uint keynr) override |
Get the index for the current partition. More... | |
dict_index_t * | innopart_get_index (uint part_id, uint keynr) |
Get the index for a handle. More... | |
void | set_partition (uint part_id) |
Change active partition. More... | |
void | update_partition (uint part_id) |
Update active partition. More... | |
int | truncate_impl (const char *name, TABLE *form, dd::Table *table_def) |
TRUNCATE an InnoDB partitioned table. More... | |
int | initialize_auto_increment (bool no_lock) override |
Set the autoinc column max value. More... | |
void | save_auto_increment (ulonglong nr) override |
Save currently highest auto increment value. More... | |
int | init_record_priority_queue_for_parts (uint used_parts) override |
Setup the ordered record buffer and the priority queue. More... | |
void | destroy_record_priority_queue_for_parts () override |
Destroy the ordered record buffer and the priority queue. More... | |
bool | prepare_for_copy_partitions (Alter_inplace_info *ha_alter_info) |
Create the Altered_partitoins object. More... | |
int | write_row_in_new_part (uint new_part) override |
write row to new partition. More... | |
int | write_row_in_part (uint part_id, uchar *record) override |
Write a row in specific partition. More... | |
int | update_row_in_part (uint part_id, const uchar *old_row, uchar *new_row) override |
Update a row in partition. More... | |
int | delete_row_in_part (uint part_id, const uchar *record) override |
Deletes a row in partition. More... | |
int | index_first_in_part (uint part, uchar *record) override |
Return first record in index from a partition. More... | |
int | index_last_in_part (uint part, uchar *record) override |
Return last record in index from a partition. More... | |
int | index_prev_in_part (uint part, uchar *record) override |
Return previous record in index from a partition. More... | |
int | index_next_in_part (uint part, uchar *record) override |
Return next record in index from a partition. More... | |
int | index_next_same_in_part (uint part, uchar *record, const uchar *key, uint length) override |
Return next same record in index from a partition. More... | |
int | index_read_map_in_part (uint part, uchar *record, const uchar *key, key_part_map keypart_map, enum ha_rkey_function find_flag) override |
Start index scan and return first record from a partition. More... | |
int | index_read_last_map_in_part (uint part, uchar *record, const uchar *key, key_part_map keypart_map) override |
Return last matching record in index from a partition. More... | |
int | read_range_first_in_part (uint part, uchar *record, const key_range *start_key, const key_range *end_key, bool sorted) override |
Start index scan and return first record from a partition. More... | |
int | read_range_next_in_part (uint part, uchar *record) override |
Return next record in index range scan from a partition. More... | |
int | index_read_idx_map_in_part (uint part, uchar *record, uint index, const uchar *key, key_part_map keypart_map, enum ha_rkey_function find_flag) override |
Start index scan and return first record from a partition. More... | |
int | sample_init (void *&scan_ctx, double sampling_percentage, int sampling_seed, enum_sampling_method sampling_method, const bool tablesample) override |
Initialize sampling. More... | |
int | sample_next (void *scan_ctx, uchar *buf) override |
Get the next record for sampling. More... | |
int | sample_end (void *scan_ctx) override |
End sampling. More... | |
int | rnd_init_in_part (uint part_id, bool scan) override |
Initialize random read/scan of a specific partition. More... | |
int | rnd_next_in_part (uint part_id, uchar *buf) override |
Get next row during scan of a specific partition. More... | |
int | rnd_end_in_part (uint part_id, bool scan) override |
End random read/scan of a specific partition. More... | |
void | position_in_last_part (uchar *ref_arg, const uchar *record) override |
Return position for cursor in last used partition. More... | |
int | rnd_pos_by_record (uchar *record) override |
Read row using position using given record to find. More... | |
void | copy_cached_row (uchar *buf, const uchar *cached_row) override |
Copy a cached MySQL row. More... | |
int | open (const char *name, int mode, uint test_if_locked, const dd::Table *table_def) override |
Open an InnoDB table. More... | |
int | close () override |
Closes a handle to an InnoDB table. More... | |
double | scan_time () override |
Time estimate for full table scan. More... | |
bool | was_semi_consistent_read () override |
Was the last returned row semi consistent read. More... | |
void | try_semi_consistent_read (bool yes) override |
Try semi consistent read. More... | |
void | unlock_row () override |
Removes a lock on a row. More... | |
int | index_init (uint index, bool sorted) override |
Initializes a handle to use an index. More... | |
int | index_end () override |
End index cursor. More... | |
int | rnd_init (bool scan) override |
Initialize a table scan. More... | |
int | rnd_end () override |
Ends a table scan. More... | |
int | external_lock (THD *thd, int lock_type) override |
Lock/prepare to lock table. More... | |
THR_LOCK_DATA ** | store_lock (THD *thd, THR_LOCK_DATA **to, thr_lock_type lock_type) override |
Function to store lock for all partitions in native partitioned table. More... | |
int | write_row (uchar *record) override |
Stores a row in an InnoDB database, to the table specified in this handle. More... | |
int | update_row (const uchar *old_record, uchar *new_record) override |
Updates a row given as a parameter to a new value. More... | |
int | delete_row (const uchar *record) override |
Deletes a row given as the parameter. More... | |
int | truncate_partition_low (dd::Table *dd_table) override |
Delete all rows in the requested partitions. More... | |
int | exchange_partition_low (uint part_id, dd::Table *part_table, dd::Table *swap_table) override |
Exchange partition. More... | |
void | update_part_elem (partition_element *part_elem, dict_table_t *ib_table, bool display_tablespace) |
Fill in data_dir_path and tablespace name from internal data dictionary. More... | |
THD * | get_thd () const override |
Access methods to protected areas in handler to avoid adding friend class Partition_helper in class handler. More... | |
TABLE * | get_table () const override |
bool | get_eq_range () const override |
void | set_eq_range (bool eq_range_arg) override |
void | set_range_key_part (KEY_PART_INFO *key_part) override |
Private Attributes | |
Ha_innopart_share * | m_part_share |
Pointer to Ha_innopart_share on the TABLE_SHARE. More... | |
ut::unique_ptr< saved_prebuilt_t[]> | m_parts |
byte * | m_bitset |
byte array for sql_stat_start bitset More... | |
Sql_stat_start_parts | m_sql_stat_start_parts |
sql_stat_start per partition. More... | |
btr_pcur_t * | m_pcur_parts |
persistent cursors per partition. More... | |
btr_pcur_t * | m_clust_pcur_parts |
persistent cluster cursors per partition. More... | |
uint16_t * | m_pcur_map |
map from part_id to offset in above two arrays. More... | |
btr_pcur_t * | m_pcur |
Original m_prebuilt->pcur. More... | |
btr_pcur_t * | m_clust_pcur |
Original m_prebuilt->clust_pcur. More... | |
Altered_partitions * | m_new_partitions |
New partitions during ADD/REORG/... PARTITION. More... | |
bool | m_reuse_mysql_template |
Can reuse the template for the previous partition. More... | |
Additional Inherited Members | |
![]() | |
handlerton * | ht |
uchar * | ref |
Pointer to current row. More... | |
uchar * | dup_ref |
Pointer to duplicate row. More... | |
ha_statistics | stats |
range_seq_t | mrr_iter |
RANGE_SEQ_IF | mrr_funcs |
HANDLER_BUFFER * | multi_range_buffer |
uint | ranges_in_seq |
bool | mrr_is_output_sorted |
bool | mrr_have_range |
KEY_MULTI_RANGE | mrr_cur_range |
key_range * | end_range |
End value for a range scan. More... | |
bool | m_virt_gcol_in_end_range = false |
Flag which tells if end_range contains a virtual generated column. More... | |
uint | errkey |
uint | key_used_on_scan |
uint | active_index |
uint | ref_length |
Length of ref (1-8 or the clustered key length) More... | |
FT_INFO * | ft_handler |
enum handler:: { ... } | inited |
bool | implicit_emptied |
const Item * | pushed_cond |
Item * | pushed_idx_cond |
uint | pushed_idx_cond_keyno |
ulonglong | next_insert_id |
next_insert_id is the next value which should be inserted into the auto_increment column: in a inserting-multi-row statement (like INSERT SELECT), for the first row where the autoinc value is not specified by the statement, get_auto_increment() called and asked to generate a value, next_insert_id is set to the next value, then for all other rows next_insert_id is used (and increased each time) without calling get_auto_increment(). More... | |
ulonglong | insert_id_for_cur_row |
insert id for the current row (autogenerated; if not autogenerated, it's 0). More... | |
Discrete_interval | auto_inc_interval_for_cur_row |
Interval returned by get_auto_increment() and being consumed by the inserter. More... | |
uint | auto_inc_intervals_count |
Number of reserved auto-increment intervals. More... | |
PSI_table * | m_psi |
Instrumented table associated with this handler. More... | |
std::mt19937 * | m_random_number_engine {nullptr} |
double | m_sampling_percentage |
![]() | |
enum | enum_using_ref { REF_NOT_USED = 0 , REF_STORED_IN_PQ , REF_USED_FOR_SORT } |
![]() | |
DsMrr_impl | m_ds_mrr |
The multi range read session object. More... | |
row_prebuilt_t * | m_prebuilt |
Save CPU time with prebuilt/cached data structures. More... | |
THD * | m_user_thd |
Thread handle of the user currently using the handler; this is set in external_lock function. More... | |
INNOBASE_SHARE * | m_share |
information for MySQL table locking More... | |
uchar * | m_upd_buf |
buffer used in updates More... | |
ulint | m_upd_buf_size |
the size of upd_buf in bytes More... | |
Table_flags | m_int_table_flags |
Flags that specify the handler instance (table) capability. More... | |
bool | m_start_of_scan |
this is set to 1 when we are starting a table scan but have not yet fetched any row, else false More... | |
uint | m_last_match_mode {0} |
ulint | m_stored_select_lock_type |
this field is used to remember the original select_lock_type that was decided in ha_innodb.cc,":: store_lock()", "::external_lock()", etc. More... | |
bool | m_mysql_has_locked |
If mysql has locked with external_lock() More... | |
![]() | |
TABLE_SHARE * | table_share |
TABLE * | table |
Table_flags | cached_table_flags {0} |
ha_rows | estimation_rows_to_insert |
KEY_PART_INFO * | range_key_part |
bool | eq_range |
bool | in_range_check_pushed_down |
![]() | |
TABLE * | m_table |
Convenience pointer to table from m_handler (i.e. More... | |
partition_info * | m_part_info |
All internal partitioning data! More... | |
bool | m_pkey_is_clustered |
Is primary key clustered. More... | |
bool | m_is_sub_partitioned |
Cached value of m_part_info->is_sub_partitioned(). More... | |
uint | m_tot_parts |
Total number of partitions. More... | |
uint | m_last_part |
const uchar * | m_err_rec |
bool | m_auto_increment_safe_stmt_log_lock |
bool | m_auto_increment_lock |
part_id_range | m_part_spec |
uint | m_scan_value |
key_range | m_start_key |
enum partition_index_scan_type | m_index_scan_type |
uint | m_rec_length |
bool | m_ordered |
bool | m_ordered_scan_ongoing |
bool | m_reverse_order |
uchar * | m_ordered_rec_buffer |
Row and key buffer for ordered index scan. More... | |
Prio_queue * | m_queue |
Prio queue used by sorted read. More... | |
uint | m_top_entry |
Which partition is to deliver next result. More... | |
uint | m_rec_offset |
Offset in m_ordered_rec_buffer from part buffer to its record buffer. More... | |
KEY * | m_curr_key_info [3] |
Current index used for sorting. More... | |
enum_using_ref | m_ref_usage |
How handler::ref is used in the priority queue. More... | |
bool | m_key_not_found |
Set if previous index_* call returned HA_ERR_KEY_NOT_FOUND. More... | |
MY_BITMAP | m_key_not_found_partitions |
Partitions that returned HA_ERR_KEY_NOT_FOUND. More... | |
The class defining a partitioning aware handle to an InnoDB table.
Based on ha_innobase and extended with
ha_innopart::ha_innopart | ( | handlerton * | hton, |
TABLE_SHARE * | table_arg | ||
) |
Construct ha_innopart handler.
[in] | hton | Handlerton. |
[in] | table_arg | MySQL Table. |
|
overridedefault |
|
inlineoverridevirtual |
Alter flags.
Given a set of alter table flags, return which is supported.
flags | Alter table operation flags. |
Reimplemented from Partition_handler.
uint ha_innopart::alter_table_flags | ( | uint | flags | ) |
|
inlineoverridevirtual |
Reimplemented from handler.
|
inlineoverrideprotectedvirtual |
Can reuse the template.
Mainly used for partition.
true | Can reuse the mysql_template |
Reimplemented from ha_innobase.
|
private |
Changes the active index of a handle.
[in] | part_id | Use this partition. |
[in] | keynr | Use this index; MAX_KEY means always clustered index, even if it was internally generated by InnoDB. |
|
overridevirtual |
Checks a partitioned table.
Tries to check that an InnoDB table is not corrupted. If corruption is noticed, prints to stderr information about it. In case of corruption may also assert a failure and crash the server. Also checks for records in wrong partition.
[in] | thd | MySQL THD object/thread handle. |
[in] | check_opt | Check options. |
Reimplemented from ha_innobase.
|
inlineoverridevirtual |
Part of old, deprecated in-place ALTER API.
Reimplemented from ha_innobase.
|
private |
Clear the blob heaps for all partitions.
|
private |
Clear used ins_nodes and upd_nodes.
Clone this handler, used when needing more than one cursor to the same table.
[in] | name | Table name. |
[in] | mem_root | mem_root to allocate from. |
Pointer | to clone or NULL if error. |
Reimplemented from ha_innobase.
Compares two 'refs'.
A 'ref' is the (internal) primary key value of the row. If there is no explicitly declared non-null unique key or a primary key, then InnoDB internally uses the row id as the primary key. It will use the partition id as secondary compare.
[in] | ref1 | An (internal) primary key value in the MySQL key value format. |
[in] | ref2 | Reference to compare with (same type as ref1). |
Reimplemented from ha_innobase.
bool ha_innopart::commit_inplace_alter_partition | ( | TABLE * | altered_table, |
Alter_inplace_info * | ha_alter_info, | ||
bool | commit, | ||
const dd::Table * | old_dd_tab, | ||
dd::Table * | new_dd_tab | ||
) |
Prepare to commit or roll back ALTER TABLE...ALGORITHM=INPLACE.
This is for 'ALTER TABLE ... PARTITION' and a corresponding function to commit_inplace_alter_table().
[in,out] | altered_table | TABLE object for new version of table. |
[in,out] | ha_alter_info | ALGORITHM=INPLACE metadata |
[in] | commit | true=Commit, false=Rollback. |
[in] | old_dd_tab | old table |
[in,out] | new_dd_tab | new table |
true | on failure (my_error() will have been called) |
false | on success |
|
overridevirtual |
Creates a new table to an InnoDB database.
[in] | name | Table name (in filesystem charset). |
[in] | form | MySQL Table containing information of partitions, columns and indexes etc. |
[in] | create_info | Additional create information, like create statement string. |
[in,out] | table_def | dd::Table object for table to be created. Can be adjusted by this call. Changes to the table definition will be persisted in the data-dictionary at statement commit time. |
{database}/{tablename}
absolute path of table
Reimplemented from ha_innobase.
|
inlineoverridevirtual |
Delete all rows from the table.
HA_ERR_WRONG_COMMAND | if the table is transactional |
0 | on success |
Reimplemented from ha_innobase.
|
overridevirtual |
Drop a table.
[in] | name | table name |
[in,out] | dd_table | data dictionary table |
0 | on success |
Reimplemented from ha_innobase.
|
inlineoverridevirtual |
Disable indexes.
[in] | mode | disable index mode. |
Reimplemented from ha_innobase.
|
overridevirtual |
Discards or imports an InnoDB tablespace.
[in] | discard | True if discard, else import. |
[in,out] | table_def | dd::Table describing table which tablespaces are to be imported or discarded. Can be adjusted by SE, the changes will be saved into the data-dictionary at statement commit time. |
Reimplemented from ha_innobase.
|
inlineoverridevirtual |
Enable indexes.
[in] | mode | enable index mode. |
Reimplemented from ha_innobase.
|
overridevirtual |
Gives an UPPER BOUND to the number of rows in a table.
This is used in filesort.cc.
Reimplemented from ha_innobase.
|
overrideprivatevirtual |
Exchange partition.
Low-level primitive which implementation is provided here.
[in] | part_id | The id of the partition to be exchanged |
[in] | part_table | partitioned table to be exchanged |
[in] | swap_table | table to be exchanged |
0 | on success |
Reimplemented from Partition_handler.
|
overridevirtual |
Extra hints from MySQL.
[in] | operation | Operation hint. |
Reimplemented from ha_innobase.
|
inlineoverridevirtual |
Initialize FT index scan.
Reimplemented from ha_innobase.
|
inlineoverridevirtual |
Initialize FT index scan.
Reimplemented from ha_innobase.
|
inlineoverridevirtual |
Fetch next result from the FT result set.
buf | in/out: buf contain result row |
Reimplemented from ha_innobase.
|
overridevirtual |
Get the current auto_increment value.
[in] | offset | Table auto-inc offset. |
[in] | increment | Table auto-inc increment. |
[in] | nb_desired_values | Number of required values. |
[out] | first_value | The auto increment value. |
[out] | nb_reserved_values | Number of reserved values. |
Reimplemented from ha_innobase.
|
inlineoverridevirtual |
Implementing Partition_handler interface.
Implements Partition_handler.
|
inlineoverrideprivatevirtual |
Implements Partition_helper.
|
inlineoverridevirtual |
Retrieves the names of the table and the key for which there was a duplicate entry in the case of HA_ERR_FOREIGN_DUPLICATE_KEY.
If any of the names is not available, then this method will return false and will not change any of child_table_name or child_key_name.
[out] | child_table_name | Table name |
[in] | child_table_name_len | Table name buffer size |
[out] | child_key_name | Key name |
[in] | child_key_name_len | Key name buffer size |
true | table and key names were available and were written into the corresponding out parameters. |
false | table and key names were not available, the out parameters were not touched. |
Reimplemented from ha_innobase.
|
inlineoverridevirtual |
Return the table handler.
For some partitioning specific functions it is still needed to access the handler directly for transaction handling (mark_trx_read_write()) and to assert correct locking.
Reimplemented from Partition_handler.
|
inlineoverridevirtual |
Reimplemented from handler.
|
overridevirtual |
Get partition row type from SE.
table | partition table |
part_id | Id of partition for which row type to be retrieved |
Implements Partition_handler.
|
inlineoverrideprivatevirtual |
Implements Partition_helper.
|
inlineoverrideprivatevirtual |
Access methods to protected areas in handler to avoid adding friend class Partition_helper in class handler.
Implements Partition_helper.
|
inlineoverrideprotectedvirtual |
Positions a cursor on the first record in an index and reads the corresponding row to buf.
buf | in/out: buffer for the row |
Reimplemented from ha_innobase.
|
inlineoverrideprotectedvirtual |
Positions a cursor on the last record in an index and reads the corresponding row to buf.
buf | in/out: buffer for the row |
Reimplemented from ha_innobase.
|
inlineoverrideprotectedvirtual |
Reads the next row from a cursor, which must have previously been positioned using index_read.
buf | in/out: buffer for next row in MySQL format |
Reimplemented from ha_innobase.
|
inlineoverrideprotectedvirtual |
Reads the next row matching to the key value given as the parameter.
buf | in/out: buffer for the row |
key | in: key value |
keylen | in: key value length |
Reimplemented from ha_innobase.
|
inlineoverrideprotectedvirtual |
Reads the previous row from a cursor, which must have previously been positioned using index_read.
buf | in/out: buffer for previous row in MySQL format |
Reimplemented from ha_innobase.
|
inlineoverrideprotectedvirtual |
Positions an index cursor to the index specified in argument.
Fetches the row if available. If the key value is null, begin at the first key of the index.
Reimplemented from handler.
|
inlineoverrideprotectedvirtual |
The following functions works like index_read, but it find the last row with the current key value or prefix.
Reimplemented from handler.
|
inlineoverrideprotectedvirtual |
Positions an index cursor to the index specified in the handle ('active_index').
Fetches the row if available. If the key value is null, begin at the first key of the index.
Reimplemented from handler.
|
overrideprotectedvirtual |
Updates and return statistics.
Returns statistics information of the table to the MySQL interpreter, in various fields of the handle object.
[in] | flag | Flags for what to update and return. |
[in] | is_analyze | True if called from "::analyze()". |
Reimplemented from ha_innobase.
|
inline |
|
inlineoverrideprivatevirtual |
Get the index for the current partition.
[in] | keynr | MySQL index number. |
Reimplemented from ha_innobase.
|
private |
Internally called for initializing auto increment value.
Should never be called, but defined to catch such errors.
Only called from ha_innobase::discard_or_import_table_space() and should not do anything, since it is ha_innopart will initialize it on first usage.
|
inlineprivate |
Get the index for a handle.
Does not change active index.
[in] | keynr | Use this index; MAX_KEY means always clustered index, even if it was internally generated by InnoDB. |
[in] | part_id | From this partition. |
bool ha_innopart::inplace_alter_partition | ( | Alter_inplace_info * | ha_alter_info | ) |
Alter the table structure in-place with operations specified using HA_ALTER_FLAGS and Alter_inplace_information.
This is for 'ALTER TABLE ... PARTITION' and a corresponding function to inplace_alter_table(). The level of concurrency allowed during this operation depends on the return value from check_if_supported_inplace_alter().
[in,out] | ha_alter_info | Structure describing changes to be done by ALTER TABLE and holding data used during in-place alter. |
true | Failure |
false | Success |
|
overridevirtual |
Can error be ignored.
[in] | error | Error code to check. |
Reimplemented from handler.
Compare key and rowid.
Helper function for sorting records in the priority queue. a/b points to table->record[0] rows which must have the key fields set. The bytes before a and b store the rowid. This is used for comparing/sorting rows first according to KEY and if same KEY, by rowid (ref).
[in] | key_info | Null terminated array of index information. |
[in] | a | Pointer to record+ref in first record. |
[in] | b | Pointer to record+ref in second record. |
0 | Keys are equal. |
-1 | second_rec is greater than first_rec. |
+1 | first_rec is greater than second_rec. |
|
private |
Move to next partition and set its index.
|
overridevirtual |
Optimize table.
This is mapped to "ALTER TABLE tablename ENGINE=InnoDB", which rebuilds the table in MySQL.
[in] | thd | Connection thread handle. |
[in] | check_opt | Currently ignored. |
Reimplemented from ha_innobase.
|
overridevirtual |
Start parallel read of data.
[in] | scan_ctx | Scan context created by parallel_scan_init |
[in] | thread_ctxs | context for each of the spawned threads |
[in] | init_fn | callback called by each parallel load thread at the beginning of the parallel load. |
[in] | load_fn | callback called by each parallel load thread when processing of rows is required. |
[in] | end_fn | callback called by each parallel load thread when processing of rows has ended. |
Reimplemented from ha_innobase.
|
overridevirtual |
Run the parallel read of data.
[in] | parallel_scan_ctx | a scan context created by parallel_scan_init |
Reimplemented from ha_innobase.
|
overridevirtual |
Get number of threads that would be spawned for parallel read.
[out] | scan_ctx | A scan context created by this method that has to be used in parallel_scan |
[out] | num_threads | Number of threads to be spawned |
[in] | use_reserved_threads | true if reserved threads are to be used if we exhaust the max cap of number of parallel read threads that can be spawned at a time |
[in] | max_desired_threads | Maximum number of desired read threads; passing 0 has no effect, it is ignored; upper-limited by the current value of innodb_parallel_read_threads. |
Reimplemented from ha_innobase.
|
inlineoverridevirtual |
Store a reference to the current row to 'ref' field of the handle.
Note that in the case where we have generated the clustered index for the table, the function parameter is illogical: we MUST ASSUME that 'record' is the current 'position' of the handle, because if row ref is actually the row id internally generated in InnoDB, then 'record' does not contain it. We just guess that the row id must be for the record where the handle was positioned the last time.
[in] | record | row in MySQL format |
Reimplemented from ha_innobase.
bool ha_innopart::prepare_inplace_alter_partition | ( | TABLE * | altered_table, |
Alter_inplace_info * | ha_alter_info, | ||
const dd::Table * | old_dd_tab, | ||
dd::Table * | new_dd_tab | ||
) |
Allows InnoDB to update internal structures with concurrent writes blocked (given that check_if_supported_inplace_alter() did not return HA_ALTER_INPLACE_NO_LOCK).
This is for 'ALTER TABLE ... PARTITION' and a corresponding function to inplace_alter_table(). This will be invoked before inplace_alter_partition().
[in,out] | altered_table | TABLE object for new version of table |
[in,out] | ha_alter_info | Structure describing changes to be done by ALTER TABLE and holding data used during in-place alter. |
[in] | old_dd_tab | Table definition before the ALTER |
[in,out] | new_dd_tab | Table definition after the ALTER |
true | Failure |
false | Success |
|
overridevirtual |
Print error information.
[in] | error | Error code (MySQL). |
[in] | errflag | Flags. |
Reimplemented from handler.
|
inlineoverridevirtual |
Read first row between two ranges.
Store ranges for future calls to read_range_next.
start_key | Start key. Is 0 if no min range |
end_key | End key. Is 0 if no max range |
eq_range_arg | Set to 1 if start_key == end_key |
sorted | Set to 1 if result should be sorted per key |
0 | Found row |
HA_ERR_END_OF_FILE | No rows in range |
Reimplemented from ha_innobase.
|
inlineoverridevirtual |
Read next row between two endpoints.
0 | Found row |
HA_ERR_END_OF_FILE | No rows in range |
Reimplemented from ha_innobase.
|
overrideprotectedvirtual |
Total number of rows in all used partitions.
Returns the exact number of records that this client can see using this handler object.
[out] | num_rows | Number of rows. |
Reimplemented from ha_innobase.
|
overridevirtual |
Estimates the number of index records in a range.
[in] | keynr | Index number. |
[in] | min_key | Start key value (or NULL). |
[in] | max_key | End key value (or NULL). |
Reimplemented from ha_innobase.
|
inlineoverridevirtual |
Do cleanup for auto increment calculation.
Reimplemented from ha_innobase.
|
overridevirtual |
Rename a table.
[in] | from | table name before rename |
[in] | to | table name after rename |
[in] | from_table | data dictionary table before rename |
[in,out] | to_table | data dictionary table after rename |
0 | on success |
Reimplemented from ha_innobase.
|
overridevirtual |
Repair a partitioned table.
Only repairs records in wrong partitions (moves them to the correct partition or deletes them if not in any partition).
[in] | thd | MySQL THD object/thread handle. |
[in] | repair_opt | Repair options. |
Reimplemented from handler.
|
overrideprivatevirtual |
Reset state of file to after 'open'.
This function is called after every statement for all tables used by that statement.
Reimplemented from ha_innobase.
|
inlineoverrideprotectedvirtual |
Protected handler:: functions specific for native InnoDB partitioning.
Reimplemented from ha_innobase.
Get a row from a position.
Fetches a row from the table based on a row reference.
[out] | buf | Returns the row in this buffer, in MySQL format. |
[in] | pos | Position, given as primary key value or DB_ROW_ID (if no primary key) of the row in MySQL format. The length of data in pos has to be ref_length. |
Reimplemented from ha_innobase.
int ha_innopart::set_dd_discard_attribute | ( | dd::Table * | table_def, |
bool | discard | ||
) |
Set DD discard attribute for tablespace.
[in] | table_def | dd table |
[in] | discard | True if this table is discarded |
|
inlineoverrideprivatevirtual |
Implements Partition_helper.
|
inlineoverridevirtual |
Set the partition info object to be used by the handler.
part_info | Partition info to be used by the handler. |
early | True if called when part_info only created and parsed, but not setup, checked or fixed. |
Implements Partition_handler.
|
private |
Change active partition.
Copies needed info into m_prebuilt from the partition specific memory.
[in] | part_id | Partition to set as active. |
|
inlineoverrideprivatevirtual |
Implements Partition_helper.
|
overridevirtual |
Start statement.
MySQL calls this function at the start of each SQL statement inside LOCK TABLES. Inside LOCK TABLES the "::external_lock" method does not work to mark SQL statement borders. Note also a special case: if a temporary table is created inside LOCK TABLES, MySQL has not called external_lock() at all on that table. MySQL-5.0 also calls this before each statement in an execution of a stored procedure. To make the execution more deterministic for binlogging, MySQL-5.0 locks all tables involved in a stored procedure with full explicit table locks (thd_in_lock_tables(thd) holds in store_lock()) before executing the procedure.
[in] | thd | Handle to the user thread. |
[in] | lock_type | Lock type. |
Reimplemented from ha_innobase.
|
inlineoverridevirtual |
TRUNCATE an InnoDB partitioned table.
[in] | name | table name |
[in] | form | table definition |
[in,out] | table_def | dd::Table describing table to be truncated. Can be adjusted by SE, the changes will be saved into the data-dictionary at statement commit time. |
0 | on success |
|
overrideprivatevirtual |
Delete all rows in the requested partitions.
Done by deleting the partitions and recreate them again.
[in,out] | dd_table | dd::Table object for partitioned table which partitions need to be truncated. Can be adjusted by this call. Changes to the table definition will be persisted in the data-dictionary at statement commit time. |
Reimplemented from Partition_handler.
|
overridevirtual |
Update create_info.
Used in SHOW CREATE TABLE et al.
[in,out] | create_info | Create info to update. |
Reimplemented from ha_innobase.
|
private |
Fill in data_dir_path and tablespace name from internal data dictionary.
[in,out] | part_elem | Partition element to fill. |
[in] | ib_table | InnoDB table to copy from. |
[in] | display_tablespace | Display tablespace name if set. |
|
private |
Update active partition.
Copies needed info from m_prebuilt into the partition specific memory.
[in] | part_id | Partition to set as active. |
|
private |
byte array for sql_stat_start bitset
|
private |
Original m_prebuilt->clust_pcur.
|
private |
persistent cluster cursors per partition.
|
private |
New partitions during ADD/REORG/... PARTITION.
|
private |
Pointer to Ha_innopart_share on the TABLE_SHARE.
|
private |
|
private |
Original m_prebuilt->pcur.
|
private |
map from part_id to offset in above two arrays.
|
private |
persistent cursors per partition.
|
private |
Can reuse the template for the previous partition.
|
private |
sql_stat_start per partition.