29 #include "row0uins.ic"
75 row_undo_ins_remove_clust_rec(
91 if (node->
table->
id == DICT_INDEXES_ID) {
104 &(node->
pcur), &mtr);
108 btr_cur = btr_pcur_get_btr_cur(&(node->
pcur));
124 &(node->
pcur), &mtr);
136 if (err == DB_OUT_OF_FILE_SPACE
160 row_undo_ins_remove_sec_low(
176 btr_cur = btr_pcur_get_btr_cur(&pcur);
183 switch (search_result) {
199 ? DB_SUCCESS : DB_FAIL;
225 row_undo_ins_remove_sec(
237 if (err == DB_SUCCESS) {
266 row_undo_ins_parse_undo_rec(
281 &dummy_extern, &undo_no, &table_id);
282 ut_ad(type == TRX_UNDO_INSERT_REC);
289 if (UNIV_UNLIKELY(node->
table == NULL)) {
293 clust_index = dict_table_get_first_index(node->
table);
295 if (clust_index != NULL) {
297 ptr, clust_index, &node->
ref, node->
heap);
300 fprintf(stderr,
" InnoDB: table ");
303 fprintf(stderr,
" has no indexes, "
304 "ignoring the table\n");
327 row_undo_ins_parse_undo_rec(node);
338 node->
index = dict_table_get_next_index(
339 dict_table_get_first_index(node->
table));
341 while (node->
index != NULL) {
347 if (UNIV_UNLIKELY(!entry)) {
360 err = row_undo_ins_remove_sec(node->
index, entry);
362 if (err != DB_SUCCESS) {
368 node->
index = dict_table_get_next_index(node->
index);
372 return(row_undo_ins_remove_clust_rec(node));
UNIV_INTERN byte * trx_undo_rec_get_row_ref(byte *ptr, dict_index_t *index, dtuple_t **ref, mem_heap_t *heap)
UNIV_INTERN ibool trx_is_recv(const trx_t *trx)
UNIV_INTERN ibool btr_cur_optimistic_delete(btr_cur_t *cursor, mtr_t *mtr)
trx_undo_rec_t * undo_rec
UNIV_INTERN dtuple_t * row_build_index_entry(const dtuple_t *row, row_ext_t *ext, dict_index_t *index, mem_heap_t *heap)
UNIV_INTERN dict_table_t * dict_table_get_on_id(table_id_t table_id, trx_t *trx)
UNIV_INLINE void btr_pcur_close(btr_pcur_t *cursor)
UNIV_INTERN void mtr_commit(mtr_t *mtr) __attribute__((nonnull))
UNIV_INLINE void log_free_check(void)
UNIV_INTERN void os_thread_sleep(ulint tm)
UNIV_INTERN enum row_search_result row_search_index_entry(dict_index_t *index, const dtuple_t *entry, ulint mode, btr_pcur_t *pcur, mtr_t *mtr)
UNIV_INLINE ulint dict_index_is_clust(const dict_index_t *index) __attribute__((pure))
ulint dict_operation_lock_mode
UNIV_INTERN void ut_print_name(FILE *f, struct trx_struct *trx, ibool table_id, const char *name)
UNIV_INTERN ibool btr_cur_pessimistic_delete(ulint *err, ibool has_reserved_extents, btr_cur_t *cursor, enum trx_rb_ctx rb_ctx, mtr_t *mtr)
unsigned ibd_file_missing
UNIV_INTERN void trx_undo_rec_release(trx_t *trx, undo_no_t undo_no)
UNIV_INTERN void ut_print_timestamp(FILE *file)
UNIV_INLINE void mtr_start(mtr_t *mtr) __attribute__((nonnull))
#define BTR_CUR_RETRY_DELETE_N_TIMES
UNIV_INTERN ibool row_undo_search_clust_to_pcur(undo_node_t *node)
UNIV_INTERN ulint row_undo_ins(undo_node_t *node)
#define BTR_CUR_RETRY_SLEEP_TIME
UNIV_INLINE void btr_pcur_commit_specify_mtr(btr_pcur_t *pcur, mtr_t *mtr)
UNIV_INTERN byte * trx_undo_rec_get_pars(trx_undo_rec_t *undo_rec, ulint *type, ulint *cmpl_info, ibool *updated_extern, undo_no_t *undo_no, table_id_t *table_id)
UNIV_INTERN void dict_drop_index_tree(rec_t *rec, mtr_t *mtr)