diff options
author | svoj@mysql.com/april.(none) <> | 2006-12-05 18:44:14 +0400 |
---|---|---|
committer | svoj@mysql.com/april.(none) <> | 2006-12-05 18:44:14 +0400 |
commit | 3cfd578ea7efa50805d2a069e6e180331ba41358 (patch) | |
tree | 9bfaf90b766af893236c8c1d47c5bc549205eab2 /include | |
parent | 763fdea487e690ba9332e50397e93f32d2a54a43 (diff) | |
download | mariadb-git-3cfd578ea7efa50805d2a069e6e180331ba41358.tar.gz |
BUG#23526 - show table status reports incorrect values for MyISAM tables
This problem could happen when show table status get outdated copy
of TABLE object from table cache.
MyISAM updates state info when external_lock() method is called. Though
I_S does not lock a table to avoid deadlocks. If I_S opens a table which
is in a table cache it will likely get outdated state info copy.
In this case shared state copy is more recent than local copy. This problem
is fixed by correctly restoring myisam state info pointer back to original
value, that is to shared state.
Affects MyISAM only. No good deterministic test case for this fix.
Diffstat (limited to 'include')
-rw-r--r-- | include/thr_lock.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/thr_lock.h b/include/thr_lock.h index 251d8e7c9cf..d34358d5a6b 100644 --- a/include/thr_lock.h +++ b/include/thr_lock.h @@ -122,6 +122,7 @@ typedef struct st_thr_lock { void (*get_status)(void*, int); /* When one gets a lock */ void (*copy_status)(void*,void*); void (*update_status)(void*); /* Before release of write */ + void (*restore_status)(void*); /* Before release of read */ my_bool (*check_status)(void *); } THR_LOCK; |