MySQL  8.0.19
Source Code Documentation
api0api.h File Reference
#include <stdio.h>
#include "config.h"
#include "db0err.h"
#include <stdint.h>

Go to the source code of this file.

Classes

struct  ib_col_meta_t
 InnoDB column meta data. More...
 

Macros

#define UNIV_NO_IGNORE
 
#define IB_TRUE   0x1UL
 The boolean value of "true" used internally within InnoDB. More...
 
#define IB_FALSE   0x0UL
 The boolean value of "false" used internally within InnoDB. More...
 
#define IB_CFG_BINLOG_ENABLED   0x1
 
#define IB_CFG_MDL_ENABLED   0x2
 
#define IB_CFG_DISABLE_ROWLOCK   0x4
 
#define IB_SQL_NULL   0xFFFFFFFF
 Represents SQL_NULL length. More...
 
#define ONLY_FOR_MEMCACHED_SDI(x)
 
#define FOR_EACH_API_METHOD_NAME_STEM(transform)
 

Typedefs

typedef uint32 page_no_t
 Page number. More...
 
typedef uint32 space_id_t
 Tablespace identifier. More...
 
typedef struct ib_sdi_key ib_sdi_key_t
 
typedef struct ib_sdi_vector ib_sdi_vector_t
 
typedef enum dberr_t ib_err_t
 All InnoDB error codes are represented by ib_err_t. More...
 
typedef unsigned char ib_byte_t
 Representation of a byte within InnoDB. More...
 
typedef unsigned long int ib_ulint_t
 Representation of an unsigned long int within InnoDB. More...
 
typedef int8_t ib_i8_t
 A signed 8 bit integral type. More...
 
typedef uint8_t ib_u8_t
 An unsigned 8 bit integral type. More...
 
typedef int16_t ib_i16_t
 A signed 16 bit integral type. More...
 
typedef uint16_t ib_u16_t
 An unsigned 16 bit integral type. More...
 
typedef int32_t ib_i32_t
 A signed 32 bit integral type. More...
 
typedef uint32_t ib_u32_t
 An unsigned 32 bit integral type. More...
 
typedef int64_t ib_i64_t
 A signed 64 bit integral type. More...
 
typedef uint64_t ib_u64_t
 An unsigned 64 bit integral type. More...
 
typedef void * ib_opaque_t
 
typedef ib_opaque_t ib_charset_t
 
typedef ib_ulint_t ib_bool_t
 
typedef ib_u64_t ib_id_u64_t
 
typedef void(* ib_cb_t) (void)
 Generical InnoDB callback prototype. More...
 
typedef FILE * ib_msg_stream_t
 The first argument to the InnoDB message logging function. More...
 
typedef int(* ib_msg_log_t) (ib_msg_stream_t, const char *,...)
 All log messages are written to this function.It should have the same behavior as fprintf(3). More...
 
typedef struct ib_tuple_tib_tpl_t
 InnoDB tuple handle. More...
 
typedef struct trx_tib_trx_t
 InnoDB transaction handle, all database operations need to be covered by transactions. More...
 
typedef struct ib_cursor_tib_crsr_t
 InnoDB cursor handle. More...
 
typedef int(* ib_client_cmp_t) (const ib_col_meta_t *col_meta, const ib_byte_t *p1, ib_ulint_t p1_len, const ib_byte_t *p2, ib_ulint_t p2_len)
 This function is used to compare two data fields for which the data type is such that we must use the client code to compare them. More...
 

Enumerations

enum  ib_cfg_type_t {
  IB_CFG_IBOOL, IB_CFG_ULINT, IB_CFG_ULONG, IB_CFG_TEXT,
  IB_CFG_CB
}
 
enum  ib_col_type_t {
  IB_VARCHAR = 1, IB_CHAR = 2, IB_BINARY = 3, IB_VARBINARY = 4,
  IB_BLOB = 5, IB_INT = 6, IB_SYS = 8, IB_FLOAT = 9,
  IB_DOUBLE = 10, IB_DECIMAL = 11, IB_VARCHAR_ANYCHARSET = 12, IB_CHAR_ANYCHARSET = 13
}
 
enum  ib_tbl_fmt_t { IB_TBL_REDUNDANT, IB_TBL_COMPACT, IB_TBL_DYNAMIC, IB_TBL_COMPRESSED }
 
enum  ib_col_attr_t {
  IB_COL_NONE = 0, IB_COL_NOT_NULL = 1, IB_COL_UNSIGNED = 2, IB_COL_NOT_USED = 4,
  IB_COL_CUSTOM1 = 8, IB_COL_CUSTOM2 = 16, IB_COL_CUSTOM3 = 32
}
 
enum  ib_lck_mode_t {
  IB_LOCK_IS = 0, IB_LOCK_IX, IB_LOCK_S, IB_LOCK_X,
  IB_LOCK_TABLE_X, IB_LOCK_NONE, IB_LOCK_NUM = IB_LOCK_NONE
}
 
enum  ib_index_type_t { IB_CLUSTERED = 1, IB_UNIQUE = 2 }
 
