InnoDB Plugin  1.0
Data Structures | Macros | Typedefs | Enumerations | Functions
api0api.h File Reference
#include "db0err.h"
#include <stdio.h>
#include <stdint.h>
Include dependency graph for api0api.h:

Go to the source code of this file.

Data Structures

struct  ib_col_meta_t

Macros

#define UNIV_NO_IGNORE
#define IB_TRUE   0x1UL
#define IB_FALSE   0x0UL
#define IB_CFG_BINLOG_ENABLED   0x1
#define IB_CFG_MDL_ENABLED   0x2
#define IB_CFG_DISABLE_ROWLOCK   0x4
#define IB_SQL_NULL   0xFFFFFFFF
#define IB_N_SYS_COLS   3
#define MAX_TEXT_LEN   4096
#define IB_MAX_COL_NAME_LEN   (64 * 3)
#define IB_MAX_TABLE_NAME_LEN   (64 * 3) * 2

Typedefs

typedef enum dberr_t ib_err_t
typedef unsigned char ib_byte_t
typedef unsigned long int ib_ulint_t
typedef int8_t ib_i8_t
typedef uint8_t ib_u8_t
typedef int16_t ib_i16_t
typedef uint16_t ib_u16_t
typedef int32_t ib_i32_t
typedef uint32_t ib_u32_t
typedef int64_t ib_i64_t
typedef uint64_t ib_u64_t
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)
typedef FILE * ib_msg_stream_t
typedef int(* ib_msg_log_t )(ib_msg_stream_t, const char *,...)
typedef struct ib_tuple_t * ib_tpl_t
typedef struct trx_tib_trx_t
typedef struct ib_cursor_t * ib_crsr_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)

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_state_t { IB_TRX_NOT_STARTED, IB_TRX_ACTIVE, IB_TRX_COMMITTED_IN_MEMORY, IB_TRX_PREPARED }
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)
ib_trx_t ib_trx_begin (ib_trx_level_t ib_trx_level, ib_bool_t read_write, ib_bool_t auto_commit)
ib_trx_state_t ib_trx_state (ib_trx_t ib_trx)
ib_err_t ib_trx_release (ib_trx_t ib_trx)
ib_err_t ib_trx_commit (ib_trx_t ib_trx)
ib_err_t ib_trx_rollback (ib_trx_t ib_trx)
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)
ib_err_t ib_cursor_open_index_using_id (ib_id_u64_t index_id, ib_trx_t ib_trx, ib_crsr_t *ib_crsr)
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)
ib_err_t ib_cursor_open_table (const char *name, ib_trx_t ib_trx, ib_crsr_t *ib_crsr)
ib_err_t ib_cursor_reset (ib_crsr_t ib_crsr)
void ib_cursor_clear_trx (ib_crsr_t ib_crsr)
ib_err_t ib_cursor_close (ib_crsr_t ib_crsr)
ib_err_t ib_cursor_close_table (ib_crsr_t ib_crsr)
ib_err_t ib_cursor_new_trx (ib_crsr_t ib_crsr, ib_trx_t ib_trx)
ib_err_t ib_cursor_commit_trx (ib_crsr_t ib_crsr, ib_trx_t ib_trx)
void * ib_open_table_by_name (const char *name)
ib_err_t ib_cursor_insert_row (ib_crsr_t ib_crsr, const ib_tpl_t ib_tpl)
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)
ib_err_t ib_cursor_delete_row (ib_crsr_t ib_crsr)
ib_err_t ib_cursor_read_row (ib_crsr_t ib_crsr, ib_tpl_t ib_tpl, void **row_buf, ib_ulint_t *row_len)
ib_err_t ib_cursor_first (ib_crsr_t ib_crsr)
ib_err_t ib_cursor_last (ib_crsr_t ib_crsr)
ib_err_t ib_cursor_next (ib_crsr_t ib_crsr)
ib_err_t ib_cursor_moveto (ib_crsr_t ib_crsr, ib_tpl_t ib_tpl, ib_srch_mode_t ib_srch_mode)
void ib_cursor_set_match_mode (ib_crsr_t ib_crsr, ib_match_mode_t match_mode)
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)
ib_ulint_t ib_col_get_len (ib_tpl_t ib_tpl, ib_ulint_t i)
ib_ulint_t ib_col_copy_value (ib_tpl_t ib_tpl, ib_ulint_t i, void *dst, ib_ulint_t len)
ib_err_t ib_tuple_read_i8 (ib_tpl_t ib_tpl, ib_ulint_t i, ib_i8_t *ival)
ib_err_t ib_tuple_read_u8 (ib_tpl_t ib_tpl, ib_ulint_t i, ib_u8_t *ival)
ib_err_t ib_tuple_read_i16 (ib_tpl_t ib_tpl, ib_ulint_t i, ib_i16_t *ival)
ib_err_t ib_tuple_read_u16 (ib_tpl_t ib_tpl, ib_ulint_t i, ib_u16_t *ival)
ib_err_t ib_tuple_read_i32 (ib_tpl_t ib_tpl, ib_ulint_t i, ib_i32_t *ival)
ib_err_t ib_tuple_read_u32 (ib_tpl_t ib_tpl, ib_ulint_t i, ib_u32_t *ival)
ib_err_t ib_tuple_read_i64 (ib_tpl_t ib_tpl, ib_ulint_t i, ib_i64_t *ival)
ib_err_t ib_tuple_read_u64 (ib_tpl_t ib_tpl, ib_ulint_t i, ib_u64_t *ival)
const void * ib_col_get_value (ib_tpl_t ib_tpl, ib_ulint_t i)
ib_ulint_t ib_col_get_meta (ib_tpl_t ib_tpl, ib_ulint_t i, ib_col_meta_t *ib_col_meta)
ib_tpl_t ib_tuple_clear (ib_tpl_t ib_tpl)
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)
ib_err_t ib_tuple_copy (ib_tpl_t ib_dst_tpl, const ib_tpl_t ib_src_tpl)
ib_tpl_t ib_sec_search_tuple_create (ib_crsr_t ib_crsr)
ib_tpl_t ib_sec_read_tuple_create (ib_crsr_t ib_crsr)
ib_tpl_t ib_clust_search_tuple_create (ib_crsr_t ib_crsr)
ib_tpl_t ib_clust_read_tuple_create (ib_crsr_t ib_crsr)
ib_ulint_t ib_tuple_get_n_user_cols (const ib_tpl_t ib_tpl)
ib_ulint_t ib_tuple_get_n_cols (const ib_tpl_t ib_tpl)
void ib_tuple_delete (ib_tpl_t ib_tpl)
ib_err_t ib_cursor_truncate (ib_crsr_t *ib_crsr, ib_id_u64_t *table_id)
ib_err_t ib_table_get_id (const char *table_name, ib_id_u64_t *table_id)
ib_err_t ib_index_get_id (const char *table_name, const char *index_name, ib_id_u64_t *index_id)
ib_bool_t ib_cursor_is_positioned (const ib_crsr_t ib_crsr)
ib_bool_t ib_schema_lock_is_exclusive (const ib_trx_t ib_trx)
ib_err_t ib_cursor_lock (ib_crsr_t ib_crsr, ib_lck_mode_t ib_lck_mode)
ib_err_t ib_table_lock (ib_trx_t ib_trx, ib_id_u64_t table_id, ib_lck_mode_t ib_lck_mode)
ib_err_t ib_cursor_set_lock_mode (ib_crsr_t ib_crsr, ib_lck_mode_t ib_lck_mode)
void ib_cursor_set_cluster_access (ib_crsr_t ib_crsr)
ib_err_t ib_tuple_write_i8 (ib_tpl_t ib_tpl, int col_no, ib_i8_t val)
ib_err_t ib_tuple_write_i16 (ib_tpl_t ib_tpl, int col_no, ib_i16_t val)
ib_err_t ib_tuple_write_i32 (ib_tpl_t ib_tpl, int col_no, ib_i32_t val)
ib_err_t ib_tuple_write_i64 (ib_tpl_t ib_tpl, int col_no, ib_i64_t val)
ib_err_t ib_tuple_write_u8 (ib_tpl_t ib_tpl, int col_no, ib_u8_t val)
ib_err_t ib_tuple_write_u16 (ib_tpl_t ib_tpl, int col_no, ib_u16_t val)
ib_err_t ib_tuple_write_u32 (ib_tpl_t ib_tpl, int col_no, ib_u32_t val)
ib_err_t ib_tuple_write_u64 (ib_tpl_t ib_tpl, int col_no, ib_u64_t val)
void ib_cursor_stmt_begin (ib_crsr_t ib_crsr)
ib_err_t ib_tuple_write_double (ib_tpl_t ib_tpl, int col_no, double val)
ib_err_t ib_tuple_read_double (ib_tpl_t ib_tpl, ib_ulint_t col_no, double *dval)
ib_err_t ib_tuple_write_float (ib_tpl_t ib_tpl, int col_no, float val)
ib_err_t ib_tuple_read_float (ib_tpl_t ib_tpl, ib_ulint_t col_no, float *fval)
const char * ib_col_get_name (ib_crsr_t ib_crsr, ib_ulint_t i)
const char * ib_get_idx_field_name (ib_crsr_t ib_crsr, ib_ulint_t i)
ib_err_t ib_table_truncate (const char *table_name, ib_id_u64_t *table_id)
ib_err_t ib_close_thd (void *thd)
int ib_cfg_get_cfg ()
ib_err_t ib_cursor_set_memcached_sync (ib_crsr_t ib_crsr, ib_bool_t flag)
ib_err_t ib_table_name_check (const char *name)
ib_trx_state_t ib_cfg_trx_level ()
ib_ulint_t ib_cfg_bk_commit_interval ()
ib_u64_t ib_trx_get_start_time (ib_trx_t ib_trx)

