377 bool auto_commit,
void *thd);
402 const char *index_name,
491 uint64_t len,
bool need_cpy);
747 void *comp_sdi, uint32_t *comp_sdi_len,
748 uint32_t *uncomp_sdi_len,
ib_trx_t trx);
760 uint32_t uncomp_len, uint32_t comp_len,
const void *sdi,
794#define FOR_EACH_API_METHOD_NAME_STEM(transform) \
795 transform(cursor_open_table) \
796 transform(cursor_read_row) \
797 transform(cursor_insert_row) \
798 transform(cursor_delete_row) \
799 transform(cursor_update_row) \
800 transform(cursor_moveto) \
801 transform(cursor_first) \
802 transform(cursor_next) \
803 transform(cursor_set_match_mode) \
804 transform(sec_search_tuple_create) \
805 transform(clust_read_tuple_create) \
806 transform(tuple_delete) \
807 transform(tuple_read_u8) \
808 transform(tuple_read_u16) \
809 transform(tuple_read_u32) \
810 transform(tuple_read_u64) \
811 transform(tuple_read_i8) \
812 transform(tuple_read_i16) \
813 transform(tuple_read_i32) \
814 transform(tuple_read_i64) \
815 transform(tuple_get_n_cols) \
816 transform(col_set_value) \
817 transform(col_get_value) \
818 transform(col_get_meta) \
819 transform(trx_begin) \
820 transform(trx_commit) \
821 transform(trx_rollback) \
822 transform(trx_start) \
823 transform(trx_release) \
824 transform(cursor_lock) \
825 transform(cursor_close) \
826 transform(cursor_new_trx) \
827 transform(cursor_reset) \
828 transform(col_get_name) \
829 transform(cursor_open_index_using_name) \
830 transform(cfg_get_cfg) \
831 transform(cursor_set_cluster_access) \
832 transform(cursor_commit_trx) \
833 transform(cfg_trx_level) \
834 transform(tuple_get_n_user_cols) \
835 transform(cursor_set_lock_mode) \
836 transform(get_idx_field_name) \
837 transform(trx_get_start_time) \
838 transform(cfg_bk_commit_interval) \
839 transform(ut_strerr) \
840 transform(cursor_stmt_begin) \
841 transform(trx_read_only) \
842 transform(is_virtual_table)
constexpr uint32_t IB_SQL_NULL
Represents SQL_NULL length.
Definition: api0api.h:351
void ib_tuple_delete(ib_tpl_t ib_tpl)
Destroy an InnoDB tuple.
Definition: api0api.cc:2455
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:2377
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:70
@ IB_CFG_ULINT
The configuration parameter is of type ulint.
Definition: api0api.h:86
@ IB_CFG_ULONG
The configuration parameter is of type ulong.
Definition: api0api.h:89
@ IB_CFG_TEXT
The configuration parameter is of type char*.
Definition: api0api.h:92
@ IB_CFG_CB
The configuration parameter is a callback parameter.
Definition: api0api.h:95
@ IB_CFG_BOOL
The configuration parameter is of type bool.
Definition: api0api.h:71
ib_err_t ib_cursor_first(ib_crsr_t ib_crsr)
Move cursor to the first record in the table.
Definition: api0api.cc:1698
bool ib_is_virtual_table(ib_crsr_t crsr)
Check the table whether it contains virtual columns.
Definition: api0api.cc:898
ib_err_t ib_sdi_flush(space_id_t space_id)
Flush SDI in a tablespace.
Definition: api0api.cc:3175
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:1817
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:1728
uint64_t ib_trx_get_start_time(ib_trx_t ib_trx)
Get a trx start time.
Definition: api0api.cc:567
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:2246
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:2402
enum dberr_t ib_err_t
All InnoDB error codes are represented by ib_err_t.
Definition: api0api.h:54
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:2198
constexpr uint32_t IB_CFG_BINLOG_ENABLED
Definition: api0api.h:294
unsigned char ib_byte_t
Representation of a byte within InnoDB.
Definition: api0api.h:56
ib_err_t ib_trx_rollback(ib_trx_t ib_trx)
Rollback a transaction.
Definition: api0api.cc:605
ib_err_t ib_tuple_write_double(ib_tpl_t ib_tpl, int col_no, double val)
Write a double value to a column.
Definition: api0api.cc:2561
ib_tpl_t ib_tuple_clear(ib_tpl_t ib_tpl)
"Clear" or reset an InnoDB tuple.
Definition: api0api.cc:2286
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:2432
struct ib_cursor_t * ib_crsr_t
InnoDB cursor handle.
Definition: api0api.h:333
constexpr uint32_t IB_CFG_MDL_ENABLED
Definition: api0api.h:295
FILE * ib_msg_stream_t
The first argument to the InnoDB message logging function.
Definition: api0api.h:305
ib_err_t ib_sdi_drop(space_id_t tablespace_id)
Drop SDI Index from tablespace.
Definition: api0api.cc:3121
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:783
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 ...
Definition: api0api.cc:2310
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:1428
ib_err_t ib_tuple_read_double(ib_tpl_t ib_tpl, uint64_t col_no, double *dval)
Read a double column value from an InnoDB tuple.
Definition: api0api.cc:2580
uint32_t space_id_t
Tablespace identifier.
Definition: api0api.h:47
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:1780
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:300
ib_err_t ib_cursor_close(ib_crsr_t ib_crsr)
Close an InnoDB table and free the cursor.
Definition: api0api.cc:980
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:1130
ib_err_t ib_sdi_create(space_id_t tablespace_id)
Create SDI in a tablespace.
Definition: api0api.cc:3084
ib_tbl_fmt_t
InnoDB table format types.
Definition: api0api.h:142
@ IB_TBL_COMPRESSED
Similar to dynamic format but with pages compressed.
Definition: api0api.h:157
@ IB_TBL_DYNAMIC
Compact row format.
Definition: api0api.h:154
@ IB_TBL_COMPACT
Compact row format, the column type is not stored in the row.
Definition: api0api.h:146
@ IB_TBL_REDUNDANT
Redundant row format, the column type and length is stored in the row.
Definition: api0api.h:143
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:2503
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:2210
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.
ib_err_t ib_tuple_write_float(ib_tpl_t ib_tpl, int col_no, float val)
Write a float value to a column.
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:2125
constexpr uint32_t IB_CFG_DISABLE_ROWLOCK
Definition: api0api.h:296
uint64_t ib_col_get_len(ib_tpl_t ib_tpl, ib_ulint_t i)
Get the size of the data available in the column the tuple.
Definition: api0api.cc:1991
ib_tpl_t ib_clust_read_tuple_create(ib_crsr_t ib_crsr)
Create an InnoDB tuple for table row operations.
Definition: api0api.cc:2417
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:963
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:939
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:2174
bool ib_cursor_is_positioned(const ib_crsr_t ib_crsr)
Check if cursor is positioned.
Definition: api0api.cc:2485
uint64_t ib_cfg_bk_commit_interval()
Return configure value for background commit interval (in seconds)
Definition: api0api.cc:2643
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:2494
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:538
ib_tpl_t ib_sec_read_tuple_create(ib_crsr_t ib_crsr)
Create an InnoDB tuple used for index/table search.
Definition: api0api.cc:2390
ib_match_mode_t
Various match modes used by ib_cursor_moveto()
Definition: api0api.h:235
@ IB_EXACT_MATCH
Search using a complete key value.
Definition: api0api.h:238
@ 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:241
@ IB_CLOSEST_MATCH
Closest match possible.
Definition: api0api.h:236
ib_err_t ib_cursor_reset(ib_crsr_t ib_crsr)
Reset the cursor.
Definition: api0api.cc:918
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:2446
ib_trx_level_t
Transaction isolation levels.
Definition: api0api.h:264
@ IB_TRX_SERIALIZABLE
All plain SELECTs are converted to LOCK IN SHARE MODE reads.
Definition: api0api.h:287
@ IB_TRX_READ_COMMITTED
Somewhat Oracle-like isolation, except that in range UPDATE and DELETE we must block phantom rows wit...
Definition: api0api.h:272
@ 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:265
@ 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:282
ib_col_type_t
column types that are supported.
Definition: api0api.h:100
@ IB_DECIMAL
C (double) floating point value.
Definition: api0api.h:132
@ IB_INT
Integer: can be any size from 1 - 8 bytes.
Definition: api0api.h:116
@ IB_DOUBLE
Definition: api0api.h:130
@ IB_SYS
System column, this column can be one of DATA_TRX_ID, DATA_ROLL_PTR or DATA_ROW_ID.
Definition: api0api.h:124
@ IB_VARBINARY
Variable length binary.
Definition: api0api.h:111
@ IB_CHAR_ANYCHARSET
Any charset, fixed length.
Definition: api0api.h:137
@ IB_BINARY
Fixed length binary, similar to IB_CHAR but the column is not padded to the right.
Definition: api0api.h:107
@ IB_VARCHAR
Character varying length.
Definition: api0api.h:101
@ IB_FLOAT
C (float) floating point value.
Definition: api0api.h:128
@ IB_CHAR
Fixed length character string.
Definition: api0api.h:104
@ IB_BLOB
Binary large object, or a TEXT type.
Definition: api0api.h:113
@ IB_VARCHAR_ANYCHARSET
Any charset, varying length.
Definition: api0api.h:135
struct ib_tuple_t * ib_tpl_t
InnoDB tuple handle.
Definition: api0api.h:321
ib_err_t ib_table_get_id(const char *table_name, ib_id_u64_t *table_id)
Get a table id.
Definition: api0api.cc:2468
void * ib_opaque_t
Definition: api0api.h:65
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:2003
ib_err_t ib_tuple_read_float(ib_tpl_t ib_tpl, uint64_t col_no, float *fval)
Read a float value from an InnoDB tuple.
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:2186
ib_col_attr_t
InnoDB column attributes.
Definition: api0api.h:162
@ IB_COL_NONE
No special attributes.
Definition: api0api.h:163
@ IB_COL_NOT_USED
Future use, reserved.
Definition: api0api.h:169
@ 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:179
@ 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:171
@ 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:175
@ IB_COL_UNSIGNED
Column is IB_INT and unsigned.
Definition: api0api.h:167
@ IB_COL_NOT_NULL
Column data can't be NULL.
Definition: api0api.h:165
ib_opaque_t ib_charset_t
Definition: api0api.h:66
ib_err_t ib_cursor_next(ib_crsr_t ib_crsr)
Move cursor to the next record in the table.
Definition: api0api.cc:1707
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:2552
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:2222
ib_lck_mode_t
InnoDB lock modes.
Definition: api0api.h:186
@ IB_LOCK_X
Exclusive locks should be used to lock rows.
Definition: api0api.h:196
@ IB_LOCK_IS
Intention shared, an intention lock should be used to lock tables.
Definition: api0api.h:187
@ IB_LOCK_TABLE_X
exclusive table lock
Definition: api0api.h:199
@ IB_LOCK_IX
Intention exclusive, an intention lock should be used to lock tables.
Definition: api0api.h:190
@ IB_LOCK_S
Shared locks should be used to lock rows.
Definition: api0api.h:193
@ IB_LOCK_NONE
This is used internally to note consistent read.
Definition: api0api.h:201
@ IB_LOCK_NUM
number of lock modes
Definition: api0api.h:204
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:2110
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:2517
ib_trx_level_t ib_cfg_trx_level()
Return isolation configuration set by "innodb_api_trx_level".
Definition: api0api.cc:2637
uint32_t ib_trx_read_only(ib_trx_t ib_trx)
Check if the transaction is read_only.
Definition: api0api.cc:559
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:309
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:2234
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:2666
uint64_t ib_id_u64_t
Definition: api0api.h:67
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:345
uint32_t page_no_t
Page number.
Definition: api0api.h:45
ib_err_t ib_cursor_delete_row(ib_crsr_t ib_crsr)
Delete a row in a table.
Definition: api0api.cc:1531
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:1599
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:2258
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:506
void(* ib_cb_t)(void)
Generical InnoDB callback prototype.
Definition: api0api.h:292
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:848
int ib_cfg_get_cfg()
Get generic configure status.
Definition: api0api.cc:2647
ib_err_t ib_trx_commit(ib_trx_t ib_trx)
Commit a transaction.
Definition: api0api.cc:588
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:2270
struct trx_t * ib_trx_t
InnoDB transaction handle, all database operations need to be covered by transactions.
Definition: api0api.h:330
ib_index_type_t
Definition: api0api.h:207
@ IB_UNIQUE
unique index
Definition: api0api.h:209
@ IB_CLUSTERED
clustered index
Definition: api0api.h:208
ib_err_t ib_trx_release(ib_trx_t ib_trx)
Release the resources of the transaction.
Definition: api0api.cc:575
ib_srch_mode_t
InnoDB cursor search modes for ib_cursor_moveto().
Definition: api0api.h:214
@ 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:224
@ 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:219
@ 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:215
@ 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:228
void ib_cursor_set_cluster_access(ib_crsr_t ib_crsr)
Set need to access clustered index record flag.
Definition: api0api.cc:2542
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:2098
unsigned long int ib_ulint_t
Representation of an unsigned long int within InnoDB.
Definition: api0api.h:62
Global error codes for the database.
dberr_t
Definition: db0err.h:39
#define dval(x)
Definition: dtoa.cc:601
const std::string FILE("FILE")
const char * table_name
Definition: rules_table_service.cc:56
mode
Definition: file_handle.h:61
case opt name
Definition: sslopt-case.h:29
Cursor instance for traversing tables/indexes.
Definition: api0api.cc:126
ib_match_mode_t match_mode
ib_cursor_moveto match mode
Definition: api0api.cc:133
Definition: api0misc.h:61
Definition: api0misc.h:65
InnoDB tuple used for key operations.
Definition: api0api.cc:202
Definition: trx0trx.h:684