enum  ib_srch_mode_t { IB_CUR_G = 1, IB_CUR_GE = 2, IB_CUR_L = 3, IB_CUR_LE = 4 }
 
enum  ib_match_mode_t { IB_CLOSEST_MATCH, IB_EXACT_MATCH, IB_EXACT_PREFIX }
 
enum  ib_trx_level_t { IB_TRX_READ_UNCOMMITTED = 0, IB_TRX_READ_COMMITTED = 1, IB_TRX_REPEATABLE_READ = 2, IB_TRX_SERIALIZABLE = 3 }
 

Functions

ib_err_t ib_trx_start (ib_trx_t ib_trx, ib_trx_level_t ib_trx_level, ib_bool_t read_write, ib_bool_t auto_commit, void *thd)
 Start a transaction that's been rolled back. More...
 
ib_trx_t ib_trx_begin (ib_trx_level_t ib_trx_level, ib_bool_t read_write, ib_bool_t auto_commit, void *thd)
 Begin a transaction. More...
 
ib_u32_t ib_trx_read_only (ib_trx_t ib_trx)
 Check if the transaction is read_only. 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...
 
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 by name and return a cursor handle to it. More...
 
ib_err_t ib_cursor_reset (ib_crsr_t ib_crsr)
 Reset the cursor. More...
 
ib_err_t ib_cursor_close (ib_crsr_t ib_crsr)
 Close an InnoDB table and free 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_insert_row (ib_crsr_t ib_crsr, const ib_tpl_t ib_tpl)
 Insert a row to a table. 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...
 
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, ib_ulint_t *row_len, ib_ulint_t *used_len)
 Read current row. 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 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, ib_ulint_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 match mode for ib_cursor_move(). More...
 
ib_err_t ib_col_set_value (ib_tpl_t ib_tpl, ib_ulint_t col_no, const void *src, ib_ulint_t len, ib_bool_t need_cpy)
 Set a column of the tuple. More...
 
ib_ulint_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...
 
ib_ulint_t ib_col_copy_value (ib_tpl_t ib_tpl, ib_ulint_t i, void *dst, ib_ulint_t len)
 Copy a column value from the tuple. More...
 
ib_err_t ib_tuple_read_i8 (ib_tpl_t ib_tpl, ib_ulint_t i, ib_i8_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, ib_u8_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, ib_i16_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, ib_u16_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, ib_i32_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, ib_u32_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, ib_i64_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, ib_u64_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_ulint_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. 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...
 
ib_ulint_t ib_tuple_get_n_user_cols (const ib_tpl_t ib_tpl)
 Return the number of user columns in the tuple definition. More...
 
ib_ulint_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...
 
ib_bool_t ib_cursor_is_positioned (const ib_crsr_t ib_crsr)
 Check if cursor is positioned. More...
 
ib_bool_t ib_schema_lock_is_exclusive (const ib_trx_t ib_trx)
 Checks if the data dictionary is latched in exclusive mode by a user transaction. More...
 
ib_err_t ib_cursor_lock (ib_crsr_t ib_crsr, ib_lck_mode_t ib_lck_mode)
 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 flag. 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, ib_ulint_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, int col_no, float val)
 Write a float value to a column. More...
 
ib_err_t ib_tuple_read_float (ib_tpl_t ib_tpl, ib_ulint_t col_no, float *fval)
 Read a float value from an InnoDB tuple. More...
 
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. More...
 
const char * ib_get_idx_field_name (ib_crsr_t ib_crsr, ib_ulint_t i)
 Get an index field name from the cursor. More...
 
int ib_cfg_get_cfg ()
 Get generic configure status. More...
 
ib_trx_level_t ib_cfg_trx_level ()
 Return isolation configuration set by "innodb_api_trx_level". More...
 
ib_ulint_t ib_cfg_bk_commit_interval ()
 Return configure value for background commit interval (in seconds) More...
 
ib_u64_t ib_trx_get_start_time (ib_trx_t ib_trx)
 Get a trx start time. 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...
 
ib_err_t ib_sdi_get_keys (uint32_t tablespace_id, ib_sdi_vector_t *ib_sdi_vector, ib_trx_t trx)
 Get the SDI keys in a tablespace into vector. More...
 
ib_err_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, ib_trx_t trx)
 Retrieve SDI from tablespace. More...
 
ib_err_t ib_sdi_set (uint32_t tablespace_id, const ib_sdi_key_t *sdi_key, uint32_t uncomp_len, uint32_t comp_len, const void *sdi, ib_trx_t trx)
 Insert/Update SDI in tablespace. More...
 
