29 #include "row0uins.ic" 
   64 static  __attribute__((nonnull, warn_unused_result))
 
   66 row_undo_ins_remove_clust_rec(
 
   90                 ut_ad(node->trx->dict_operation_lock_mode
 
   92                 ut_ad(node->table->id != DICT_INDEXES_ID);
 
   96         success = btr_pcur_restore_position(
 
  102         btr_cur = btr_pcur_get_btr_cur(&node->pcur);
 
  104         ut_ad(rec_get_trx_id(btr_cur_get_rec(btr_cur), btr_cur->
index)
 
  108                 const rec_t*    
rec     = btr_cur_get_rec(btr_cur);
 
  110                 const ulint*    
offsets = rec_get_offsets(
 
  111                         rec, index, NULL, ULINT_UNDEFINED, &heap);
 
  113                         rec, index, offsets, 
true, node->trx->
id);
 
  117         if (node->table->id == DICT_INDEXES_ID) {
 
  119                 ut_ad(node->trx->dict_operation_lock_mode == RW_X_LATCH);
 
  130                 success = btr_pcur_restore_position(
 
  135         if (btr_cur_optimistic_delete(btr_cur, 0, &mtr)) {
 
  146                                             &(node->pcur), &mtr);
 
  158         if (err == DB_OUT_OF_FILE_SPACE
 
  180 static __attribute__((nonnull, warn_unused_result))
 
  182 row_undo_ins_remove_sec_low(
 
  209                 goto func_exit_no_pcur;
 
  215         switch (search_result) {
 
  228         btr_cur = btr_pcur_get_btr_cur(&pcur);
 
  231                 err = btr_cur_optimistic_delete(btr_cur, 0, &mtr)
 
  232                         ? DB_SUCCESS : DB_FAIL;
 
  255 static __attribute__((nonnull, warn_unused_result))
 
  257 row_undo_ins_remove_sec(
 
  269         if (err == DB_SUCCESS) {
 
  298 row_undo_ins_parse_undo_rec(
 
  314                                     &dummy_extern, &undo_no, &table_id);
 
  315         ut_ad(type == TRX_UNDO_INSERT_REC);
 
  323         if (UNIV_UNLIKELY(node->
table == NULL)) {
 
  329                 clust_index = dict_table_get_first_index(node->
table);
 
  331                 if (clust_index != NULL) {
 
  333                                 ptr, clust_index, &node->
ref, node->
heap);
 
  341                         fprintf(stderr, 
"  InnoDB: table ");
 
  344                         fprintf(stderr, 
" has no indexes, " 
  345                                 "ignoring the table\n");
 
  354 static __attribute__((nonnull, warn_unused_result))
 
  356 row_undo_ins_remove_sec_rec(
 
  366         while (index != NULL) {
 
  369                 if (index->
type & DICT_FTS) {
 
  370                         dict_table_next_uncorrupted_index(index);
 
  379                         node->row, node->ext, index, heap);
 
  380                 if (UNIV_UNLIKELY(!entry)) {
 
  393                         err = row_undo_ins_remove_sec(index, entry);
 
  395                         if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
 
  401                 dict_table_next_uncorrupted_index(index);
 
  430         row_undo_ins_parse_undo_rec(node, dict_locked);
 
  432         if (node->
table == NULL) {
 
  440         node->
index = dict_table_get_first_index(node->
table);
 
  443         node->
index = dict_table_get_next_index(node->
index);
 
  445         dict_table_skip_corrupt_index(node->
index);
 
  447         err = row_undo_ins_remove_sec_rec(node);
 
  449         if (err == DB_SUCCESS) {
 
  453                 if (node->
table->
id == DICT_INDEXES_ID) {
 
  462                 err = row_undo_ins_remove_clust_rec(node);
 
  464                 if (node->
table->
id == DICT_INDEXES_ID