MySQL 9.1.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.