Detailed Description

InnoDB Native API

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

Macro Definition Documentation

#define IB_FALSE   0x0UL

The boolean value of "false" used internally within InnoDB

#define IB_MAX_COL_NAME_LEN   (64 * 3)

The maximum length of a column name in a table schema.

#define IB_MAX_TABLE_NAME_LEN   (64 * 3) * 2

The maximum length of a table name (plus database name).

#define IB_N_SYS_COLS   3

The number of system columns in a row.

#define IB_SQL_NULL   0xFFFFFFFF

Represents SQL_NULL length

#define IB_TRUE   0x1UL

The boolean value of "true" used internally within InnoDB

#define MAX_TEXT_LEN   4096

The maximum length of a text column.

Typedef Documentation

typedef unsigned char ib_byte_t

Representation of a byte within InnoDB

typedef void(* ib_cb_t)(void)

Generical InnoDB callback prototype.

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_len key length
p2second key
p2_lensecond key length
Returns
1, 0, -1, if a is greater, equal, less than b, respectively
typedef struct ib_cursor_t* ib_crsr_t

InnoDB cursor handle

typedef enum dberr_t ib_err_t

All InnoDB error codes are represented by ib_err_t

typedef int16_t ib_i16_t

A signed 16 bit integral type.

typedef int32_t ib_i32_t

