![]() |
MySQL 9.5.0
Source Code Documentation
|
InnoDB Native API. More...
#include <dd/properties.h>#include <dd/types/tablespace.h>#include <errno.h>#include <stdlib.h>#include <sys/types.h>#include "api0api.h"#include "api0misc.h"#include "btr0pcur.h"#include "dict0crea.h"#include "dict0dd.h"#include "dict0dict.h"#include "dict0priv.h"#include "fsp0fsp.h"#include "ha_prototypes.h"#include "lob0lob.h"#include "lock0lock.h"#include "lock0types.h"#include "ddl0ddl.h"#include "dict0sdi-decompress.h"#include "dict0sdi.h"#include "pars0pars.h"#include "rem0cmp.h"#include "row0ins.h"#include "row0sel.h"#include "row0upd.h"#include "row0vers.h"#include "srv0start.h"#include "trx0roll.h"Classes | |
| struct | ib_qry_grph_t |
| Query graph types. More... | |
| struct | ib_qry_node_t |
| Query node types. More... | |
| struct | ib_qry_proc_t |
| Query processing fields. More... | |
| struct | ib_cursor_t |
| Cursor instance for traversing tables/indexes. More... | |
| struct | ib_col_t |
| InnoDB table columns used during table and index schema creation. More... | |
| struct | ib_key_col_t |
| InnoDB index columns used during index and index schema creation. More... | |
| struct | ib_Index_defn |
| InnoDB index schema used during index creation. More... | |
| struct | ib_table_def_t |
| InnoDB table schema used during table creation. More... | |
| struct | ib_tuple_t |
| InnoDB tuple used for key operations. More... | |
Enumerations | |
| enum | ib_tuple_type_t { TPL_TYPE_ROW , TPL_TYPE_KEY } |
| InnoDB tuple types. More... | |
| enum | ib_qry_type_t { QRY_NON , QRY_INS , QRY_UPD , QRY_SEL } |
| Query types supported. More... | |
Functions | |
| static bool | ib_btr_cursor_is_positioned (btr_pcur_t *pcur) |
| Check whether the InnoDB persistent cursor is positioned. More... | |
| static dict_table_t * | ib_lookup_table_by_name (const char *name) |
| Find table using table name. More... | |
| static void | ib_wake_master_thread (void) |
| Increments innobase_active_counter and every INNOBASE_WAKE_INTERVALth time calls srv_active_wake_master_thread. More... | |
| static ib_err_t | ib_read_tuple (const rec_t *rec, bool page_format, ib_tuple_t *tuple, ib_tuple_t *cmp_tuple, int mode, void **rec_buf_list, ulint *cur_slot, ulint *used_len) |
| Read the columns from a rec into a tuple. More... | |
| static ib_tpl_t | ib_key_tuple_new_low (const dict_index_t *index, ulint n_cols, mem_heap_t *heap) |
| Create an InnoDB key tuple. More... | |
| static ib_tpl_t | ib_key_tuple_new (const dict_index_t *index, ulint n_cols) |
| Create an InnoDB key tuple. More... | |
| static ib_tpl_t | ib_row_tuple_new_low (const dict_index_t *index, ulint n_cols, mem_heap_t *heap) |
| Create an InnoDB row tuple. More... | |
| static ib_tpl_t | ib_row_tuple_new (const dict_index_t *index, ulint n_cols) |
| Create an InnoDB row tuple. More... | |
| ib_err_t | ib_trx_start (ib_trx_t ib_trx, ib_trx_level_t ib_trx_level, bool read_write, bool auto_commit, void *thd) |
| Begin a transaction. More... | |
| ib_trx_t | ib_trx_begin (ib_trx_level_t ib_trx_level, bool read_write, bool auto_commit, void *thd) |
| Begin a transaction. More... | |
| uint32_t | ib_trx_read_only (ib_trx_t ib_trx) |
| Check if transaction is read_only. More... | |
| uint64_t | ib_trx_get_start_time (ib_trx_t ib_trx) |
| Get a trx start time. More... | |
| ib_err_t | ib_trx_release (ib_trx_t ib_trx) |
| Release the resources of the transaction. More... | |
| ib_err_t | ib_trx_commit (ib_trx_t ib_trx) |
| Commit a transaction. More... | |
| ib_err_t | ib_trx_rollback (ib_trx_t ib_trx) |
| Rollback a transaction. More... | |
| static void | ib_normalize_table_name (char *norm_name, const char *name) |
| Normalizes a table name string. More... | |
| static ib_err_t | ib_table_get_id_low (const char *table_name, ib_id_u64_t *table_id) |
| Get a table id. More... | |
| static ib_err_t | ib_create_cursor (ib_crsr_t *ib_crsr, dict_table_t *table, dict_index_t *index, trx_t *trx) |
| Create an internal cursor instance. More... | |
| static ib_err_t | ib_create_cursor_with_clust_index (ib_crsr_t *ib_crsr, dict_table_t *table, trx_t *trx) |
| Create an internal cursor instance on the clustered index. More... | |
| ib_err_t | ib_cursor_open_index_using_name (ib_crsr_t ib_open_crsr, const char *index_name, ib_crsr_t *ib_crsr, int *idx_type, ib_id_u64_t *idx_id) |
| Open an InnoDB secondary index cursor and return a cursor handle to it. More... | |
| ib_err_t | ib_cursor_open_table (const char *name, ib_trx_t ib_trx, ib_crsr_t *ib_crsr) |
| Open an InnoDB table and return a cursor handle to it. More... | |
| bool | ib_is_virtual_table (ib_crsr_t crsr) |
| Check the table whether it contains virtual columns. More... | |
| static void | ib_qry_proc_free (ib_qry_proc_t *q_proc) |
| Free a context struct for a table handle. More... | |
| ib_err_t | ib_cursor_reset (ib_crsr_t ib_crsr) |
| Reset the cursor. More... | |
| ib_err_t | ib_cursor_new_trx (ib_crsr_t ib_crsr, ib_trx_t ib_trx) |
| update the cursor with new transactions and also reset the cursor More... | |
| ib_err_t | ib_cursor_commit_trx (ib_crsr_t ib_crsr, ib_trx_t ib_trx) |
| Commit the transaction in a cursor. More... | |
| ib_err_t | ib_cursor_close (ib_crsr_t ib_crsr) |
| Close an InnoDB table and free the cursor. More... | |
| static ib_err_t | ib_insert_row_with_lock_retry (que_thr_t *thr, ins_node_t *node, trx_savept_t *savept) |
| Run the insert query and do error handling. More... | |
| static ib_err_t | ib_execute_insert_query_graph (dict_table_t *table, que_fork_t *ins_graph, ins_node_t *node) |
| Write a row. More... | |
| static void | ib_insert_query_graph_create (ib_cursor_t *cursor) |
| Create an insert query graph node. More... | |
| ib_err_t | ib_cursor_insert_row (ib_crsr_t ib_crsr, const ib_tpl_t ib_tpl) |
| Insert a row to a table. More... | |
| static upd_t * | ib_update_vector_create (ib_cursor_t *cursor) |
| Gets pointer to a prebuilt update vector used in updates. More... | |
| static void | ib_update_col (ib_cursor_t *cursor, upd_field_t *upd_field, ulint col_no, dfield_t *dfield) |
| Note that a column has changed. More... | |
| static ib_err_t | ib_calc_diff (ib_cursor_t *cursor, upd_t *upd, const ib_tuple_t *old_tuple, const ib_tuple_t *new_tuple) |
| Checks which fields have changed in a row and stores the new data to an update vector. More... | |
| static ib_err_t | ib_update_row_with_lock_retry (que_thr_t *thr, upd_node_t *node, trx_savept_t *savept) |
| Run the update query and do error handling. More... | |
| static ib_err_t | ib_execute_update_query_graph (ib_cursor_t *cursor, btr_pcur_t *pcur) |
| Does an update or delete of a row. More... | |
| ib_err_t | ib_cursor_update_row (ib_crsr_t ib_crsr, const ib_tpl_t ib_old_tpl, const ib_tpl_t ib_new_tpl) |
| Update a row in a table. More... | |
| static ib_err_t | ib_delete_row (ib_cursor_t *cursor, btr_pcur_t *pcur, const rec_t *rec) |
| Build the update query graph to delete a row from an index. More... | |
| ib_err_t | ib_cursor_delete_row (ib_crsr_t ib_crsr) |
| Delete a row in a table. More... | |
| ib_err_t | ib_cursor_read_row (ib_crsr_t ib_crsr, ib_tpl_t ib_tpl, ib_tpl_t cmp_tpl, int mode, void **row_buf, uint64_t *slot, uint64_t *used_len) |
| Read current row. More... | |
| static ib_err_t | ib_cursor_position (ib_cursor_t *cursor, ib_srch_mode_t mode) |
| Move cursor to the first record in the table. More... | |
| ib_err_t | ib_cursor_first (ib_crsr_t ib_crsr) |
| Move cursor to the first record in the table. More... | |
| ib_err_t | ib_cursor_next (ib_crsr_t ib_crsr) |
| Move cursor to the next user record in the table. More... | |
| ib_err_t | ib_cursor_moveto (ib_crsr_t ib_crsr, ib_tpl_t ib_tpl, ib_srch_mode_t ib_srch_mode, uint64_t direction) |
| Search for key. More... | |
| void | ib_cursor_set_match_mode (ib_crsr_t ib_crsr, ib_match_mode_t match_mode) |
| Set the cursor search mode. More... | |
| static dfield_t * | ib_col_get_dfield (ib_tuple_t *tuple, ulint col_no) |
| Get the dfield instance for the column in the tuple. More... | |
| static ib_err_t | ib_col_is_capped (const dtype_t *dtype) |
| Predicate to check whether a column type contains variable length data. More... | |
| ib_err_t | ib_col_set_value (ib_tpl_t ib_tpl, ib_ulint_t col_no, const void *src, uint64_t len, bool need_cpy) |
| Set a column of the tuple. More... | |
| uint64_t | ib_col_get_len (ib_tpl_t ib_tpl, ib_ulint_t i) |
| Get the size of the data available in the column the tuple. More... | |
| uint64_t | ib_col_copy_value (ib_tpl_t ib_tpl, ib_ulint_t i, void *dst, uint32_t len) |
| Copy a column value from the tuple. More... | |
| static ib_col_attr_t | ib_col_get_attr (ulint prtype) |
| Get the InnoDB column attribute from the internal column precise type. More... | |
| const char * | ib_col_get_name (ib_crsr_t ib_crsr, ulint i) |
| Get a column type, length and attributes from the tuple. More... | |
| const char * | ib_get_idx_field_name (ib_crsr_t ib_crsr, ulint i) |
| Get an index field name from the cursor. More... | |
| uint64_t | ib_col_get_meta (ib_tpl_t ib_tpl, ulint i, ib_col_meta_t *ib_col_meta) |
| Get a column type, length and attributes from the tuple. More... | |
| static ib_err_t | ib_tuple_check_int (ib_tpl_t ib_tpl, ulint i, bool usign, ulint size) |
| Read a signed int 8 bit column from an InnoDB tuple. More... | |
| ib_err_t | ib_tuple_read_i8 (ib_tpl_t ib_tpl, ib_ulint_t i, int8_t *ival) |
| Read a signed int 8 bit column from an InnoDB tuple. More... | |
| ib_err_t | ib_tuple_read_u8 (ib_tpl_t ib_tpl, ib_ulint_t i, uint8_t *ival) |
| Read an unsigned int 8 bit column from an InnoDB tuple. More... | |
| ib_err_t | ib_tuple_read_i16 (ib_tpl_t ib_tpl, ib_ulint_t i, int16_t *ival) |
| Read a signed int 16 bit column from an InnoDB tuple. More... | |
| ib_err_t | ib_tuple_read_u16 (ib_tpl_t ib_tpl, ib_ulint_t i, uint16_t *ival) |
| Read an unsigned int 16 bit column from an InnoDB tuple. More... | |
| ib_err_t | ib_tuple_read_i32 (ib_tpl_t ib_tpl, ib_ulint_t i, int32_t *ival) |
| Read a signed int 32 bit column from an InnoDB tuple. More... | |
| ib_err_t | ib_tuple_read_u32 (ib_tpl_t ib_tpl, ib_ulint_t i, uint32_t *ival) |
| Read an unsigned int 32 bit column from an InnoDB tuple. More... | |
| ib_err_t | ib_tuple_read_i64 (ib_tpl_t ib_tpl, ib_ulint_t i, int64_t *ival) |
| Read a signed int 64 bit column from an InnoDB tuple. More... | |
| ib_err_t | ib_tuple_read_u64 (ib_tpl_t ib_tpl, ib_ulint_t i, uint64_t *ival) |
| Read an unsigned int 64 bit column from an InnoDB tuple. More... | |
| const void * | ib_col_get_value (ib_tpl_t ib_tpl, ib_ulint_t i) |
| Get a column value pointer from the tuple. More... | |
| ib_tpl_t | ib_tuple_clear (ib_tpl_t ib_tpl) |
| "Clear" or reset an InnoDB tuple. More... | |
| ib_err_t | ib_tuple_get_cluster_key (ib_crsr_t ib_crsr, ib_tpl_t *ib_dst_tpl, const ib_tpl_t ib_src_tpl) |
| Create a new cluster key search tuple and copy the contents of the secondary index key tuple columns that refer to the cluster index record to the cluster key. More... | |
| ib_tpl_t | ib_sec_search_tuple_create (ib_crsr_t ib_crsr) |
| Create an InnoDB tuple used for index/table search. More... | |
| ib_tpl_t | ib_sec_read_tuple_create (ib_crsr_t ib_crsr) |
| Create an InnoDB tuple used for index/table search. More... | |
| ib_tpl_t | ib_clust_search_tuple_create (ib_crsr_t ib_crsr) |
| Create an InnoDB tuple used for table key operations. More... | |
| ib_tpl_t | ib_clust_read_tuple_create (ib_crsr_t ib_crsr) |
| Create an InnoDB tuple for table row operations. More... | |
| uint64_t | ib_tuple_get_n_user_cols (const ib_tpl_t ib_tpl) |
| Return the number of user columns in the tuple definition. More... | |
| uint64_t | ib_tuple_get_n_cols (const ib_tpl_t ib_tpl) |
| Return the number of columns in the tuple definition. More... | |
| void | ib_tuple_delete (ib_tpl_t ib_tpl) |
| Destroy an InnoDB tuple. More... | |
| ib_err_t | ib_table_get_id (const char *table_name, ib_id_u64_t *table_id) |
| Get a table id. More... | |
| bool | ib_cursor_is_positioned (const ib_crsr_t ib_crsr) |
| Check if cursor is positioned. More... | |
| bool | ib_schema_lock_is_exclusive (const ib_trx_t ib_trx) |
| Checks if the data dictionary is latched in exclusive mode. More... | |
| ib_err_t | ib_cursor_lock (ib_crsr_t ib_crsr, ib_lck_mode_t ib_lck_mode) |
| Set the Lock an InnoDB cursor/table. More... | |
| ib_err_t | ib_cursor_set_lock_mode (ib_crsr_t ib_crsr, ib_lck_mode_t ib_lck_mode) |
| Set the Lock mode of the cursor. More... | |
| void | ib_cursor_set_cluster_access (ib_crsr_t ib_crsr) |
| Set need to access clustered index record. More... | |
| void | ib_cursor_stmt_begin (ib_crsr_t ib_crsr) |
| Inform the cursor that it's the start of an SQL statement. More... | |
| ib_err_t | ib_tuple_write_double (ib_tpl_t ib_tpl, int col_no, double val) |
| Write a double value to a column. More... | |
| ib_err_t | ib_tuple_read_double (ib_tpl_t ib_tpl, uint64_t col_no, double *dval) |
| Read a double column value from an InnoDB tuple. More... | |
| ib_err_t | ib_tuple_write_float (ib_tpl_t ib_tpl, uint64_t col_no, float val) |
| ib_err_t | ib_tuple_read_float (ib_tpl_t ib_tpl, ulint col_no, float *fval) |
| Read a float value from an InnoDB tuple. More... | |
| ib_trx_level_t | ib_cfg_trx_level () |
| Return isolation configuration set by "innodb_api_trx_level". More... | |
| uint64_t | ib_cfg_bk_commit_interval () |
| Return configure value for background commit interval (in seconds) More... | |
| int | ib_cfg_get_cfg () |
| Get generic configure status. More... | |
| const char * | ib_ut_strerr (ib_err_t num) |
| Wrapper of ut_strerr() which converts an InnoDB error number to a human readable text message. More... | |
| static ib_err_t | ib_cursor_open_table_using_id (ib_id_u64_t table_id, ib_trx_t ib_trx, ib_crsr_t *ib_crsr) |
| Open an InnoDB table and return a cursor handle to it. More... | |
| static ib_tpl_t | ib_sdi_create_search_tuple (ib_crsr_t ib_crsr, const sdi_key_t *sdi_key) |
| Create a tuple to search from SDI table. More... | |
| static ib_tpl_t | ib_sdi_create_insert_tuple (ib_crsr_t ib_crsr, const sdi_key_t *sdi_key, uint32_t uncomp_len, uint32_t comp_len, const void *sdi) |
| Create a tuple to insert into SDI table. More... | |
| static ib_err_t | ib_sdi_open_table (uint32_t tablespace_id, trx_t *trx, ib_crsr_t *ib_crsr) |
| Open SDI table. More... | |
| dberr_t | ib_sdi_set (uint32_t tablespace_id, const ib_sdi_key_t *ib_sdi_key, uint32_t uncomp_len, uint32_t comp_len, const void *sdi, trx_t *trx) |
| Insert/Update SDI in tablespace. More... | |
| dberr_t | ib_sdi_get_keys (uint32_t tablespace_id, ib_sdi_vector_t *ib_sdi_vector, trx_t *trx) |
| Get the SDI keys in a tablespace into vector. More... | |
| dberr_t | ib_sdi_get (uint32_t tablespace_id, const ib_sdi_key_t *ib_sdi_key, void *comp_sdi, uint32_t *comp_sdi_len, uint32_t *uncomp_sdi_len, trx_t *trx) |
| Retrieve SDI from tablespace. More... | |
| ib_err_t | ib_sdi_delete (uint32_t tablespace_id, const ib_sdi_key_t *ib_sdi_key, trx_t *trx) |
| Delete SDI from tablespace. More... | |
| ib_err_t | ib_sdi_create (space_id_t tablespace_id) |
| Create SDI in a tablespace. More... | |
| ib_err_t | ib_sdi_drop (space_id_t tablespace_id) |
| Drop SDI Index from tablespace. More... | |
| ib_err_t | ib_sdi_flush (space_id_t space_id) |
| Flush SDI in a tablespace. More... | |
Variables | |
| bool | ib_binlog_enabled = false |
| configure variable for binlog option with InnoDB APIs More... | |
| bool | ib_mdl_enabled = false |
| configure variable for MDL option with InnoDB APIs More... | |
| bool | ib_disable_row_lock = false |
| configure variable for disable rowlock with InnoDB APIs More... | |
| ulong | ib_trx_level_setting = IB_TRX_READ_UNCOMMITTED |
| configure variable for Transaction isolation levels More... | |
| ulong | ib_bk_commit_interval = 0 |
| configure variable for background commit interval in seconds More... | |
| constexpr uint32_t | INNOBASE_WAKE_INTERVAL = 32 |
| The following counter is used to convey information to InnoDB about server activity: in case of normal DML ops it is not sensible to call srv_active_wake_master_thread after each operation, we only do it every INNOBASE_WAKE_INTERVAL'th step. More... | |
InnoDB Native API.
2008-08-01 Created Sunny Bains 3/20/2011 Jimmy Yang extracted from Embedded InnoDB
| enum ib_qry_type_t |
| enum ib_tuple_type_t |
|
inlinestatic |
Check whether the InnoDB persistent cursor is positioned.
| pcur | in: InnoDB persistent cursor |
|
static |
Checks which fields have changed in a row and stores the new data to an update vector.
| cursor | in: current cursor |
| upd | in/out: update vector |
| old_tuple | in: Old tuple in table |
| new_tuple | in: New tuple to update |
| uint64_t ib_cfg_bk_commit_interval | ( | ) |
Return configure value for background commit interval (in seconds)
| int ib_cfg_get_cfg | ( | ) |
Get generic configure status.
| ib_trx_level_t ib_cfg_trx_level | ( | ) |
Return isolation configuration set by "innodb_api_trx_level".
Create an InnoDB tuple for table row operations.
| ib_crsr | in: Cursor instance |
Create an InnoDB tuple used for table key operations.
| ib_crsr | in: Cursor instance |
| uint64_t ib_col_copy_value | ( | ib_tpl_t | ib_tpl, |
| ib_ulint_t | i, | ||
| void * | dst, | ||
| uint32_t | len | ||
| ) |
Copy a column value from the tuple.
| [in] | ib_tpl | tuple instance |
| [in] | i | in column index in tuple |
| [out] | dst | copied data value |
| [in] | len | max data value len to copy |
|
inlinestatic |
Get the InnoDB column attribute from the internal column precise type.
| prtype | in: column definition |
|
inlinestatic |
Get the dfield instance for the column in the tuple.
| tuple | in: tuple instance |
| col_no | in: col no. in tuple |
| uint64_t ib_col_get_len | ( | ib_tpl_t | ib_tpl, |
| ib_ulint_t | i | ||
| ) |
Get the size of the data available in the column the tuple.
| [in] | ib_tpl | tuple instance |
| [in] | i | column index in tuple |
| uint64_t ib_col_get_meta | ( | ib_tpl_t | ib_tpl, |
| ib_ulint_t | i, | ||
| ib_col_meta_t * | ib_col_meta | ||
| ) |
Get a column type, length and attributes from the tuple.
| [in] | ib_tpl | InnoDB tuple |
| [in] | i | column number |
| [out] | ib_col_meta | column meta data |
| const char * ib_col_get_name | ( | ib_crsr_t | ib_crsr, |
| ib_ulint_t | i | ||
| ) |
Get a column type, length and attributes from the tuple.
| [in] | ib_crsr | InnoDB cursor instance |
| [in] | i | column index in tuple |
| const void * ib_col_get_value | ( | ib_tpl_t | ib_tpl, |
| ib_ulint_t | i | ||
| ) |
Get a column value pointer from the tuple.
| [in] | ib_tpl | tuple instance |
| [in] | i | column index in tuple |
Predicate to check whether a column type contains variable length data.
| dtype | in: column type |
| ib_err_t ib_col_set_value | ( | ib_tpl_t | ib_tpl, |
| ib_ulint_t | col_no, | ||
| const void * | src, | ||
| uint64_t | len, | ||
| bool | need_cpy | ||
| ) |
Set a column of the tuple.
Make a copy using the tuple's heap.
| [in] | ib_tpl | tuple instance |
| [in] | col_no | column index in tuple |
| [in] | src | data value |
| [in] | len | data value len |
| [in] | need_cpy | if need memcpy |
|
static |
Create an internal cursor instance.
| ib_crsr | out: InnoDB cursor |
| table | in: table instance |
| index | in: index to use |
| trx | in: transaction |
|
static |
Create an internal cursor instance on the clustered index.
| [out] | ib_crsr | InnoDB cursor |
| [in,out] | table | table instance |
| [in,out] | trx | transaction |
Close an InnoDB table and free the cursor.
| ib_crsr | in,own: InnoDB cursor |
Commit the transaction in a cursor.
| ib_crsr | in/out: InnoDB cursor |
| ib_trx | in: transaction |
Delete a row in a table.
| ib_crsr | in: InnoDB cursor instance |
Move cursor to the first record in the table.
| ib_crsr | in: InnoDB cursor instance |
Insert a row to a table.
| ib_crsr | in/out: InnoDB cursor instance |
| ib_tpl | in: tuple to insert |
| bool ib_cursor_is_positioned | ( | const ib_crsr_t | ib_crsr | ) |
Check if cursor is positioned.
| [in] | ib_crsr | InnoDB cursor instance |
| ib_err_t ib_cursor_lock | ( | ib_crsr_t | ib_crsr, |
| ib_lck_mode_t | ib_lck_mode | ||
| ) |
Set the Lock an InnoDB cursor/table.
Lock an InnoDB cursor/table.
| ib_crsr | in/out: InnoDB cursor |
| ib_lck_mode | in: InnoDB lock mode |
| ib_err_t ib_cursor_moveto | ( | ib_crsr_t | ib_crsr, |
| ib_tpl_t | ib_tpl, | ||
| ib_srch_mode_t | ib_srch_mode, | ||
| uint64_t | direction | ||
| ) |
Search for key.
| ib_crsr | in: InnoDB cursor instance |
| ib_tpl | in: Key to search for |
| ib_srch_mode | in: search mode |
| direction | in: search direction |
update the cursor with new transactions and also reset the cursor
| ib_crsr | in/out: InnoDB cursor |
| ib_trx | in: transaction |
Move cursor to the next user record in the table.
Move cursor to the next record in the table.
| ib_crsr | in: InnoDB cursor instance |
| ib_err_t ib_cursor_open_index_using_name | ( | ib_crsr_t | ib_open_crsr, |
| const char * | index_name, | ||
| ib_crsr_t * | ib_crsr, | ||
| int * | idx_type, | ||
| ib_id_u64_t * | idx_id | ||
| ) |
Open an InnoDB secondary index cursor and return a cursor handle to it.
| ib_open_crsr | in: open/active cursor |
| index_name | in: secondary index name |
| ib_crsr | out,own: InnoDB index cursor |
| idx_type | out: index is cluster index |
| idx_id | out: index id |
Open an InnoDB table and return a cursor handle to it.
Open an InnoDB table by name and return a cursor handle to it.
| name | in: table name |
| ib_trx | in: Current transaction handle can be NULL |
| ib_crsr | out,own: InnoDB cursor |
|
static |
Open an InnoDB table and return a cursor handle to it.
| table_id | in: table id of table to open |
| ib_trx | in: Current transaction handle can be NULL |
| ib_crsr | out,own: InnoDB cursor |
|
inlinestatic |
Move cursor to the first record in the table.
| cursor | in: InnoDB cursor instance |
| mode | in: Search mode |
| ib_err_t ib_cursor_read_row | ( | ib_crsr_t | ib_crsr, |
| ib_tpl_t | ib_tpl, | ||
| ib_tpl_t | cmp_tpl, | ||
| int | mode, | ||
| void ** | row_buf, | ||
| uint64_t * | slot, | ||
| uint64_t * | used_len | ||
| ) |
Read current row.
| ib_crsr | in: InnoDB cursor instance |
| ib_tpl | out: read cols into this tuple |
| cmp_tpl | in: tuple to compare and stop reading |
| mode | in: mode determine when to stop read |
| row_buf | in/out: row buffer |
| slot | in/out: slot being used |
| used_len | in/out: buffer len used |
Reset the cursor.
| ib_crsr | in/out: InnoDB cursor |
| void ib_cursor_set_cluster_access | ( | ib_crsr_t | ib_crsr | ) |
Set need to access clustered index record.
Set need to access clustered index record flag.
| ib_crsr | in/out: InnoDB cursor |
| ib_err_t ib_cursor_set_lock_mode | ( | ib_crsr_t | ib_crsr, |
| ib_lck_mode_t | ib_lck_mode | ||
| ) |
Set the Lock mode of the cursor.
| ib_crsr | in/out: InnoDB cursor |
| ib_lck_mode | in: InnoDB lock mode |
| void ib_cursor_set_match_mode | ( | ib_crsr_t | ib_crsr, |
| ib_match_mode_t | match_mode | ||
| ) |
Set the cursor search mode.
Set the match mode for ib_cursor_move().
| ib_crsr | in: Cursor instance |
| match_mode | in: ib_cursor_moveto match mode |
| void ib_cursor_stmt_begin | ( | ib_crsr_t | ib_crsr | ) |
Inform the cursor that it's the start of an SQL statement.
| [in,out] | ib_crsr | InnoDB cursor |
| ib_crsr | in: cursor |
| ib_err_t ib_cursor_update_row | ( | ib_crsr_t | ib_crsr, |
| const ib_tpl_t | ib_old_tpl, | ||
| const ib_tpl_t | ib_new_tpl | ||
| ) |
Update a row in a table.
| ib_crsr | in: InnoDB cursor instance |
| ib_old_tpl | in: Old tuple in table |
| ib_new_tpl | in: New tuple to update |
|
static |
Build the update query graph to delete a row from an index.
| cursor | in: current cursor |
| pcur | in: Btree persistent cursor |
| rec | in: record to delete |
|
static |
Write a row.
| table | in: table where to insert |
| ins_graph | in: query graph |
| node | in: insert node |
|
inlinestatic |
Does an update or delete of a row.
| cursor | in: Cursor instance |
| pcur | in: Btree persistent cursor |
| const char * ib_get_idx_field_name | ( | ib_crsr_t | ib_crsr, |
| ib_ulint_t | i | ||
| ) |
Get an index field name from the cursor.
| [in] | ib_crsr | InnoDB cursor instance |
| [in] | i | column index in tuple |
|
static |
Create an insert query graph node.
| cursor | in: Cursor instance |
|
inlinestatic |
Run the insert query and do error handling.
| thr | in: insert query graph |
| node | in: insert node for the query |
| savept | in: savepoint to rollback to in case of an error |
| bool ib_is_virtual_table | ( | ib_crsr_t | crsr | ) |
Check the table whether it contains virtual columns.
| [in] | crsr | InnoDB Cursor |
|
static |
Create an InnoDB key tuple.
| index | in: index of tuple |
| n_cols | in: no. of user defined cols |
|
static |
Create an InnoDB key tuple.
| index | in: index for which tuple required |
| n_cols | in: no. of user defined cols |
| heap | in: memory heap |
|
static |
Find table using table name.
| name | in: table name to lookup |
|
static |
Normalizes a table name string.
A normalized name consists of the database name catenated to '/' and table name. An example: test/mytable. On Windows normalization puts both the database name and the table name always to lower case. This function can be called for system tables and they don't have a database component. For tables that don't have a database component, we don't normalize them to lower case on Windows. The assumption is that they are system tables that reside in the system table space.
| norm_name | out: normalized name as a null-terminated string |
| name | in: table name string |
|
static |
Free a context struct for a table handle.
| q_proc | in, own: qproc struct |
|
static |
Read the columns from a rec into a tuple.
| rec | in: Record to read |
| page_format | in: true if compressed format |
| tuple | in: tuple to read into |
| cmp_tuple | in: tuple to compare and stop reading |
| mode | in: mode determine when to stop read |
| rec_buf_list | in/out: row buffer |
| cur_slot | in/out: buffer slot being used |
| used_len | in/out: used buf len |
|
static |
Create an InnoDB row tuple.
| index | in: index of tuple |
| n_cols | in: no. of cols in tuple |
|
static |
Create an InnoDB row tuple.
| index | in: index of tuple |
| n_cols | in: no. of cols in tuple |
| heap | in: memory heap |
| bool ib_schema_lock_is_exclusive | ( | const ib_trx_t | ib_trx | ) |
Checks if the data dictionary is latched in exclusive mode.
Checks if the data dictionary is latched in exclusive mode by a user transaction.
| ib_trx | in: transaction |
| ib_err_t ib_sdi_create | ( | space_id_t | tablespace_id | ) |
Create SDI in a tablespace.
| [in] | tablespace_id | InnoDB tablespace id |
|
static |
Create a tuple to insert into SDI table.
| [in,out] | ib_crsr | InnoDB cursor |
| [in] | sdi_key | SDI Key |
| [in] | uncomp_len | uncompressed length of SDI |
| [in] | comp_len | compressed length of SDI |
| [in] | sdi | compressed SDI data |
Create a tuple to search from SDI table.
| [in,out] | ib_crsr | InnoDB cursor |
| [in,out] | sdi_key | SDI Key |
| ib_err_t ib_sdi_delete | ( | uint32_t | tablespace_id, |
| const ib_sdi_key_t * | ib_sdi_key, | ||
| trx_t * | trx | ||
| ) |
Delete SDI from tablespace.
| [in] | tablespace_id | tablespace id |
| [in] | ib_sdi_key | SDI key to uniquely identify the tablespace object |
| [in,out] | trx | innodb transaction |
| ib_err_t ib_sdi_drop | ( | space_id_t | tablespace_id | ) |
Drop SDI Index from tablespace.
This should be used only when SDI is corrupted.
| [in] | tablespace_id | InnoDB tablespace id |
| ib_err_t ib_sdi_flush | ( | space_id_t | space_id | ) |
Flush SDI in a tablespace.
The pages of a SDI Index modified by the transaction will be flushed to disk.
| [in] | space_id | tablespace id |
| dberr_t ib_sdi_get | ( | uint32_t | tablespace_id, |
| const ib_sdi_key_t * | ib_sdi_key, | ||
| void * | comp_sdi, | ||
| uint32_t * | comp_sdi_len, | ||
| uint32_t * | uncomp_sdi_len, | ||
| trx_t * | trx | ||
| ) |
Retrieve SDI from tablespace.
| [in] | tablespace_id | tablespace id |
| [in] | ib_sdi_key | SDI key |
| [in,out] | comp_sdi | in: buffer to hold the SDI BLOB out: compressed SDI retrieved from tablespace |
| [in,out] | comp_sdi_len | in: Size of memory allocated out: compressed length of SDI |
| [out] | uncomp_sdi_len | out: uncompressed length of SDI |
| [in,out] | trx | innodb transaction |
| dberr_t ib_sdi_get_keys | ( | uint32_t | tablespace_id, |
| ib_sdi_vector_t * | ib_sdi_vector, | ||
| trx_t * | trx | ||
| ) |
Get the SDI keys in a tablespace into vector.
| [in] | tablespace_id | tablespace id |
| [in,out] | ib_sdi_vector | vector to hold objects with tablespace types and ids |
| [in,out] | trx | data dictionary transaction |
|
static |
Open SDI table.
| [in] | tablespace_id | tablespace id |
| [in,out] | trx | innodb transaction |
| [in,out] | ib_crsr | InnoDB cursor |
| dberr_t ib_sdi_set | ( | uint32_t | tablespace_id, |
| const ib_sdi_key_t * | ib_sdi_key, | ||
| uint32_t | uncomp_len, | ||
| uint32_t | comp_len, | ||
| const void * | sdi, | ||
| trx_t * | trx | ||
| ) |
Insert/Update SDI in tablespace.
| [in] | tablespace_id | tablespace id |
| [in] | ib_sdi_key | SDI key to uniquely identify the tablespace object |
| [in] | uncomp_len | uncompressed length of SDI |
| [in] | comp_len | compressed length of SDI |
| [in] | sdi | compressed SDI to be stored in tablespace |
| [in,out] | trx | innodb transaction |
Create an InnoDB tuple used for index/table search.
| ib_crsr | in: Cursor instance |
Create an InnoDB tuple used for index/table search.
| ib_crsr | in: Cursor instance |
| ib_err_t ib_table_get_id | ( | const char * | table_name, |
| ib_id_u64_t * | table_id | ||
| ) |
Get a table id.
This function will acquire the dictionary mutex.
| table_name | in: table to find |
| table_id | out: table id if found |
|
static |
Get a table id.
The caller must have acquired the dictionary mutex.
| table_name | in: table to find |
| table_id | out: table id if found |
| ib_trx_t ib_trx_begin | ( | ib_trx_level_t | ib_trx_level, |
| bool | read_write, | ||
| bool | auto_commit, | ||
| void * | thd | ||
| ) |
Begin a transaction.
This will allocate a new transaction handle. put the transaction in the active state.
| ib_trx_level | in: trx isolation level |
| read_write | in: true if read write transaction |
| auto_commit | in: auto commit after each single DML |
| thd | in,out: MySQL THD |
Commit a transaction.
This function will also release the schema latches too.
| ib_trx | in: trx handle |
| uint64_t ib_trx_get_start_time | ( | ib_trx_t | ib_trx | ) |
Get a trx start time.
| ib_trx | in: transaction |
| uint32_t ib_trx_read_only | ( | ib_trx_t | ib_trx | ) |
Check if transaction is read_only.
Check if the transaction is read_only.
| ib_trx | in: trx handle |
Release the resources of the transaction.
| ib_trx | in: trx handle |
Rollback a transaction.
This function will also release the schema latches too.
| ib_trx | in: trx handle |
| ib_err_t ib_trx_start | ( | ib_trx_t | ib_trx, |
| ib_trx_level_t | ib_trx_level, | ||
| bool | read_write, | ||
| bool | auto_commit, | ||
| void * | thd | ||
| ) |
Begin a transaction.
Start a transaction that's been rolled back.
| ib_trx | in: transaction to restart |
| ib_trx_level | in: trx isolation level |
| read_write | in: true if read write transaction |
| auto_commit | in: auto commit after each single DML |
| thd | in: THD |
|
inlinestatic |
Read a signed int 8 bit column from an InnoDB tuple.
| ib_tpl | in: InnoDB tuple |
| i | in: column number |
| usign | in: true if unsigned |
| size | in: size of integer |
"Clear" or reset an InnoDB tuple.
We free the heap and recreate the tuple.
| ib_tpl | in,own: tuple (will be freed) |
| void ib_tuple_delete | ( | ib_tpl_t | ib_tpl | ) |
Destroy an InnoDB tuple.
| [in] | ib_tpl | Tuple for current table |
| ib_tpl | in,own: Tuple instance to delete |
| ib_err_t ib_tuple_get_cluster_key | ( | ib_crsr_t | ib_crsr, |
| ib_tpl_t * | ib_dst_tpl, | ||
| const ib_tpl_t | ib_src_tpl | ||
| ) |
Create a new cluster key search tuple and copy the contents of the secondary index key tuple columns that refer to the cluster index record to the cluster key.
It does a deep copy of the column data.
| ib_crsr | in: secondary index cursor |
| ib_dst_tpl | out,own: destination tuple |
| ib_src_tpl | in: source tuple |
| uint64_t ib_tuple_get_n_cols | ( | const ib_tpl_t | ib_tpl | ) |
Return the number of columns in the tuple definition.
| ib_tpl | in: Tuple for table/index |
| uint64_t ib_tuple_get_n_user_cols | ( | const ib_tpl_t | ib_tpl | ) |
Return the number of user columns in the tuple definition.
| ib_tpl | in: Tuple for current table |
Read a double column value from an InnoDB tuple.
| ib_tpl | in: InnoDB tuple |
| col_no | in: column number |
| dval | out: double value |
Read a float value from an InnoDB tuple.
| ib_tpl | in: InnoDB tuple |
| col_no | in: column number |
| fval | out: float value |
| ib_err_t ib_tuple_read_i16 | ( | ib_tpl_t | ib_tpl, |
| ib_ulint_t | i, | ||
| int16_t * | ival | ||
| ) |
Read a signed int 16 bit column from an InnoDB tuple.
| [in] | ib_tpl | InnoDB tuple |
| [in] | i | column number |
| [out] | ival | integer value |
| ib_err_t ib_tuple_read_i32 | ( | ib_tpl_t | ib_tpl, |
| ib_ulint_t | i, | ||
| int32_t * | ival | ||
| ) |
Read a signed int 32 bit column from an InnoDB tuple.
| [in] | ib_tpl | InnoDB tuple |
| [in] | i | column number |
| [out] | ival | integer value |
| ib_err_t ib_tuple_read_i64 | ( | ib_tpl_t | ib_tpl, |
| ib_ulint_t | i, | ||
| int64_t * | ival | ||
| ) |
Read a signed int 64 bit column from an InnoDB tuple.
| [in] | ib_tpl | InnoDB tuple |
| [in] | i | column number |
| [out] | ival | integer value |
| ib_err_t ib_tuple_read_i8 | ( | ib_tpl_t | ib_tpl, |
| ib_ulint_t | i, | ||
| int8_t * | ival | ||
| ) |
Read a signed int 8 bit column from an InnoDB tuple.
| [in] | ib_tpl | InnoDB tuple |
| [in] | i | column number |
| [out] | ival | integer value |
| ib_err_t ib_tuple_read_u16 | ( | ib_tpl_t | ib_tpl, |
| ib_ulint_t | i, | ||
| uint16_t * | ival | ||
| ) |
Read an unsigned int 16 bit column from an InnoDB tuple.
| [in] | ib_tpl | InnoDB tuple |
| [in] | i | column number |
| [out] | ival | integer value |
| ib_err_t ib_tuple_read_u32 | ( | ib_tpl_t | ib_tpl, |
| ib_ulint_t | i, | ||
| uint32_t * | ival | ||
| ) |
Read an unsigned int 32 bit column from an InnoDB tuple.
| [in] | ib_tpl | InnoDB tuple |
| [in] | i | column number |
| [out] | ival | integer value |
| ib_err_t ib_tuple_read_u64 | ( | ib_tpl_t | ib_tpl, |
| ib_ulint_t | i, | ||
| uint64_t * | ival | ||
| ) |
Read an unsigned int 64 bit column from an InnoDB tuple.
| [in] | ib_tpl | InnoDB tuple |
| [in] | i | column number |
| [out] | ival | integer value |
| ib_err_t ib_tuple_read_u8 | ( | ib_tpl_t | ib_tpl, |
| ib_ulint_t | i, | ||
| uint8_t * | ival | ||
| ) |
Read an unsigned int 8 bit column from an InnoDB tuple.
| [in] | ib_tpl | InnoDB tuplr |
| [in] | i | column number |
| [out] | ival | integer value |
Write a double value to a column.
| ib_tpl | in/out: tuple to write to |
| col_no | in: column number |
| val | in: value to write |
|
static |
Note that a column has changed.
| cursor | in: current cursor |
| upd_field | in/out: update field |
| col_no | in: column number |
| dfield | in: updated dfield |
|
inlinestatic |
Run the update query and do error handling.
| thr | in: Update query graph |
| node | in: Update node for the query |
| savept | in: savepoint to rollback to in case of an error |
|
inlinestatic |
Gets pointer to a prebuilt update vector used in updates.
| cursor | in: current cursor |
| const char * ib_ut_strerr | ( | ib_err_t | num | ) |
Wrapper of ut_strerr() which converts an InnoDB error number to a human readable text message.
| num | in: error number |
|
inlinestatic |
Increments innobase_active_counter and every INNOBASE_WAKE_INTERVALth time calls srv_active_wake_master_thread.
This function should be used when a single database operation may introduce a small need for server utility activity, like checkpointing.
| bool ib_binlog_enabled = false |
configure variable for binlog option with InnoDB APIs
Whether binlog is enabled for applications using InnoDB APIs.
| ulong ib_bk_commit_interval = 0 |
configure variable for background commit interval in seconds
configure value for background commit interval (in seconds)
| bool ib_disable_row_lock = false |
configure variable for disable rowlock with InnoDB APIs
Whether InnoDB row lock is disabled for applications using InnoDB APIs.
| bool ib_mdl_enabled = false |
configure variable for MDL option with InnoDB APIs
Whether MySQL MDL is enabled for applications using InnoDB APIs.
| ulong ib_trx_level_setting = IB_TRX_READ_UNCOMMITTED |
configure variable for Transaction isolation levels
configure value for transaction isolation level
|
constexpr |
The following counter is used to convey information to InnoDB about server activity: in case of normal DML ops it is not sensible to call srv_active_wake_master_thread after each operation, we only do it every INNOBASE_WAKE_INTERVAL'th step.