summaryrefslogtreecommitdiff
path: root/innobase/row/row0umod.c
diff options
context:
space:
mode:
authorunknown <heikki@donna.mysql.fi>2001-04-27 21:12:15 +0300
committerunknown <heikki@donna.mysql.fi>2001-04-27 21:12:15 +0300
commitd067af6a168860548f31175966bfc830028dd5f6 (patch)
tree3939255428e4a2bb73bc080f3f3c953286857644 /innobase/row/row0umod.c
parent26f9b9af380f411f4d5f6a23a228e0ab32e1bd92 (diff)
downloadmariadb-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.c18
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;