ib_err_t ib_sdi_delete (uint32_t tablespace_id, const ib_sdi_key_t *sdi_key, ib_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...
 
ib_bool_t ib_is_virtual_table (ib_crsr_t crsr)
 Check the table whether it contains virtual columns. More...
 

Detailed Description

InnoDB Native API

2008-08-01 Created by Sunny Bains. 3/20/2011 Jimmy Yang extracted from Embedded InnoDB

Macro Definition Documentation

◆ FOR_EACH_API_METHOD_NAME_STEM

#define FOR_EACH_API_METHOD_NAME_STEM (   transform)

◆ IB_CFG_BINLOG_ENABLED

#define IB_CFG_BINLOG_ENABLED   0x1

◆ IB_CFG_DISABLE_ROWLOCK

#define IB_CFG_DISABLE_ROWLOCK   0x4

◆ IB_CFG_MDL_ENABLED

#define IB_CFG_MDL_ENABLED   0x2

◆ IB_FALSE

#define IB_FALSE   0x0UL

The boolean value of "false" used internally within InnoDB.

◆ IB_SQL_NULL

#define IB_SQL_NULL   0xFFFFFFFF

Represents SQL_NULL length.

◆ IB_TRUE

#define IB_TRUE   0x1UL

The boolean value of "true" used internally within InnoDB.

◆ ONLY_FOR_MEMCACHED_SDI

#define ONLY_FOR_MEMCACHED_SDI (   x)

◆ UNIV_NO_IGNORE

#define UNIV_NO_IGNORE

Typedef Documentation

◆ ib_bool_t

◆ ib_byte_t

typedef unsigned char ib_byte_t

Representation of a byte within InnoDB.

◆ ib_cb_t

typedef void(* ib_cb_t) (void)

Generical InnoDB callback prototype.

◆ ib_charset_t

◆ ib_client_cmp_t

typedef int(* ib_client_cmp_t) (const ib_col_meta_t *col_meta, const ib_byte_t *p1, ib_ulint_t p1_len, const ib_byte_t *p2, ib_ulint_t p2_len)

This function is used to compare two data fields for which the data type is such that we must use the client code to compare them.

Parameters
col_metacolumn meta data
p1key
p1_lenkey length
p2second key
p2_lensecond key length
Returns
1, 0, -1, if a is greater, equal, less than b, respectively

◆ ib_crsr_t

typedef struct ib_cursor_t* ib_crsr_t

InnoDB cursor handle.

◆ ib_err_t

typedef enum dberr_t ib_err_t

All InnoDB error codes are represented by ib_err_t.

◆ ib_i16_t

typedef int16_t ib_i16_t

A signed 16 bit integral type.

◆ ib_i32_t

typedef int32_t ib_i32_t

A signed 32 bit integral type.

◆ ib_i64_t

typedef int64_t ib_i64_t

A signed 64 bit integral type.

◆ ib_i8_t

typedef int8_t ib_i8_t

A signed 8 bit integral type.

◆ ib_id_u64_t

◆ ib_msg_log_t

typedef int(* ib_msg_log_t) (ib_msg_stream_t, const char *,...)

All log messages are written to this function.It should have the same behavior as fprintf(3).

◆ ib_msg_stream_t

typedef FILE* ib_msg_stream_t

The first argument to the InnoDB message logging function.

By default it's set to stderr. You should treat ib_msg_stream_t as a void*, since it will probably change in the future.

◆ ib_opaque_t

typedef void* ib_opaque_t

◆ ib_sdi_key_t

typedef struct ib_sdi_key ib_sdi_key_t

◆ ib_sdi_vector_t

◆ ib_tpl_t

typedef struct ib_tuple_t* ib_tpl_t

InnoDB tuple handle.

This handle can refer to either a cluster index tuple or a secondary index tuple. There are two types of tuples for each type of index, making a total of four types of tuple handles. There is a tuple for reading the entire row contents and another for searching on the index key.

◆ ib_trx_t

typedef struct trx_t* ib_trx_t

InnoDB transaction handle, all database operations need to be covered by transactions.

This handle represents a transaction. The handle can be created with ib_trx_begin(), you commit your changes with ib_trx_commit() and undo your changes using ib_trx_rollback(). If the InnoDB deadlock monitor rolls back the transaction then you need to free the transaction using the function ib_trx_release(). You can query the state of an InnoDB transaction by calling ib_trx_state().

◆ ib_u16_t

typedef uint16_t ib_u16_t

An unsigned 16 bit integral type.

◆ ib_u32_t

typedef uint32_t ib_u32_t

An unsigned 32 bit integral type.

◆ ib_u64_t

typedef uint64_t ib_u64_t

An unsigned 64 bit integral type.

◆ ib_u8_t

typedef uint8_t ib_u8_t

An unsigned 8 bit integral type.

◆ ib_ulint_t

typedef unsigned long int ib_ulint_t

Representation of an unsigned long int within InnoDB.

◆ page_no_t

typedef uint32 page_no_t

Page number.

◆ space_id_t

typedef uint32 space_id_t

Tablespace identifier.

Enumeration Type Documentation

◆ ib_cfg_type_t

Possible types for a configuration variable.

Enumerator
IB_CFG_IBOOL 

The configuration parameter is of type ibool.

IB_CFG_ULINT 

The configuration parameter is of type ulint.

IB_CFG_ULONG 

The configuration parameter is of type ulong.

IB_CFG_TEXT 

The configuration parameter is of type char*.

IB_CFG_CB 

The configuration parameter is a callback parameter.

◆ ib_col_attr_t

InnoDB column attributes

Enumerator
IB_COL_NONE 

No special attributes.

IB_COL_NOT_NULL 

Column data can't be NULL.

IB_COL_UNSIGNED 

Column is IB_INT and unsigned.

IB_COL_NOT_USED 

Future use, reserved.

IB_COL_CUSTOM1 

Custom precision type, this is a bit that is ignored by InnoDB and so can be set and queried by users.

IB_COL_CUSTOM2 

Custom precision type, this is a bit that is ignored by InnoDB and so can be set and queried by users.

IB_COL_CUSTOM3 

Custom precision type, this is a bit that is ignored by InnoDB and so can be set and queried by users.

◆ ib_col_type_t

column types that are supported.

Enumerator
IB_VARCHAR 

Character varying length.

The column is not padded.

IB_CHAR 

Fixed length character string.

The column is padded to the right.

IB_BINARY 

Fixed length binary, similar to IB_CHAR but the column is not padded to the right.

IB_VARBINARY 

Variable length binary.

IB_BLOB 

Binary large object, or a TEXT type.

IB_INT 

Integer: can be any size from 1 - 8 bytes.

If the size is 1, 2, 4 and 8 bytes then you can use the typed read and write functions. For other sizes you will need to use the ib_col_get_value() function and do the conversion yourself.

IB_SYS 

System column, this column can be one of DATA_TRX_ID, DATA_ROLL_PTR or DATA_ROW_ID.

IB_FLOAT 

C (float) floating point value.

IB_DOUBLE 
IB_DECIMAL 

C (double) floating point value.

Decimal stored as an ASCII string

IB_VARCHAR_ANYCHARSET 

Any charset, varying length.

IB_CHAR_ANYCHARSET 

Any charset, fixed length.

◆ ib_index_type_t

Enumerator
IB_CLUSTERED 

clustered index

IB_UNIQUE 

unique index

◆ ib_lck_mode_t

InnoDB lock modes.

Enumerator
IB_LOCK_IS 

Intention shared, an intention lock should be used to lock tables.

IB_LOCK_IX 

Intention exclusive, an intention lock should be used to lock tables.

IB_LOCK_S 

Shared locks should be used to lock rows.

IB_LOCK_X 

Exclusive locks should be used to lock rows.

IB_LOCK_TABLE_X 

exclusive table lock

IB_LOCK_NONE 

This is used internally to note consistent read.

IB_LOCK_NUM 

number of lock modes

◆ ib_match_mode_t

Various match modes used by ib_cursor_moveto()

Enumerator
IB_CLOSEST_MATCH 

Closest match possible.

IB_EXACT_MATCH 

Search using a complete key value.

IB_EXACT_PREFIX 

Search using a key prefix which must match to rows: the prefix may contain an incomplete field (the last field in prefix may be just a prefix of a fixed length column)

◆ ib_srch_mode_t

InnoDB cursor search modes for ib_cursor_moveto(). Note: Values must match those found in page0cur.h

Enumerator
IB_CUR_G 

If search key is not found then position the cursor on the row that is greater than the search key.

IB_CUR_GE 

If the search key not found then position the cursor on the row that is greater than or equal to the search key.

IB_CUR_L 

If search key is not found then position the cursor on the row that is less than the search key.

IB_CUR_LE 

If search key is not found then position the cursor on the row that is less than or equal to the search key.

◆ ib_tbl_fmt_t

InnoDB table format types

Enumerator
IB_TBL_REDUNDANT 

Redundant row format, the column type and length is stored in the row.

IB_TBL_COMPACT 

Compact row format, the column type is not stored in the row.

The length is stored in the row but the storage format uses a compact format to store the length of the column data and record data storage format also uses less storage.

IB_TBL_DYNAMIC 

Compact row format.

BLOB prefixes are not stored in the clustered index

IB_TBL_COMPRESSED 

Similar to dynamic format but with pages compressed.

◆ ib_trx_level_t

Transaction isolation levels

Enumerator
IB_TRX_READ_UNCOMMITTED 

Dirty read: non-locking SELECTs are performed so that we do not look at a possible earlier version of a record; thus they are not 'consistent' reads under this isolation level; otherwise like level 2.

IB_TRX_READ_COMMITTED 

Somewhat Oracle-like isolation, except that in range UPDATE and DELETE we must block phantom rows with next-key locks; SELECT ...

FOR UPDATE and ... LOCK IN SHARE MODE only lock the index records, NOT the gaps before them, and thus allow free inserting; each consistent read reads its own snapshot

IB_TRX_REPEATABLE_READ 

All consistent reads in the same trx read the same snapshot; full next-key locking used in locking reads to block insertions into gaps.

IB_TRX_SERIALIZABLE 

All plain SELECTs are converted to LOCK IN SHARE MODE reads.

Function Documentation

◆ ib_cfg_bk_commit_interval()

ib_ulint_t ib_cfg_bk_commit_interval ( )

Return configure value for background commit interval (in seconds)

Returns
background commit interval (in seconds)

◆ ib_cfg_get_cfg()

int ib_cfg_get_cfg ( )

Get generic configure status.

Returns
configure status

◆ ib_cfg_trx_level()

ib_trx_level_t ib_cfg_trx_level ( )

Return isolation configuration set by "innodb_api_trx_level".

Returns
trx isolation level

◆ ib_clust_read_tuple_create()

ib_tpl_t ib_clust_read_tuple_create ( ib_crsr_t  ib_crsr)

Create an InnoDB tuple for table row operations.

Returns
tuple for current table in: Cursor instance
own: Tuple for current table

◆ ib_clust_search_tuple_create()

ib_tpl_t ib_clust_search_tuple_create ( ib_crsr_t  ib_crsr)

Create an InnoDB tuple used for table key operations.

Returns
tuple for current table in: Cursor instance
own: Tuple for current table

◆ ib_col_copy_value()

ib_ulint_t ib_col_copy_value ( ib_tpl_t  ib_tpl,
ib_ulint_t  i,
void *  dst,
ib_ulint_t  len 
)

Copy a column value from the tuple.

Returns
bytes copied or IB_SQL_NULL in: max data value len to copy
bytes copied or IB_SQL_NULL

◆ ib_col_get_len()

ib_ulint_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.

Returns
bytes avail or IB_SQL_NULL in: column index in tuple

Get the size of the data available in the column the tuple.

Returns
bytes avail or IB_SQL_NULL

◆ ib_col_get_meta()

ib_ulint_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.

Returns
len of column data out: column meta data
len of column data

◆ ib_col_get_name()

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.

Returns
len of column data in: column index in tuple

Get a column type, length and attributes from the tuple.

Returns
name of the column

◆ ib_col_get_value()

const void* ib_col_get_value ( ib_tpl_t  ib_tpl,
ib_ulint_t  i 
)

Get a column value pointer from the tuple.

Returns
NULL or pointer to buffer in: column number
NULL or pointer to buffer

◆ ib_col_set_value()

ib_err_t ib_col_set_value ( ib_tpl_t  ib_tpl,
ib_ulint_t  col_no,
const void *  src,
ib_ulint_t  len,
ib_bool_t  need_cpy 
)

Set a column of the tuple.

Make a copy using the tuple's heap.

Returns
DB_SUCCESS or error code in: if need memcpy

Make a copy using the tuple's heap.

Returns
DB_SUCCESS or error code

◆ ib_cursor_close()

ib_err_t ib_cursor_close ( ib_crsr_t  ib_crsr)

Close an InnoDB table and free the cursor.

Returns
DB_SUCCESS or err code in/out: InnoDB cursor
DB_SUCCESS or err code

◆ ib_cursor_commit_trx()

ib_err_t ib_cursor_commit_trx ( ib_crsr_t  ib_crsr,
ib_trx_t  ib_trx 
)

Commit the transaction in a cursor.

Returns
DB_SUCCESS or err code in: transaction
DB_SUCCESS or err code

◆ ib_cursor_delete_row()

ib_err_t ib_cursor_delete_row ( ib_crsr_t  ib_crsr)

Delete a row in a table.

Returns
DB_SUCCESS or err code in: cursor instance
DB_SUCCESS or err code

◆ ib_cursor_first()

ib_err_t ib_cursor_first ( ib_crsr_t  ib_crsr)

Move cursor to the first record in the table.

Returns
DB_SUCCESS or err code in: InnoDB cursor instance
DB_SUCCESS or err code

◆ ib_cursor_insert_row()

ib_err_t ib_cursor_insert_row ( ib_crsr_t  ib_crsr,
const ib_tpl_t  ib_tpl 
)

Insert a row to a table.

Returns
DB_SUCCESS or err code in: tuple to insert
DB_SUCCESS or err code

◆ ib_cursor_is_positioned()

ib_bool_t ib_cursor_is_positioned ( const ib_crsr_t  ib_crsr)

Check if cursor is positioned.

Returns
IB_true if positioned in: InnoDB cursor instance
IB_true if positioned

◆ ib_cursor_lock()

ib_err_t ib_cursor_lock ( ib_crsr_t  ib_crsr,
ib_lck_mode_t  ib_lck_mode 
)

Lock an InnoDB cursor/table.

Returns
DB_SUCCESS or error code in: InnoDB lock mode

Lock an InnoDB cursor/table.

Returns
DB_SUCCESS or error code

◆ ib_cursor_moveto()

ib_err_t ib_cursor_moveto ( ib_crsr_t  ib_crsr,
ib_tpl_t  ib_tpl,
ib_srch_mode_t  ib_srch_mode,
ib_ulint_t  direction 
)

Search for key.

Returns
DB_SUCCESS or err code in: search direction
DB_SUCCESS or err code

◆ ib_cursor_new_trx()

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

Returns
DB_SUCCESS or err code in: transaction
DB_SUCCESS or err code

◆ ib_cursor_next()

ib_err_t ib_cursor_next ( ib_crsr_t  ib_crsr)

Move cursor to the next record in the table.

Returns
DB_SUCCESS or err code in: InnoDB cursor instance

Move cursor to the next record in the table.

Returns
DB_SUCCESS or err code

◆ ib_cursor_open_index_using_name()

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.

Returns
DB_SUCCESS or err code out: index id
DB_SUCCESS or err code

◆ ib_cursor_open_table()

ib_err_t ib_cursor_open_table ( const char *  name,
ib_trx_t  ib_trx,
ib_crsr_t ib_crsr 
)

Open an InnoDB table by name and return a cursor handle to it.

Returns
DB_SUCCESS or err code out,own: InnoDB cursor

Open an InnoDB table by name and return a cursor handle to it.

Returns
DB_SUCCESS or err code

◆ ib_cursor_read_row()

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,
ib_ulint_t slot,
ib_ulint_t used_len 
)

