summaryrefslogtreecommitdiff
path: root/myisam
diff options
context:
space:
mode:
authorunknown <mronstrom@mysql.com>2005-06-03 22:52:24 +0200
committerunknown <mronstrom@mysql.com>2005-06-03 22:52:24 +0200
commit26bd158216e600c5f7ec7eaec9007fa761ea5195 (patch)
tree77ad901d0b8973c4e698331e4257ef13d3d40ced /myisam
parentf956ecd09a4897b5f7e65a0441445a52406a3a8a (diff)
downloadmariadb-git-26bd158216e600c5f7ec7eaec9007fa761ea5195.tar.gz
Bug #10901
After review fix Copy from internal state to share state only when in lock write mode (happens only when lock table x write has been performed since update_state_info is only called when holding a TL_READ_NO_INSERT lock normally. Previous patch would have failed in combination with delayed writes.
Diffstat (limited to 'myisam')
-rw-r--r--myisam/mi_check.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/myisam/mi_check.c b/myisam/mi_check.c
index 16946adb3e8..a7c3d2a6f7e 100644
--- a/myisam/mi_check.c
+++ b/myisam/mi_check.c
@@ -3626,9 +3626,11 @@ int update_state_info(MI_CHECK *param, MI_INFO *info,uint update)
/*
When tables are locked we haven't synched the share state and the
real state for a while so we better do it here before synching
- the share state to disk.
+ the share state to disk. Only when table is write locked is it
+ necessary to perform this synch.
*/
- share->state.state= *info->state;
+ if (info->lock_type == F_WRLCK)
+ share->state.state= *info->state;
if (mi_state_info_write(share->kfile,&share->state,1+2))
goto err;
share->changed=0;