InnoDB Plugin
1.0
|
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_t * | ib_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) |
InnoDB Native API
2008-08-01 Created by Sunny Bains. 3/20/2011 Jimmy Yang extracted from Embedded InnoDB
#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 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.
col_meta | column meta data |
p1 | key p1_len key length |
p2 | second key |
p2_len | second key length |
typedef struct ib_cursor_t* ib_crsr_t |
InnoDB cursor handle
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.
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
enum ib_cfg_type_t |
Possible types for a configuration variable.
enum ib_col_attr_t |
InnoDB column attributes
enum ib_col_type_t |
column types that are supported.
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 |
Decimal stored as an ASCII string |
IB_VARCHAR_ANYCHARSET |
Any charset, varying length |
IB_CHAR_ANYCHARSET |
Any charset, fixed length |
enum ib_index_type_t |
enum ib_lck_mode_t |
InnoDB lock modes.
enum ib_match_mode_t |
Various match modes used by ib_cursor_moveto()
enum ib_srch_mode_t |
InnoDB cursor search modes for ib_cursor_moveto().
Note: Values must match those found in page0cur.h
enum ib_tbl_fmt_t |
InnoDB table format types
enum ib_trx_level_t |
Transaction isolation levels
enum ib_trx_state_t |
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.
ib_ulint_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_state_t ib_cfg_trx_level | ( | ) |
Return isolation configuration set by "innodb_api_trx_level"
ib_err_t ib_close_thd | ( | void * | thd | ) |
Frees a possible InnoDB trx object associated with the current THD.
Create an InnoDB tuple for table row operations.
Create an InnoDB tuple used for table key operations.
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.
ib_tpl | in: tuple instance |
i | in: column index in tuple |
dst | out: 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.
ib_tpl | in: 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.
ib_tpl | in: InnoDB tuple |
i | in: 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.
ib_crsr | in: 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.
ib_tpl | in: 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.
ib_tpl | in: tuple instance |
col_no | in: column index in tuple |
src | in: data value |
len | in: data value len |
void ib_cursor_clear_trx | ( | ib_crsr_t | ib_crsr | ) |
set a cursor trx to NULL in/out: InnoDB cursor
Close an InnoDB table and free the cursor.
Close the table, decrement n_ref_count count.
Commit the transaction in a cursor
ib_crsr | in/out: InnoDB cursor |
Delete a row in a table.
Move cursor to the first record in the table.
Insert a row to a table.
ib_crsr | in/out: InnoDB cursor instance |
ib_bool_t ib_cursor_is_positioned | ( | const ib_crsr_t | ib_crsr | ) |
Check if cursor is positioned.
Move cursor to the last record in the table.
ib_err_t ib_cursor_lock | ( | ib_crsr_t | ib_crsr, |
ib_lck_mode_t | ib_lck_mode | ||
) |
Lock an InnoDB cursor/table.
ib_crsr | in/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.
ib_crsr | in: InnoDB cursor instance |
ib_tpl | in: Key to search for |
update the cursor with new transactions and also reset the cursor
ib_crsr | in/out: InnoDB cursor |
Move cursor to the next record in the table.
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.
index_id | in: index id of index to open |
ib_trx | in: 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.
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 |
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_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.
table_id | in: table id of table to open |
ib_trx | in: 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.
ib_crsr | in: InnoDB cursor instance |
ib_tpl | out: read cols into this tuple |
row_buf | in/out: row buffer |
Reset the 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.
ib_crsr | in/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
ib_crsr | in: Cursor instance |
Increase/decrease the memcached sync count of table to sync memcached DML with SQL DDLs.
ib_crsr | in: 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
Truncate a table. The cursor handle will be closed and set to NULL on success.
ib_crsr | in/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.
ib_crsr | in: InnoDB cursor instance |
ib_old_tpl | in: 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.
ib_crsr | in: 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.
table_name | in: find index for this table |
index_name | in: 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.
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.
Create an InnoDB tuple used for index/table search.
Create an InnoDB tuple used for index/table search.
ib_err_t ib_table_get_id | ( | const char * | table_name, |
ib_id_u64_t * | table_id | ||
) |
Get a table id.
table_name | in: 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.
ib_trx | in/out: transaction |
table_id | in: 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 '/'.
ib_err_t ib_table_truncate | ( | const char * | table_name, |
ib_id_u64_t * | table_id | ||
) |
Truncate a table.
table_name | in: 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.
ib_trx_level | in: trx isolation level |
read_write | in: true if read write transaction |
Commit a transaction. This function will release the schema latches too. It will also free the transaction handle.
Get a trx start time.
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.
Rollback a transaction. This function will release the schema latches too. It will also free the transaction 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().
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 |
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.
"Clear" or reset an InnoDB tuple. We free the heap and recreate the tuple.
Copy the contents of source tuple to destination tuple. The tuples must be of the same type and belong to the same table/index.
ib_dst_tpl | in: 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.
ib_crsr | in: secondary index cursor |
ib_dst_tpl | out,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.
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.
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.
ib_tpl | in: InnoDB tuple |
col_no | in: 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.
ib_tpl | in: InnoDB tuple |
col_no | in: 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.
ib_tpl | in: InnoDB tuple |
i | in: 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.
ib_tpl | in: InnoDB tuple |
i | in: 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.
ib_tpl | in: InnoDB tuple |
i | in: 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.
ib_tpl | in: InnoDB tuple |
i | in: 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.
ib_tpl | in: InnoDB tuple |
i | in: 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.
ib_tpl | in: InnoDB tuple |
i | in: 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.
ib_tpl | in: InnoDB tuple |
i | in: 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.
ib_tpl | in: InnoDB tuple |
i | in: column number |
Write a double value to a column.
ib_tpl | in: InnoDB tuple |
col_no | in: column number |
Write a float value to a column.
ib_tpl | in/out: tuple to write to |
col_no | in: column number |
Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.
ib_tpl | in/out: tuple to write to |
col_no | in: column number |
Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.
ib_tpl | in/out: tuple to write to |
col_no | in: column number |
Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.
ib_tpl | in/out: tuple to write to |
col_no | in: column number |
Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.
ib_tpl | in/out: tuple to write to |
col_no | in: column number |
Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.
ib_tpl | in/out: tuple to write to |
col_no | in: column number |
Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.
ib_tpl | in/out: tuple to write to |
col_no | in: column number |
Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.
ib_tpl | in/out: tuple to write to |
col_no | in: column number |
Write an integer value to a column. Integers are stored in big-endian format and will need to be converted from the host format.
ib_tpl | in/out: tuple to write to |
col_no | in: column number |