Read current row.

Returns
DB_SUCCESS or err code in/out: row buffer len used
DB_SUCCESS or err code

◆ ib_cursor_reset()

ib_err_t ib_cursor_reset ( ib_crsr_t  ib_crsr)

Reset the cursor.

Returns
DB_SUCCESS or err code in/out: InnoDB cursor
DB_SUCCESS or err code

◆ ib_cursor_set_cluster_access()

void ib_cursor_set_cluster_access ( ib_crsr_t  ib_crsr)

Set need to access clustered index record flag.

in/out: InnoDB cursor

Set need to access clustered index record flag.

◆ ib_cursor_set_lock_mode()

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.

Returns
DB_SUCCESS or error code in: InnoDB lock mode
DB_SUCCESS or error code

◆ ib_cursor_set_match_mode()

void ib_cursor_set_match_mode ( ib_crsr_t  ib_crsr,
ib_match_mode_t  match_mode 
)

Set the match mode for ib_cursor_move().

in: ib_cursor_moveto match mode

Set the match mode for ib_cursor_move().

◆ ib_cursor_stmt_begin()

void ib_cursor_stmt_begin ( ib_crsr_t  ib_crsr)

Inform the cursor that it's the start of an SQL statement.

in: cursor

◆ ib_cursor_update_row()

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.