A signed 32 bit integral type.

typedef int64_t ib_i64_t

A signed 64 bit integral type.

typedef int8_t ib_i8_t

A signed 8 bit integral type.

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

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.

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.

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().

typedef uint16_t ib_u16_t

An unsigned 16 bit integral type.

typedef uint32_t ib_u32_t

An unsigned 32 bit integral type.

typedef uint64_t ib_u64_t

An unsigned 64 bit integral type.

typedef uint8_t ib_u8_t

An unsigned 8 bit integral type.

typedef unsigned long int ib_ulint_t

Representation of an unsigned long int within InnoDB

Enumeration Type Documentation

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

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.

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_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

Enumerator:
IB_CLUSTERED 

clustered index

IB_UNIQUE 

unique index

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

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)

 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

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

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

 The transaction state can be queried using the

ib_trx_state() function. The InnoDB deadlock monitor can roll back a transaction and users should be prepared for this, especially where there is high contention. The way to determine the state of the transaction is to query it's state and check.

Enumerator:
IB_TRX_NOT_STARTED 

Has not started yet, the transaction has not ben started yet.

IB_TRX_ACTIVE 

The transaction is currently active and needs to be either committed or rolled back.

IB_TRX_COMMITTED_IN_MEMORY 

Not committed to disk yet

