diff options
author | unknown <heikki@donna.mysql.fi> | 2001-04-27 21:12:15 +0300 |
---|---|---|
committer | unknown <heikki@donna.mysql.fi> | 2001-04-27 21:12:15 +0300 |
commit | d067af6a168860548f31175966bfc830028dd5f6 (patch) | |
tree | 3939255428e4a2bb73bc080f3f3c953286857644 /innobase/row/row0umod.c | |
parent | 26f9b9af380f411f4d5f6a23a228e0ab32e1bd92 (diff) | |
download | mariadb-git-d067af6a168860548f31175966bfc830028dd5f6.tar.gz |
row0sel.c Fix a bug in multiversioned reads through a secondary index
row0uins.c Partial fix to the DROP TABLE + another user rolls back in that table problem
row0umod.c Partial fix to the DROP TABLE + another user rolls back in that table problem
os0file.c Reduce probability of deadlock bugs in connection with ibuf: do not let the ibuf i/o handler sleep
innobase/os/os0file.c:
Reduce probability of deadlock bugs in connection with ibuf: do not let the ibuf i/o handler sleep
innobase/row/row0uins.c:
Partial fix to the DROP TABLE + another user rolls back in that table problem
innobase/row/row0umod.c:
Partial fix to the DROP TABLE + another user rolls back in that table problem
innobase/row/row0sel.c:
Fix a bug in multiversioned reads through a secondary index
Diffstat (limited to 'innobase/row/row0umod.c')
-rw-r--r-- | innobase/row/row0umod.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/innobase/row/row0umod.c b/innobase/row/row0umod.c index 2aa223a6186..84e8d9ee5f5 100644 --- a/innobase/row/row0umod.c +++ b/innobase/row/row0umod.c @@ -534,9 +534,16 @@ row_undo_mod_parse_undo_rec( &undo_no, &table_id); node->rec_type = type; - /* NOTE that the table has to be explicitly released later */ node->table = dict_table_get_on_id(table_id, thr_get_trx(thr)); + /* TODO: other fixes associated with DROP TABLE + rollback in the + same table by another user */ + + if (node->table == NULL) { + /* Table was dropped */ + return; + } + clust_index = dict_table_get_first_index(node->table); ptr = trx_undo_update_rec_get_sys_cols(ptr, &trx_id, &roll_ptr, @@ -571,11 +578,16 @@ row_undo_mod( row_undo_mod_parse_undo_rec(node, thr); - found = row_undo_search_clust_to_pcur(node, thr); + if (node->table == NULL) { + found = FALSE; + } else { + + found = row_undo_search_clust_to_pcur(node, thr); + } if (!found) { /* It is already undone, or will be undone by another query - thread */ + thread, or table was dropped */ node->state = UNDO_NODE_FETCH_NEXT; |