Returns
DB_SUCCESS or err code in: New tuple to update
DB_SUCCESS or err code

◆ ib_get_idx_field_name()

const char* ib_get_idx_field_name ( ib_crsr_t  ib_crsr,
ib_ulint_t  i 
)

Get an index field name from the cursor.

Returns
name of the field in: column index in tuple
name of the field

◆ ib_is_virtual_table()

ib_bool_t ib_is_virtual_table ( ib_crsr_t  crsr)

Check the table whether it contains virtual columns.

Parameters
[in]crsrInnoDB Cursor
Returns
true if table contains virtual column else false.
Parameters
[in]crsrInnoDB Cursor
Returns
true if the table contains virtual column else failure.

◆ ib_schema_lock_is_exclusive()

ib_bool_t ib_schema_lock_is_exclusive ( const ib_trx_t  ib_trx)

Checks if the data dictionary is latched in exclusive mode by a user transaction.

Returns
true if exclusive latch in: transaction

Checks if the data dictionary is latched in exclusive mode by a user transaction.

Returns
true if exclusive latch

◆ ib_sdi_create()

ib_err_t ib_sdi_create ( space_id_t  tablespace_id)

Create SDI in a tablespace.

Parameters
[in]tablespace_idInnoDB tablespace id
Returns
DB_SUCCESS if SDI index creation is successful, else error