IB_TRX_PREPARED 

Support for 2PC/XA

Function Documentation

ib_ulint_t ib_cfg_bk_commit_interval ( )

Return configure value for background commit interval (in seconds)

Returns
background commit interval (in seconds)
int ib_cfg_get_cfg ( )

Get generic configure status

Returns
configure status
ib_trx_state_t ib_cfg_trx_level ( )

Return isolation configuration set by "innodb_api_trx_level"

Returns
trx isolation level
ib_err_t ib_close_thd ( void *  thd)

Frees a possible InnoDB trx object associated with the current THD.

Returns
DB_SUCCESS or error number in: handle to the MySQL thread of the user whose resources should be free'd
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
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
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
Parameters
ib_tplin: tuple instance
iin: column index in tuple
dstout: copied data value
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
Parameters
ib_tplin: tuple instance
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
Parameters
ib_tplin: InnoDB tuple
iin: column number
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
Parameters
ib_crsrin: InnoDB cursor instance
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
Parameters
ib_tplin: InnoDB tuple
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
Parameters
ib_tplin: tuple instance
col_noin: column index in tuple
srcin: data value
lenin: data value len
void ib_cursor_clear_trx ( ib_crsr_t  ib_crsr)

set a cursor trx to NULL in/out: InnoDB cursor

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
ib_err_t ib_cursor_close_table ( ib_crsr_t  ib_crsr)

Close the table, decrement n_ref_count count.

Returns
DB_SUCCESS or err code in/out: InnoDB cursor
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
Parameters
ib_crsrin/out: InnoDB cursor
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
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
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
Parameters
ib_crsrin/out: InnoDB cursor instance
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_err_t ib_cursor_last ( ib_crsr_t  ib_crsr)

Move cursor to the last record in the table.

Returns
DB_SUCCESS or err code in: InnoDB cursor instance
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
Parameters
ib_crsrin/out: InnoDB cursor
ib_err_t ib_cursor_moveto ( ib_crsr_t  ib_crsr,
ib_tpl_t  ib_tpl,
ib_srch_mode_t  ib_srch_mode 
)

Search for key.

Returns
DB_SUCCESS or err code in: search mode
Parameters
ib_crsrin: InnoDB cursor instance
ib_tplin: Key to search for
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
Parameters
ib_crsrin/out: InnoDB cursor
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
ib_err_t ib_cursor_open_index_using_id ( ib_id_u64_t  index_id,
ib_trx_t  ib_trx,
ib_crsr_t ib_crsr 
)

Open an InnoDB index and return a cursor handle to it.

Returns
DB_SUCCESS or err code out: InnoDB cursor
Parameters
index_idin: index id of index to open
ib_trxin: Current transaction handle can be NULL
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
Parameters
ib_open_crsrin: open/active cursor
index_namein: secondary index name
ib_crsrout,own: InnoDB index cursor
idx_typeout: index is cluster index
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
Parameters
namein: table name
ib_trxin: Current transaction handle can be NULL
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.

