diff options
author | Sergey Vojtovich <svoj@sun.com> | 2009-11-02 18:36:55 +0400 |
---|---|---|
committer | Sergey Vojtovich <svoj@sun.com> | 2009-11-02 18:36:55 +0400 |
commit | 7e317016e66da1e3791ac32147c64bafa168c979 (patch) | |
tree | 82d4fa7cba8faf963cfc9e882daffb9b85a5af59 /storage/innobase/handler | |
parent | e7452e7b685ad252d4a9bfcd2a85031cb943117f (diff) | |
download | mariadb-git-7e317016e66da1e3791ac32147c64bafa168c979.tar.gz |
Applying InnoDB snashot 5.1-ss6129
Detailed revision comments:
r6032 | vasil | 2009-10-01 15:55:49 +0300 (Thu, 01 Oct 2009) | 8 lines
branches/5.1:
Fix Bug#38996 Race condition in ANALYZE TABLE
by serializing ANALYZE TABLE inside InnoDB.
Approved by: Heikki (rb://175)
Diffstat (limited to 'storage/innobase/handler')
-rw-r--r-- | storage/innobase/handler/ha_innodb.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 4160fb23940..ae2827b1acd 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -54,6 +54,7 @@ static ulong commit_threads = 0; static pthread_mutex_t commit_threads_m; static pthread_cond_t commit_cond; static pthread_mutex_t commit_cond_m; +static pthread_mutex_t analyze_mutex; static bool innodb_inited = 0; /* @@ -1932,6 +1933,7 @@ innobase_init( pthread_mutex_init(&prepare_commit_mutex, MY_MUTEX_INIT_FAST); pthread_mutex_init(&commit_threads_m, MY_MUTEX_INIT_FAST); pthread_mutex_init(&commit_cond_m, MY_MUTEX_INIT_FAST); + pthread_mutex_init(&analyze_mutex, MY_MUTEX_INIT_FAST); pthread_cond_init(&commit_cond, NULL); innodb_inited= 1; @@ -1971,6 +1973,7 @@ innobase_end(handlerton *hton, ha_panic_function type) pthread_mutex_destroy(&prepare_commit_mutex); pthread_mutex_destroy(&commit_threads_m); pthread_mutex_destroy(&commit_cond_m); + pthread_mutex_destroy(&analyze_mutex); pthread_cond_destroy(&commit_cond); } @@ -6430,9 +6433,15 @@ ha_innobase::analyze( THD* thd, /* in: connection thread handle */ HA_CHECK_OPT* check_opt) /* in: currently ignored */ { + /* Serialize ANALYZE TABLE inside InnoDB, see + Bug#38996 Race condition in ANALYZE TABLE */ + pthread_mutex_lock(&analyze_mutex); + /* Simply call ::info() with all the flags */ info(HA_STATUS_TIME | HA_STATUS_CONST | HA_STATUS_VARIABLE); + pthread_mutex_unlock(&analyze_mutex); + return(0); } |