◆ ib_sdi_delete()

ib_err_t ib_sdi_delete ( uint32_t  tablespace_id,
const ib_sdi_key_t sdi_key,
ib_trx_t  trx 
)

Delete SDI from tablespace.

Parameters
[in]tablespace_idtablespace id
[in]sdi_keySDI key to uniquely identify the tablespace object
[in,out]trxinnodb transaction
Returns
DB_SUCCESS if SDI deletion is successful, else error

◆ ib_sdi_drop()

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.

Parameters
[in]tablespace_idInnoDB tablespace id
Returns
DB_SUCCESS if dropping of SDI indexes is successful, else error

This should be used only when SDI is corrupted.

Parameters
[in]tablespace_idInnoDB tablespace id
Returns
DB_SUCCESS if dropping of SDI index is successful, else error

◆ ib_sdi_flush()

ib_err_t ib_sdi_flush ( space_id_t  space_id)

Flush SDI in a tablespace.

The pages of a SDI copy modified by the transaction will be flushed to disk.

Parameters
[in]space_idtablespace id
Returns
DB_SUCCESS always

The pages of a SDI Index modified by the transaction will be flushed to disk.

Parameters
[in]space_idtablespace id
Returns
DB_SUCCESS always

◆ ib_sdi_get()

ib_err_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,
ib_trx_t  trx 
)

Retrieve SDI from tablespace.

Parameters
[in]tablespace_idtablespace id
[in]ib_sdi_keySDI key
[in,out]comp_sdiin: buffer to hold the SDI BLOB out: compressed SDI retrieved from tablespace
[in,out]comp_sdi_lenin: Size of memory allocated out: compressed length of SDI
[out]uncomp_sdi_lenout: uncompressed length of SDI
[in,out]trxinnodb transaction
Returns
DB_SUCCESS if SDI retrieval is successful, else error in case the passed buffer length is smaller than the actual SDI DB_OUT_OF_MEMORY is thrown and uncompressed length is set in uncomp_sdi_len