Returns
DB_SUCCESS or err code out,own: InnoDB cursor
Parameters
table_idin: table id of table to open
ib_trxin: Current transaction handle can be NULL
ib_err_t ib_cursor_read_row ( ib_crsr_t  ib_crsr,
ib_tpl_t  ib_tpl,
void **  row_buf,
ib_ulint_t row_len 
)

Read current row.

Returns
DB_SUCCESS or err code in/out: row buffer len
Parameters
ib_crsrin: InnoDB cursor instance
ib_tplout: read cols into this tuple
row_bufin/out: row buffer
ib_err_t ib_cursor_reset ( ib_crsr_t  ib_crsr)

Reset the cursor.

Returns
DB_SUCCESS or err code in/out: InnoDB cursor
void ib_cursor_set_cluster_access ( ib_crsr_t  ib_crsr)

Set need to access clustered index record flag. 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.

Returns
DB_SUCCESS or error code in: InnoDB lock mode
Parameters
ib_crsrin/out: InnoDB cursor
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

Parameters
ib_crsrin: Cursor instance
ib_err_t ib_cursor_set_memcached_sync ( ib_crsr_t  ib_crsr,
ib_bool_t  flag 
)

Increase/decrease the memcached sync count of table to sync memcached DML with SQL DDLs.

Returns
DB_SUCCESS or error number in: true for increasing
Parameters
ib_crsrin: cursor
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_err_t ib_cursor_truncate ( ib_crsr_t ib_crsr,
ib_id_u64_t *  table_id 
)

Truncate a table. The cursor handle will be closed and set to NULL on success.

Returns
DB_SUCCESS or error code out: new table id
Parameters
ib_crsrin/out: cursor for table to truncate
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
Parameters
ib_crsrin: InnoDB cursor instance
ib_old_tplin: Old tuple in table
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
Parameters
ib_crsrin: InnoDB cursor instance
ib_err_t ib_index_get_id ( const char *  table_name,
const char *  index_name,
ib_id_u64_t *  index_id 
)

Get an index id.

Returns
DB_SUCCESS if found out: index id if found
Parameters
table_namein: find index for this table
index_namein: index to find
void* ib_open_table_by_name ( const char *  name)

Open a table using the table name, if found then increment table ref count.

Returns
table instance if found in: table name to lookup
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
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
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
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
Parameters
table_namein: table to find
ib_err_t ib_table_lock ( ib_trx_t  ib_trx,
ib_id_u64_t  table_id,
ib_lck_mode_t  ib_lck_mode 
)

Set the Lock an InnoDB table using the table id.

Returns
DB_SUCCESS or error code in: InnoDB lock mode
Parameters
ib_trxin/out: transaction
table_idin: table id
ib_err_t ib_table_name_check ( const char *  name)

Check whether the table name conforms to our requirements. Currently we only do a simple check for the presence of a '/'.

Returns
DB_SUCCESS or err code in: table name to check
ib_err_t ib_table_truncate ( const char *  table_name,
ib_id_u64_t *  table_id 
)

Truncate a table.

Returns
DB_SUCCESS or error code out: new table id
Parameters
table_namein: table name
ib_trx_t ib_trx_begin ( ib_trx_level_t  ib_trx_level,
ib_bool_t  read_write,
ib_bool_t  auto_commit 
)

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

Returns
innobase txn handle in: auto commit after each single DML
Parameters
ib_trx_levelin: trx isolation level
read_writein: true if read write transaction
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
ib_u64_t ib_trx_get_start_time ( ib_trx_t  ib_trx)

Get a trx start time.

Returns
trx start_time in: transaction
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
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
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
Parameters
ib_trxin: transaction to restart
ib_trx_levelin: trx isolation level
read_writein: true if read write transaction
auto_commitin: auto commit after each single DML
ib_trx_state_t ib_trx_state ( ib_trx_t  ib_trx)

Query the transaction's state. This function can be used to check for the state of the transaction in case it has been rolled back by the InnoDB deadlock detector. Note that when a transaction is selected as a victim for rollback, InnoDB will always return an appropriate error code indicating this.

