diff options
author | unknown <elliot@mysql.com> | 2006-06-20 13:43:13 -0400 |
---|---|---|
committer | unknown <elliot@mysql.com> | 2006-06-20 13:43:13 -0400 |
commit | b250722087ea2e99916c2b5bdfadbd51965f37cc (patch) | |
tree | 6640c55b79e5bebb77e1a194bbade17b6cc55213 /sql/ha_innodb.cc | |
parent | 70a087e53daddaab806b39ad410ee9d026730e8f (diff) | |
download | mariadb-git-b250722087ea2e99916c2b5bdfadbd51965f37cc.tar.gz |
Applying patch from SergeyV
Fixes bug#17264, for alter table on win32 for successfull operation completion
it is used TL_WRITE(=10) lock instead of TL_WRITE_ALLOW_READ(=6), however here
in innodb handler TL_WRTIE is lifted to TL_WRITE_ALLOW_WRITE, which causes
race condition when several clients do alter table simultaneously.
mysql-test/r/lock_multi.result:
Test case for bug#17264.
mysql-test/t/lock_multi.test:
Test case for bug#17264
Diffstat (limited to 'sql/ha_innodb.cc')
-rw-r--r-- | sql/ha_innodb.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 28cdfd23b6a..6aadce0191a 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -6684,6 +6684,17 @@ ha_innobase::store_lock( && !thd->tablespace_op && thd->lex->sql_command != SQLCOM_TRUNCATE && thd->lex->sql_command != SQLCOM_OPTIMIZE +#ifdef __WIN__ + /* + for alter table on win32 for succesfull operation + completion it is used TL_WRITE(=10) lock instead of + TL_WRITE_ALLOW_READ(=6), however here in innodb handler + TL_WRITE is lifted to TL_WRITE_ALLOW_WRITE, which causes + race condition when several clients do alter table + simultaneously (bug #17264). This fix avoids the problem. + */ + && thd->lex->sql_command != SQLCOM_ALTER_TABLE +#endif && thd->lex->sql_command != SQLCOM_CREATE_TABLE) { lock_type = TL_WRITE_ALLOW_WRITE; |