◆ ib_sdi_get_keys()

ib_err_t ib_sdi_get_keys ( uint32_t  tablespace_id,
ib_sdi_vector_t ib_sdi_vector,
ib_trx_t  trx 
)

Get the SDI keys in a tablespace into vector.

Parameters
[in]tablespace_idtablespace id
[in,out]ib_sdi_vectorvector to hold objects with tablespace types and ids
[in,out]trxdata dictionary transaction
Returns
DB_SUCCESS if SDI keys retrieval is successful, else error

◆ ib_sdi_set()

ib_err_t ib_sdi_set ( uint32_t  tablespace_id,
const ib_sdi_key_t sdi_key,
uint32_t  uncomp_len,
uint32_t  comp_len,
const void *  sdi,
ib_trx_t  trx 
)

Insert/Update SDI in tablespace.

Parameters
[in]tablespace_idtablespace id
[in]sdi_keySDI key to uniquely identify the tablespace object
[in]uncomp_lenuncompressed length of SDI
[in]comp_lencompressed length of SDI
[in]sdicompressed SDI to be stored in tablespace
[in,out]trxinnodb transaction
Returns
DB_SUCCESS if SDI Insert/Update is successful, else error

◆ ib_sec_read_tuple_create()

ib_tpl_t ib_sec_read_tuple_create ( ib_crsr_t  ib_crsr)

Create an InnoDB tuple used for index/table search.

Returns
tuple for current index in: Cursor instance
own: Tuple for current index

◆ ib_sec_search_tuple_create()

ib_tpl_t ib_sec_search_tuple_create ( ib_crsr_t  ib_crsr)

Create an InnoDB tuple used for index/table search.

Returns
tuple for current index in: Cursor instance
own: Tuple for current index

◆ ib_table_get_id()

ib_err_t ib_table_get_id ( const char *  table_name,
ib_id_u64_t table_id 
)

Get a table id.

Returns
DB_SUCCESS if found out: table id if found

This function will acquire the dictionary mutex.

Returns
DB_SUCCESS if found

◆ ib_trx_begin()

ib_trx_t ib_trx_begin ( ib_trx_level_t  ib_trx_level,
ib_bool_t  read_write,
ib_bool_t  auto_commit,
void *  thd 
)

Begin a transaction.

This will allocate a new transaction handle and put the transaction in the active state.

Parameters
[in]ib_trx_leveltrx isolation level
[in]read_writetrue if read write transaction
[in]auto_commitauto commit after each single DML
[in,out]thdMySQL THD
Returns
innobase txn handle

This will allocate a new transaction handle. put the transaction in the active state.

Returns
innobase txn handle

◆ ib_trx_commit()

ib_err_t ib_trx_commit ( ib_trx_t  ib_trx)

Commit a transaction.

This function will release the schema latches too. It will also free the transaction handle.

Returns
DB_SUCCESS or err code in: trx handle

This function will also release the schema latches too.

Returns
DB_SUCCESS or err code

◆ ib_trx_get_start_time()

ib_u64_t ib_trx_get_start_time ( ib_trx_t  ib_trx)

Get a trx start time.

Returns
trx start_time in: transaction
trx start_time

◆ ib_trx_read_only()

ib_u32_t ib_trx_read_only ( ib_trx_t  ib_trx)

Check if the transaction is read_only.

in: trx handle

Check if the transaction is read_only.

Returns
transaction read_only status

◆ ib_trx_release()

ib_err_t ib_trx_release ( ib_trx_t  ib_trx)

Release the resources of the transaction.

If the transaction was selected as a victim by InnoDB and rolled back then use this function to free the transaction handle.

Returns
DB_SUCCESS or err code in: trx handle
DB_SUCCESS or err code

◆ ib_trx_rollback()

ib_err_t ib_trx_rollback ( ib_trx_t  ib_trx)

Rollback a transaction.

This function will release the schema latches too. It will also free the transaction handle.

Returns
DB_SUCCESS or err code in: trx handle

This function will also release the schema latches too.

Returns
DB_SUCCESS or err code

◆ ib_trx_start()

ib_err_t ib_trx_start ( ib_trx_t  ib_trx,
ib_trx_level_t  ib_trx_level,
ib_bool_t  read_write,
ib_bool_t  auto_commit,
void *  thd 
)

Start a transaction that's been rolled back.

This special function exists for the case when InnoDB's deadlock detector has rolledack a transaction. While the transaction has been rolled back the handle is still valid and can be reused by calling this function. If you don't want to reuse the transaction handle then you can free the handle by calling ib_trx_release().

Returns
innobase txn handle in: THD

Start a transaction that's been rolled back.

Returns
innobase txn handle

◆ ib_tuple_clear()

ib_tpl_t ib_tuple_clear ( ib_tpl_t  ib_tpl)

