Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into magare.gmz:/home/kgeorge/mysql/autopush/B29644-5.0-opt sql/ha_innodb.cc: Auto merged sql/sql_base.cc: Auto merged mysql-test/r/innodb_mysql.result: 5.0-opt merge mysql-test/t/innodb_mysql.test: 5.0-opt merge
This commit is contained in:
commit
c29002a5b6
@ -984,4 +984,27 @@ a b c
|
|||||||
15 1 1
|
15 1 1
|
||||||
16 1 1
|
16 1 1
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
CREATE TABLE t1 (a INT, PRIMARY KEY (a)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8);
|
||||||
|
INSERT INTO t1 SELECT a + 8 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT a + 16 FROM t1;
|
||||||
|
CREATE PROCEDURE p1 ()
|
||||||
|
BEGIN
|
||||||
|
DECLARE i INT DEFAULT 50;
|
||||||
|
DECLARE cnt INT;
|
||||||
|
START TRANSACTION;
|
||||||
|
ALTER TABLE t1 ENGINE=InnoDB;
|
||||||
|
COMMIT;
|
||||||
|
START TRANSACTION;
|
||||||
|
WHILE (i > 0) DO
|
||||||
|
SET i = i - 1;
|
||||||
|
SELECT COUNT(*) INTO cnt FROM t1 LOCK IN SHARE MODE;
|
||||||
|
END WHILE;
|
||||||
|
COMMIT;
|
||||||
|
END;|
|
||||||
|
CALL p1();
|
||||||
|
CALL p1();
|
||||||
|
CALL p1();
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -740,6 +740,8 @@ SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c)
|
|||||||
set @@sort_buffer_size=default;
|
set @@sort_buffer_size=default;
|
||||||
|
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
|
||||||
# Bug#27296 Assertion in ALTER TABLE SET DEFAULT in Linux Debug build
|
# Bug#27296 Assertion in ALTER TABLE SET DEFAULT in Linux Debug build
|
||||||
# (possible deadlock).
|
# (possible deadlock).
|
||||||
#
|
#
|
||||||
@ -787,4 +789,56 @@ SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY c,a;
|
|||||||
|
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #29644: alter table hangs if records locked in share mode by long
|
||||||
|
# running transaction
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT, PRIMARY KEY (a)) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8);
|
||||||
|
INSERT INTO t1 SELECT a + 8 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT a + 16 FROM t1;
|
||||||
|
|
||||||
|
DELIMITER |;
|
||||||
|
CREATE PROCEDURE p1 ()
|
||||||
|
BEGIN
|
||||||
|
DECLARE i INT DEFAULT 50;
|
||||||
|
DECLARE cnt INT;
|
||||||
|
START TRANSACTION;
|
||||||
|
ALTER TABLE t1 ENGINE=InnoDB;
|
||||||
|
COMMIT;
|
||||||
|
START TRANSACTION;
|
||||||
|
WHILE (i > 0) DO
|
||||||
|
SET i = i - 1;
|
||||||
|
SELECT COUNT(*) INTO cnt FROM t1 LOCK IN SHARE MODE;
|
||||||
|
END WHILE;
|
||||||
|
COMMIT;
|
||||||
|
END;|
|
||||||
|
|
||||||
|
DELIMITER ;|
|
||||||
|
|
||||||
|
CONNECT (con1,localhost,root,,);
|
||||||
|
CONNECT (con2,localhost,root,,);
|
||||||
|
|
||||||
|
CONNECTION con1;
|
||||||
|
SEND CALL p1();
|
||||||
|
CONNECTION con2;
|
||||||
|
SEND CALL p1();
|
||||||
|
CONNECTION default;
|
||||||
|
CALL p1();
|
||||||
|
|
||||||
|
CONNECTION con1;
|
||||||
|
REAP;
|
||||||
|
CONNECTION con2;
|
||||||
|
REAP;
|
||||||
|
CONNECTION default;
|
||||||
|
DISCONNECT con1;
|
||||||
|
DISCONNECT con2;
|
||||||
|
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
@ -6721,17 +6721,6 @@ ha_innobase::store_lock(
|
|||||||
&& !thd->tablespace_op
|
&& !thd->tablespace_op
|
||||||
&& thd->lex->sql_command != SQLCOM_TRUNCATE
|
&& thd->lex->sql_command != SQLCOM_TRUNCATE
|
||||||
&& thd->lex->sql_command != SQLCOM_OPTIMIZE
|
&& thd->lex->sql_command != SQLCOM_OPTIMIZE
|
||||||
|
|
||||||
#ifdef __WIN__
|
|
||||||
/* For alter table on win32 for succesful 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) {
|
&& thd->lex->sql_command != SQLCOM_CREATE_TABLE) {
|
||||||
|
|
||||||
lock_type = TL_WRITE_ALLOW_WRITE;
|
lock_type = TL_WRITE_ALLOW_WRITE;
|
||||||
|
@ -2938,13 +2938,6 @@ TABLE *open_ltable(THD *thd, TABLE_LIST *table_list, thr_lock_type lock_type)
|
|||||||
|
|
||||||
if (table)
|
if (table)
|
||||||
{
|
{
|
||||||
#if defined( __WIN__) || defined(OS2)
|
|
||||||
/* Win32 can't drop a file that is open */
|
|
||||||
if (lock_type == TL_WRITE_ALLOW_READ)
|
|
||||||
{
|
|
||||||
lock_type= TL_WRITE;
|
|
||||||
}
|
|
||||||
#endif /* __WIN__ || OS2 */
|
|
||||||
table_list->lock_type= lock_type;
|
table_list->lock_type= lock_type;
|
||||||
table_list->table= table;
|
table_list->table= table;
|
||||||
table->grant= table_list->grant;
|
table->grant= table_list->grant;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user