See Also
DB_DEADLOCK,
DB_LOCK_TABLE_FULL and
DB_LOCK_WAIT_TIMEOUT
Returns
transaction state in: trx handle
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
ib_err_t ib_tuple_copy ( ib_tpl_t  ib_dst_tpl,
const ib_tpl_t  ib_src_tpl 
)

Copy the contents of source tuple to destination tuple. The tuples must be of the same type and belong to the same table/index.

Returns
DB_SUCCESS or error code in: source tuple
Parameters
ib_dst_tplin: destination tuple
void ib_tuple_delete ( ib_tpl_t  ib_tpl)

Destroy an InnoDB tuple. 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.

Returns
DB_SUCCESS or error code in: source tuple
Parameters
ib_crsrin: secondary index cursor
ib_dst_tplout,own: destination tuple
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
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
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
Parameters
ib_tplin: InnoDB tuple
col_noin: column number
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
Parameters
ib_tplin: InnoDB tuple
col_noin: column number
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
Parameters
ib_tplin: InnoDB tuple
iin: column number
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
Parameters
ib_tplin: InnoDB tuple
iin: column number
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
Parameters
ib_tplin: InnoDB tuple
iin: column number
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
Parameters
ib_tplin: InnoDB tuple
iin: column number
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
Parameters
ib_tplin: InnoDB tuple
iin: column number
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
Parameters
ib_tplin: InnoDB tuple
iin: column number
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
Parameters
ib_tplin: InnoDB tuple
iin: column number
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
Parameters
ib_tplin: InnoDB tuple
iin: column number
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
Parameters
ib_tplin: InnoDB tuple
col_noin: column number
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
Parameters
ib_tplin/out: tuple to write to
col_noin: column number
ib_err_t ib_tuple_write_i16 ( ib_tpl_t  ib_tpl,
int  col_no,
ib_i16_t  val 
)

Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.

Returns
DB_SUCESS or error in: value to write
Parameters
ib_tplin/out: tuple to write to
col_noin: column number
ib_err_t ib_tuple_write_i32 ( ib_tpl_t  ib_tpl,
int  col_no,
ib_i32_t  val 
)

Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.

Returns
DB_SUCESS or error in: value to write
Parameters
ib_tplin/out: tuple to write to
col_noin: column number
ib_err_t ib_tuple_write_i64 ( ib_tpl_t  ib_tpl,
int  col_no,
ib_i64_t  val 
)

Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.

Returns
DB_SUCESS or error in: value to write
Parameters
ib_tplin/out: tuple to write to
col_noin: column number
ib_err_t ib_tuple_write_i8 ( ib_tpl_t  ib_tpl,
int  col_no,
ib_i8_t  val 
)

Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.

Returns
DB_SUCESS or error in: value to write
Parameters
ib_tplin/out: tuple to write to
col_noin: column number
ib_err_t ib_tuple_write_u16 ( ib_tpl_t  ib_tpl,
int  col_no,
ib_u16_t  val 
)

Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.

Returns
DB_SUCESS or error in: value to write
Parameters
ib_tplin/out: tuple to write to
col_noin: column number
ib_err_t ib_tuple_write_u32 ( ib_tpl_t  ib_tpl,
int  col_no,
ib_u32_t  val 
)

Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.

Returns
DB_SUCESS or error in: value to write
Parameters
ib_tplin/out: tuple to write to
col_noin: column number
ib_err_t ib_tuple_write_u64 ( ib_tpl_t  ib_tpl,
int  col_no,
ib_u64_t  val 
)

Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.

Returns
DB_SUCESS or error in: value to write
Parameters
ib_tplin/out: tuple to write to
col_noin: column number
ib_err_t ib_tuple_write_u8 ( ib_tpl_t  ib_tpl,
int  col_no,
ib_u8_t  val 
)

Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.

Returns
DB_SUCESS or error in: value to write
Parameters
ib_tplin/out: tuple to write to
col_noin: column number