384 bool auto_commit,
void *thd);
409 const char *index_name,
498 uint64_t len,
bool need_cpy);
695 void *comp_sdi, uint32_t *comp_sdi_len,
708 uint32_t uncomp_len, uint32_t comp_len,
const void *sdi,
736#define FOR_EACH_API_METHOD_NAME_STEM(transform) \
737 transform(cursor_open_table) \
738 transform(cursor_read_row) \
739 transform(cursor_insert_row) \
740 transform(cursor_delete_row) \
741 transform(cursor_update_row) \
742 transform(cursor_moveto) \
743 transform(cursor_first) \
744 transform(cursor_next) \
745 transform(cursor_set_match_mode) \
746 transform(sec_search_tuple_create) \
747 transform(clust_read_tuple_create) \
748 transform(tuple_delete) \
749 transform(tuple_read_u8) \
750 transform(tuple_read_u16) \
751 transform(tuple_read_u32) \
752 transform(tuple_read_u64) \
753 transform(tuple_read_i8) \
754 transform(tuple_read_i16) \
755 transform(tuple_read_i32) \
756 transform(tuple_read_i64) \
757 transform(tuple_get_n_cols) \
758 transform(col_set_value) \
759 transform(col_get_value) \
760 transform(col_get_meta) \
761 transform(trx_begin) \
762 transform(trx_commit) \
763 transform(trx_rollback) \
764 transform(trx_start) \
765 transform(trx_release) \
766 transform(cursor_lock) \
767 transform(cursor_close) \
768 transform(cursor_new_trx) \
769 transform(cursor_reset) \
770 transform(col_get_name) \
771 transform(cursor_open_index_using_name) \
772 transform(cfg_get_cfg) \
773 transform(cursor_set_cluster_access) \
774 transform(cursor_commit_trx) \
775 transform(cfg_trx_level) \
776 transform(tuple_get_n_user_cols) \
777 transform(cursor_set_lock_mode) \
778 transform(get_idx_field_name) \
779 transform(trx_get_start_time) \
780 transform(cfg_bk_commit_interval) \
781 transform(ut_strerr) \
782 transform(cursor_stmt_begin) \
783 transform(trx_read_only) \
784 transform(is_virtual_table)
constexpr uint32_t IB_SQL_NULL
Represents SQL_NULL length.
Definition: api0api.h:358
void ib_tuple_delete(ib_tpl_t ib_tpl)
Destroy an InnoDB tuple.
Definition: api0api.cc:2325
ib_tpl_t ib_sec_search_tuple_create(ib_crsr_t ib_crsr)
Create an InnoDB tuple used for index/table search.
Definition: api0api.cc:2256
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.
ib_cfg_type_t
Possible types for a configuration variable.
Definition: api0api.h:72
@ IB_CFG_ULINT
The configuration parameter is of type ulint.
Definition: api0api.h:88
@ IB_CFG_ULONG
The configuration parameter is of type ulong.
Definition: api0api.h:91
@ IB_CFG_TEXT
The configuration parameter is of type char*.
Definition: api0api.h:94
@ IB_CFG_CB
The configuration parameter is a callback parameter.
Definition: api0api.h:97
@ IB_CFG_BOOL
The configuration parameter is of type bool.
Definition: api0api.h:73
ib_err_t ib_cursor_first(ib_crsr_t ib_crsr)
Move cursor to the first record in the table.
Definition: api0api.cc:1675
dtuple_t * ib_tuple_to_dtuple(ib_tpl_t tuple)
Definition: api0api.cc:217
bool ib_is_virtual_table(ib_crsr_t crsr)
Check the table whether it contains virtual columns.
Definition: api0api.cc:874
ib_err_t ib_col_set_value(ib_tpl_t ib_tpl, ib_ulint_t col_no, const void *src, uint64_t len, bool need_cpy)
Set a column of the tuple.
Definition: api0api.cc:1799
ib_err_t ib_cursor_moveto(ib_crsr_t ib_crsr, ib_tpl_t ib_tpl, ib_srch_mode_t ib_srch_mode, uint64_t direction)
Search for key.
Definition: api0api.cc:1705
uint64_t ib_trx_get_start_time(ib_trx_t ib_trx)
Get a trx start time.
Definition: api0api.cc:563
ib_err_t ib_tuple_read_i64(ib_tpl_t ib_tpl, ib_ulint_t i, int64_t *ival)
Read a signed int 64 bit column from an InnoDB tuple.
Definition: api0api.cc:2216
ib_tpl_t ib_clust_search_tuple_create(ib_crsr_t ib_crsr)
Create an InnoDB tuple used for table key operations.
Definition: api0api.cc:2269
enum dberr_t ib_err_t
All InnoDB error codes are represented by ib_err_t.
Definition: api0api.h:56
ib_err_t ib_tuple_read_i16(ib_tpl_t ib_tpl, ib_ulint_t i, int16_t *ival)
Read a signed int 16 bit column from an InnoDB tuple.
Definition: api0api.cc:2168
constexpr uint32_t IB_CFG_BINLOG_ENABLED
Definition: api0api.h:296
unsigned char ib_byte_t
Representation of a byte within InnoDB.
Definition: api0api.h:58
ib_err_t ib_trx_rollback(ib_trx_t ib_trx)
Rollback a transaction.
Definition: api0api.cc:601
row_prebuilt_t * ib_cursor_get_row_prebuilt(ib_crsr_t cursor)
Definition: api0api.cc:219
uint64_t ib_tuple_get_n_user_cols(const ib_tpl_t ib_tpl)
Return the number of user columns in the tuple definition.
Definition: api0api.cc:2302
struct ib_cursor_t * ib_crsr_t
InnoDB cursor handle.
Definition: api0api.h:337
constexpr uint32_t IB_CFG_MDL_ENABLED
Definition: api0api.h:297
FILE * ib_msg_stream_t
The first argument to the InnoDB message logging function.
Definition: api0api.h:307
ib_err_t ib_sdi_drop(space_id_t tablespace_id)
Drop SDI Index from tablespace.
Definition: api0api.cc:2901
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.
Definition: api0api.cc:757
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.
Definition: api0api.cc:1405
uint32_t space_id_t
Tablespace identifier.
Definition: api0api.h:49
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().
Definition: api0api.cc:1762
static const size_t REC_BUF_SLOT_SIZE
Used by ib_read_tuple to determine number of bytes to allocate for new slot if needed.
Definition: api0api.h:302
ib_err_t ib_cursor_close(ib_crsr_t ib_crsr)
Close an InnoDB table and free the cursor.
Definition: api0api.cc:956
ib_err_t ib_cursor_insert_row(ib_crsr_t ib_crsr, const ib_tpl_t ib_tpl)
Insert a row to a table.
Definition: api0api.cc:1107
ib_err_t ib_sdi_create(space_id_t tablespace_id)
Create SDI in a tablespace.
Definition: api0api.cc:2864
ib_tbl_fmt_t
InnoDB table format types.
Definition: api0api.h:144
@ IB_TBL_COMPRESSED
Similar to dynamic format but with pages compressed.
Definition: api0api.h:159
@ IB_TBL_DYNAMIC
Compact row format.
Definition: api0api.h:156
@ IB_TBL_COMPACT
Compact row format, the column type is not stored in the row.
Definition: api0api.h:148
@ IB_TBL_REDUNDANT
Redundant row format, the column type and length is stored in the row.
Definition: api0api.h:145
ib_err_t ib_cursor_lock(ib_crsr_t ib_crsr, ib_lck_mode_t ib_lck_mode)
Lock an InnoDB cursor/table.
Definition: api0api.cc:2357
ib_err_t ib_tuple_read_u16(ib_tpl_t ib_tpl, ib_ulint_t i, uint16_t *ival)
Read an unsigned int 16 bit column from an InnoDB tuple.
Definition: api0api.cc:2180
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.
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.
uint64_t ib_col_get_meta(ib_tpl_t ib_tpl, ib_ulint_t i, ib_col_meta_t *ib_col_meta)
Get a column type, length and attributes from the tuple.
Definition: api0api.cc:2095
constexpr uint32_t IB_CFG_DISABLE_ROWLOCK
Definition: api0api.h:298
ib_tpl_t ib_clust_read_tuple_create(ib_crsr_t ib_crsr)
Create an InnoDB tuple for table row operations.
Definition: api0api.cc:2287
ib_err_t ib_cursor_commit_trx(ib_crsr_t ib_crsr, ib_trx_t ib_trx)
Commit the transaction in a cursor.
Definition: api0api.cc:939
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
Definition: api0api.cc:915
ib_err_t ib_tuple_read_i8(ib_tpl_t ib_tpl, ib_ulint_t i, int8_t *ival)
Read a signed int 8 bit column from an InnoDB tuple.
Definition: api0api.cc:2144
bool ib_cursor_is_positioned(const ib_crsr_t ib_crsr)
Check if cursor is positioned.
Definition: api0api.cc:2339
uint64_t ib_cfg_bk_commit_interval()
Return configure value for background commit interval (in seconds)
Definition: api0api.cc:2421
bool 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.
Definition: api0api.cc:2348
ib_trx_t ib_trx_begin(ib_trx_level_t ib_trx_level, bool read_write, bool auto_commit, void *thd)
Begin a transaction.
Definition: api0api.cc:534
ib_match_mode_t
Various match modes used by ib_cursor_moveto()
Definition: api0api.h:237
@ IB_EXACT_MATCH
Search using a complete key value.
Definition: api0api.h:240
@ IB_EXACT_PREFIX
Search using a key prefix which must match to rows: the prefix may contain an incomplete field (the l...
Definition: api0api.h:243
@ IB_CLOSEST_MATCH
Closest match possible.
Definition: api0api.h:238
ib_err_t ib_cursor_reset(ib_crsr_t ib_crsr)
Reset the cursor.
Definition: api0api.cc:894
uint64_t ib_tuple_get_n_cols(const ib_tpl_t ib_tpl)
Return the number of columns in the tuple definition.
Definition: api0api.cc:2316
ib_trx_level_t
Transaction isolation levels.
Definition: api0api.h:266
@ IB_TRX_SERIALIZABLE
All plain SELECTs are converted to LOCK IN SHARE MODE reads.
Definition: api0api.h:289
@ IB_TRX_READ_COMMITTED
Somewhat Oracle-like isolation, except that in range UPDATE and DELETE we must block phantom rows wit...
Definition: api0api.h:274
@ IB_TRX_READ_UNCOMMITTED
Dirty read: non-locking SELECTs are performed so that we do not look at a possible earlier version of...
Definition: api0api.h:267
@ IB_TRX_REPEATABLE_READ
All consistent reads in the same trx read the same snapshot; full next-key locking used in locking re...
Definition: api0api.h:284
ib_col_type_t
column types that are supported.
Definition: api0api.h:102
@ IB_DECIMAL
C (double) floating point value.
Definition: api0api.h:134
@ IB_INT
Integer: can be any size from 1 - 8 bytes.
Definition: api0api.h:118
@ IB_DOUBLE
Definition: api0api.h:132
@ IB_SYS
System column, this column can be one of DATA_TRX_ID, DATA_ROLL_PTR or DATA_ROW_ID.
Definition: api0api.h:126
@ IB_VARBINARY
Variable length binary.
Definition: api0api.h:113
@ IB_CHAR_ANYCHARSET
Any charset, fixed length.
Definition: api0api.h:139
@ IB_BINARY
Fixed length binary, similar to IB_CHAR but the column is not padded to the right.
Definition: api0api.h:109
@ IB_VARCHAR
Character varying length.
Definition: api0api.h:103
@ IB_FLOAT
C (float) floating point value.
Definition: api0api.h:130
@ IB_CHAR
Fixed length character string.
Definition: api0api.h:106
@ IB_BLOB
Binary large object, or a TEXT type.
Definition: api0api.h:115
@ IB_VARCHAR_ANYCHARSET
Any charset, varying length.
Definition: api0api.h:137
struct ib_tuple_t * ib_tpl_t
InnoDB tuple handle.
Definition: api0api.h:323
void * ib_opaque_t
Definition: api0api.h:67
uint64_t ib_col_copy_value(ib_tpl_t ib_tpl, ib_ulint_t i, void *dst, uint32_t len)
Copy a column value from the tuple.
Definition: api0api.cc:1973
ib_err_t ib_tuple_read_u8(ib_tpl_t ib_tpl, ib_ulint_t i, uint8_t *ival)
Read an unsigned int 8 bit column from an InnoDB tuple.
Definition: api0api.cc:2156
ib_col_attr_t
InnoDB column attributes.
Definition: api0api.h:164
@ IB_COL_NONE
No special attributes.
Definition: api0api.h:165
@ IB_COL_NOT_USED
Future use, reserved.
Definition: api0api.h:171
@ IB_COL_CUSTOM3
Custom precision type, this is a bit that is ignored by InnoDB and so can be set and queried by users...
Definition: api0api.h:181
@ IB_COL_CUSTOM1
Custom precision type, this is a bit that is ignored by InnoDB and so can be set and queried by users...
Definition: api0api.h:173
@ IB_COL_CUSTOM2
Custom precision type, this is a bit that is ignored by InnoDB and so can be set and queried by users...
Definition: api0api.h:177
@ IB_COL_UNSIGNED
Column is IB_INT and unsigned.
Definition: api0api.h:169
@ IB_COL_NOT_NULL
Column data can't be NULL.
Definition: api0api.h:167
ib_opaque_t ib_charset_t
Definition: api0api.h:68
ib_err_t ib_cursor_next(ib_crsr_t ib_crsr)
Move cursor to the next record in the table.
Definition: api0api.cc:1684
void ib_cursor_stmt_begin(ib_crsr_t ib_crsr)
Inform the cursor that it's the start of an SQL statement.
Definition: api0api.cc:2406
ib_err_t ib_tuple_read_i32(ib_tpl_t ib_tpl, ib_ulint_t i, int32_t *ival)
Read a signed int 32 bit column from an InnoDB tuple.
Definition: api0api.cc:2192
ib_lck_mode_t
InnoDB lock modes.
Definition: api0api.h:188
@ IB_LOCK_X
Exclusive locks should be used to lock rows.
Definition: api0api.h:198
@ IB_LOCK_IS
Intention shared, an intention lock should be used to lock tables.
Definition: api0api.h:189
@ IB_LOCK_TABLE_X
exclusive table lock
Definition: api0api.h:201
@ IB_LOCK_IX
Intention exclusive, an intention lock should be used to lock tables.
Definition: api0api.h:192
@ IB_LOCK_S
Shared locks should be used to lock rows.
Definition: api0api.h:195
@ IB_LOCK_NONE
This is used internally to note consistent read.
Definition: api0api.h:203
@ IB_LOCK_NUM
number of lock modes
Definition: api0api.h:206
const char * ib_get_idx_field_name(ib_crsr_t ib_crsr, ib_ulint_t i)
Get an index field name from the cursor.
Definition: api0api.cc:2080
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.
Definition: api0api.cc:2371
ib_trx_level_t ib_cfg_trx_level()
Return isolation configuration set by "innodb_api_trx_level".
Definition: api0api.cc:2415
uint32_t ib_trx_read_only(ib_trx_t ib_trx)
Check if the transaction is read_only.
Definition: api0api.cc:555
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).
Definition: api0api.h:311
ib_err_t ib_tuple_read_u32(ib_tpl_t ib_tpl, ib_ulint_t i, uint32_t *ival)
Read an unsigned int 32 bit column from an InnoDB tuple.
Definition: api0api.cc:2204
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.
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.
Definition: api0api.cc:2444
uint64_t ib_id_u64_t
Definition: api0api.h:69
int(* ib_client_cmp_t)(const ib_col_meta_t *col_meta, const ib_byte_t *p1, uint64_t p1_len, const ib_byte_t *p2, uint64_t p2_len)
This function is used to compare two data fields for which the data type is such that we must use the...
Definition: api0api.h:352
uint32_t page_no_t
Page number.
Definition: api0api.h:47
ib_err_t ib_cursor_delete_row(ib_crsr_t ib_crsr)
Delete a row in a table.
Definition: api0api.cc:1508
ib_err_t ib_cursor_read_row(ib_crsr_t ib_crsr, ib_tpl_t ib_tpl, ib_tpl_t cmp_tpl, int mode, void **row_buf, uint64_t *row_len, uint64_t *used_len)
Read current row.
Definition: api0api.cc:1576
ib_err_t ib_tuple_read_u64(ib_tpl_t ib_tpl, ib_ulint_t i, uint64_t *ival)
Read an unsigned int 64 bit column from an InnoDB tuple.
Definition: api0api.cc:2228
ib_err_t ib_trx_start(ib_trx_t ib_trx, ib_trx_level_t ib_trx_level, bool read_write, bool auto_commit, void *thd)
Start a transaction that's been rolled back.
Definition: api0api.cc:502
void(* ib_cb_t)(void)
Generical InnoDB callback prototype.
Definition: api0api.h:294
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.
Definition: api0api.cc:822
int ib_cfg_get_cfg()
Get generic configure status.
Definition: api0api.cc:2425
ib_err_t ib_trx_commit(ib_trx_t ib_trx)
Commit a transaction.
Definition: api0api.cc:584
const void * ib_col_get_value(ib_tpl_t ib_tpl, ib_ulint_t i)
Get a column value pointer from the tuple.
Definition: api0api.cc:2240
struct trx_t * ib_trx_t
InnoDB transaction handle, all database operations need to be covered by transactions.
Definition: api0api.h:334
ib_index_type_t
Definition: api0api.h:209
@ IB_UNIQUE
unique index
Definition: api0api.h:211
@ IB_CLUSTERED
clustered index
Definition: api0api.h:210
ib_err_t ib_trx_release(ib_trx_t ib_trx)
Release the resources of the transaction.
Definition: api0api.cc:571
ib_srch_mode_t
InnoDB cursor search modes for ib_cursor_moveto().
Definition: api0api.h:216
@ IB_CUR_L
If search key is not found then position the cursor on the row that is less than the search key.
Definition: api0api.h:226
@ IB_CUR_GE
If the search key not found then position the cursor on the row that is greater than or equal to the ...
Definition: api0api.h:221
@ IB_CUR_G
If search key is not found then position the cursor on the row that is greater than the search key.
Definition: api0api.h:217
@ IB_CUR_LE
If search key is not found then position the cursor on the row that is less than or equal to the sear...
Definition: api0api.h:230
void ib_cursor_set_cluster_access(ib_crsr_t ib_crsr)
Set need to access clustered index record flag.
Definition: api0api.cc:2396
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.
Definition: api0api.cc:2068
unsigned long int ib_ulint_t
Representation of an unsigned long int within InnoDB.
Definition: api0api.h:64
SQL data field and tuple.
Global error codes for the database.
dberr_t
Definition: db0err.h:39
const std::string FILE("FILE")
mode
Definition: file_handle.h:61
case opt name
Definition: sslopt-case.h:29
Structure for an SQL data tuple of fields (logical record)
Definition: data0data.h:696
Cursor instance for traversing tables/indexes.
Definition: api0api.cc:127
Definition: api0misc.h:61
Definition: api0misc.h:65
InnoDB tuple used for key operations.
Definition: api0api.cc:203
A struct for (sometimes lazily) prebuilt structures in an Innobase table handle used within MySQL; th...
Definition: row0mysql.h:515
trx_t * trx
current transaction handle
Definition: row0mysql.h:525
Definition: trx0trx.h:675