"Clear" or reset an InnoDB tuple.

We free the heap and recreate the tuple.

Returns
new tuple, or NULL in: InnoDB tuple

We free the heap and recreate the tuple.

Returns
new tuple, or NULL

◆ ib_tuple_delete()

void ib_tuple_delete ( ib_tpl_t  ib_tpl)

Destroy an InnoDB tuple.

in,own: Tuple instance to delete

◆ ib_tuple_get_cluster_key()

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.

Returns
DB_SUCCESS or error code in: source tuple

It does a deep copy of the column data.

Returns
DB_SUCCESS or error code

◆ ib_tuple_get_n_cols()

ib_ulint_t ib_tuple_get_n_cols ( const ib_tpl_t  ib_tpl)

Return the number of columns in the tuple definition.

Returns
number of columns in: Tuple for current table
number of columns

◆ ib_tuple_get_n_user_cols()

ib_ulint_t ib_tuple_get_n_user_cols ( const ib_tpl_t  ib_tpl)

Return the number of user columns in the tuple definition.

Returns
number of user columns in: Tuple for current table
number of user columns

◆ ib_tuple_read_double()

ib_err_t ib_tuple_read_double ( ib_tpl_t  ib_tpl,
ib_ulint_t  col_no,
double *  dval 
)

Read a double column value from an InnoDB tuple.

Returns
DB_SUCCESS or error out: double value
DB_SUCCESS or error

◆ ib_tuple_read_float()

ib_err_t ib_tuple_read_float ( ib_tpl_t  ib_tpl,
ib_ulint_t  col_no,
float *  fval 
)

Read a float value from an InnoDB tuple.

Returns
DB_SUCCESS or error out: float value
DB_SUCCESS or error

◆ ib_tuple_read_i16()

ib_err_t ib_tuple_read_i16 ( ib_tpl_t  ib_tpl,
ib_ulint_t  i,
ib_i16_t ival 
)

Read a signed int 16 bit column from an InnoDB tuple.

Returns
DB_SUCCESS or error out: integer value
DB_SUCCESS or error

◆ ib_tuple_read_i32()

ib_err_t ib_tuple_read_i32 ( ib_tpl_t  ib_tpl,
ib_ulint_t  i,
ib_i32_t ival 
)

Read a signed int 32 bit column from an InnoDB tuple.

Returns
DB_SUCCESS or error out: integer value
DB_SUCCESS or error

◆ ib_tuple_read_i64()

ib_err_t ib_tuple_read_i64 ( ib_tpl_t  ib_tpl,
ib_ulint_t  i,
ib_i64_t ival 
)

Read a signed int 64 bit column from an InnoDB tuple.

Returns
DB_SUCCESS or error out: integer value
DB_SUCCESS or error

◆ ib_tuple_read_i8()

ib_err_t ib_tuple_read_i8 ( ib_tpl_t  ib_tpl,
ib_ulint_t  i,
ib_i8_t ival 
)

Read a signed int 8 bit column from an InnoDB tuple.

Returns
DB_SUCCESS or error out: integer value
DB_SUCCESS or error

◆ ib_tuple_read_u16()

ib_err_t ib_tuple_read_u16 ( ib_tpl_t  ib_tpl,
ib_ulint_t  i,
ib_u16_t ival 
)

Read an unsigned int 16 bit column from an InnoDB tuple.

Returns
DB_SUCCESS or error out: integer value
DB_SUCCESS or error

◆ ib_tuple_read_u32()

ib_err_t ib_tuple_read_u32 ( ib_tpl_t  ib_tpl,
ib_ulint_t  i,
ib_u32_t ival 
)

Read an unsigned int 32 bit column from an InnoDB tuple.

Returns
DB_SUCCESS or error out: integer value
DB_SUCCESS or error

◆ ib_tuple_read_u64()

ib_err_t ib_tuple_read_u64 ( ib_tpl_t  ib_tpl,
ib_ulint_t  i,
ib_u64_t ival 
)

Read an unsigned int 64 bit column from an InnoDB tuple.

Returns
DB_SUCCESS or error out: integer value
DB_SUCCESS or error

◆ ib_tuple_read_u8()

ib_err_t ib_tuple_read_u8 ( ib_tpl_t  ib_tpl,
ib_ulint_t  i,
ib_u8_t ival 
)

Read an unsigned int 8 bit column from an InnoDB tuple.

Returns
DB_SUCCESS or error out: integer value
DB_SUCCESS or error

◆ ib_tuple_write_double()

ib_err_t ib_tuple_write_double ( ib_tpl_t  ib_tpl,
int  col_no,
double  val 
)

Write a double value to a column.

Returns
DB_SUCCESS or error in: value to write
DB_SUCCESS or error

◆ ib_tuple_write_float()

ib_err_t ib_tuple_write_float ( ib_tpl_t  ib_tpl,
int  col_no,
float  val 
)

Write a float value to a column.

Returns
DB_SUCCESS or error in: value to write
DB_SUCCESS or error

◆ ib_ut_strerr()

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.

Returns
string, describing the error in: error number
string, describing the error