mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	BitKeeper/deleted/.del-raid.test~501e9e00b3c27a55: Delete: mysql-test/t/raid.test mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test: Test change mysql-test/r/binlog_stm_mix_innodb_myisam.result: New results mysql-test/r/ctype_ujis.result: New results mysql-test/r/innodb_concurrent.result: New results. mysql-test/r/rpl_heap.result: New results mysql-test/r/warnings.result: New results mysql-test/t/ctype_ujis.test: Fixed ENGINE=, test should now actually function mysql-test/t/innodb_concurrent.test: Fixed test for engine mysql-test/t/rpl_heap.test: Fixed test for engine mysql-test/t/system_mysql_db_fix.test: Fixed setup. mysql-test/t/warnings.test: Removed deprecated tests scripts/fill_func_tables.sh: Fixed script scripts/mysql_convert_table_format.sh: Fixed script sql/ha_innodb.cc: Fixed comment sql/sql_yacc.yy: Removed deprecated syntax tests/fork_big.pl: Fixed scipt tests/fork_big2.pl: Fixed script tests/mail_to_db.pl: Fixed script tests/mysql_client_test.c: Fixed test
		
			
				
	
	
		
			347 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			347 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #
 | |
| # Concurrent InnoDB tests, mainly in UPDATE's
 | |
| # Bug#3300
 | |
| # Designed and tested by Sinisa Milivojevic, sinisa@mysql.com
 | |
| #
 | |
| # two non-interfering UPDATE's not changing result set
 | |
| #
 | |
| 
 | |
| # test takes circa 5 minutes to run, so it's big
 | |
| -- source include/big_test.inc
 | |
| 
 | |
| connection default;
 | |
| drop table if exists t1;
 | |
| create table t1(eta int(11) not null, tipo int(11), c varchar(255)) engine=innodb;
 | |
| connect (thread1, localhost, mysqltest,,);
 | |
| connection thread1;
 | |
| insert into t1 values (7,7, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
 | |
| insert into t1 values (8,8, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
 | |
| insert into t1 values (10,1,"ccccccccccccccccccccccccccccccccccccccccccc");
 | |
| insert into t1 values (20,2,"ddddddddddddddddddddddddddddddddddddddddddd");
 | |
| insert into t1 values (30,1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
 | |
| insert into t1 values (40,2,"fffffffffffffffffffffffffffffffffffffffffff");
 | |
| insert into t1 values (50,1,"ggggggggggggggggggggggggggggggggggggggggggg");
 | |
| insert into t1 values (60,2,"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh");
 | |
| insert into t1 values (70,1,"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii");
 | |
| insert into t1 values (80,22,"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj");
 | |
| insert into t1 values (90,11,"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
 | |
| select get_lock("hello",1);
 | |
| connect (thread2, localhost, mysqltest,,);
 | |
| connection thread2;
 | |
| begin;
 | |
| send update t1 set eta=1+get_lock("hello",1)*0 where tipo=11;
 | |
| sleep 1;
 | |
| connection thread1;
 | |
| begin;
 | |
| update t1 set eta=2 where tipo=22;
 | |
| select release_lock("hello");
 | |
| select * from t1;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| send commit;
 | |
| connection thread1;
 | |
| select * from t1;
 | |
| commit;
 | |
| select * from t1;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| connection thread1;
 | |
| select * from t1;
 | |
| connection default;
 | |
| drop table t1;
 | |
| 
 | |
| #
 | |
| # two UPDATE's running and one changing result set
 | |
| #
 | |
| #connect (thread1, localhost, mysqltest,,);
 | |
| connection thread1;
 | |
| create table t1(eta int(11) not null, tipo int(11), c varchar(255)) engine=innodb;
 | |
| insert into t1 values (7,7, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
 | |
| insert into t1 values (8,8, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
 | |
| insert into t1 values (10,1,"ccccccccccccccccccccccccccccccccccccccccccc");
 | |
| insert into t1 values (20,2,"ddddddddddddddddddddddddddddddddddddddddddd");
 | |
| insert into t1 values (30,1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
 | |
| insert into t1 values (40,2,"fffffffffffffffffffffffffffffffffffffffffff");
 | |
| insert into t1 values (50,1,"ggggggggggggggggggggggggggggggggggggggggggg");
 | |
| insert into t1 values (60,2,"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh");
 | |
| insert into t1 values (70,1,"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii");
 | |
| insert into t1 values (80,22,"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj");
 | |
| insert into t1 values (90,11,"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
 | |
| select get_lock("hello",10);
 | |
| #connect (thread2, localhost, mysqltest,,);
 | |
| connection thread2;
 | |
| begin;
 | |
| send update t1 set eta=1+get_lock("hello",10)*0 where tipo=1;
 | |
| sleep 1;
 | |
| connection thread1;
 | |
| begin;
 | |
| update t1 set tipo=1 where tipo=2;
 | |
| select release_lock("hello");
 | |
| select * from t1;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| send commit;
 | |
| connection thread1;
 | |
| select * from t1;
 | |
| commit;
 | |
| select * from t1;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| connection thread1;
 | |
| select * from t1;
 | |
| connection default;
 | |
| drop table t1;
 | |
| 
 | |
| 
 | |
| #
 | |
| # One UPDATE and one INSERT .... Monty's test
 | |
| #
 | |
| 
 | |
| #connect (thread1, localhost, mysqltest,,);
 | |
| connection thread1;
 | |
| create table t1 (a int not null, b int not null) engine=innodb;
 | |
| insert into t1 values (1,1),(2,1),(3,1),(4,1);
 | |
| select get_lock("hello2",1000);
 | |
| #connect (thread2, localhost, mysqltest,,);
 | |
| connection thread2;
 | |
| begin;
 | |
| send update t1 set b=10+get_lock(concat("hello",a),1000)*0 where
 | |
| a=2;
 | |
| sleep 1;
 | |
| connection thread1;
 | |
| insert into t1 values (1,1);
 | |
| select release_lock("hello2");
 | |
| select * from t1;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| send commit;
 | |
| connection thread1;
 | |
| sleep 1;
 | |
| connection thread2;
 | |
| reap;
 | |
| connection default;
 | |
| drop table t1;
 | |
| 
 | |
| #
 | |
| # one UPDATE changing result set and SELECT ... FOR UPDATE
 | |
| #
 | |
| #connect (thread1, localhost, mysqltest,,);
 | |
| connection thread1;
 | |
| create table t1(eta int(11) not null, tipo int(11), c varchar(255)) engine=innodb;
 | |
| insert into t1 values (7,7, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
 | |
| insert into t1 values (8,8, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
 | |
| insert into t1 values (10,1,"ccccccccccccccccccccccccccccccccccccccccccc");
 | |
| insert into t1 values (20,2,"ddddddddddddddddddddddddddddddddddddddddddd");
 | |
| insert into t1 values (30,1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
 | |
| insert into t1 values (40,2,"fffffffffffffffffffffffffffffffffffffffffff");
 | |
| insert into t1 values (50,1,"ggggggggggggggggggggggggggggggggggggggggggg");
 | |
| insert into t1 values (60,2,"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh");
 | |
| insert into t1 values (70,1,"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii");
 | |
| insert into t1 values (80,22,"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj");
 | |
| insert into t1 values (90,11,"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
 | |
| select get_lock("hello",10);
 | |
| #connect (thread2, localhost, mysqltest,,);
 | |
| connection thread2;
 | |
| begin;
 | |
| send select * from t1 where tipo=2 FOR UPDATE;
 | |
| sleep 1;
 | |
| connection thread1;
 | |
| begin;
 | |
| select release_lock("hello");
 | |
| --error 1205
 | |
| update t1 set tipo=1+get_lock("hello",10)*0 where tipo=2;
 | |
| select * from t1;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| send commit;
 | |
| connection thread1;
 | |
| commit;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| connection thread1;
 | |
| select * from t1;
 | |
| connection default;
 | |
| drop table t1;
 | |
| 
 | |
| #
 | |
| # one UPDATE not changing result set and SELECT ... FOR UPDATE
 | |
| #
 | |
| #connect (thread1, localhost, mysqltest,,);
 | |
| connection thread1;
 | |
| create table t1(eta int(11) not null, tipo int(11), c varchar(255)) engine=innodb;
 | |
| insert into t1 values (7,7, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
 | |
| insert into t1 values (8,8, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
 | |
| insert into t1 values (10,1,"ccccccccccccccccccccccccccccccccccccccccccc");
 | |
| insert into t1 values (20,2,"ddddddddddddddddddddddddddddddddddddddddddd");
 | |
| insert into t1 values (30,1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
 | |
| insert into t1 values (40,2,"fffffffffffffffffffffffffffffffffffffffffff");
 | |
| insert into t1 values (50,1,"ggggggggggggggggggggggggggggggggggggggggggg");
 | |
| insert into t1 values (60,2,"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh");
 | |
| insert into t1 values (70,1,"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii");
 | |
| insert into t1 values (80,22,"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj");
 | |
| insert into t1 values (90,11,"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
 | |
| select get_lock("hello",10);
 | |
| #connect (thread2, localhost, mysqltest,,);
 | |
| connection thread2;
 | |
| begin;
 | |
| send select * from t1 where tipo=2 FOR UPDATE;
 | |
| sleep 1;
 | |
| connection thread1;
 | |
| begin;
 | |
| select release_lock("hello");
 | |
| --error 1205
 | |
| update t1 set tipo=11+get_lock("hello",10)*0 where tipo=22;
 | |
| select * from t1;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| send commit;
 | |
| connection thread1;
 | |
| commit;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| connection thread1;
 | |
| select * from t1;
 | |
| connection default;
 | |
| drop table t1;
 | |
| 
 | |
| #
 | |
| # two SELECT ... FOR UPDATE
 | |
| #
 | |
| #connect (thread1, localhost, mysqltest,,);
 | |
| connection thread1;
 | |
| create table t1(eta int(11) not null, tipo int(11), c varchar(255)) engine=innodb;
 | |
| insert into t1 values (7,7, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
 | |
| insert into t1 values (8,8, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
 | |
| insert into t1 values (10,1,"ccccccccccccccccccccccccccccccccccccccccccc");
 | |
| insert into t1 values (20,2,"ddddddddddddddddddddddddddddddddddddddddddd");
 | |
| insert into t1 values (30,1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
 | |
| insert into t1 values (40,2,"fffffffffffffffffffffffffffffffffffffffffff");
 | |
| insert into t1 values (50,1,"ggggggggggggggggggggggggggggggggggggggggggg");
 | |
| insert into t1 values (60,2,"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh");
 | |
| insert into t1 values (70,1,"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii");
 | |
| insert into t1 values (80,22,"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj");
 | |
| insert into t1 values (90,11,"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
 | |
| select get_lock("hello",10);
 | |
| #connect (thread2, localhost, mysqltest,,);
 | |
| connection thread2;
 | |
| begin;
 | |
| send select * from t1 where tipo=2 FOR UPDATE;
 | |
| sleep 1;
 | |
| connection thread1;
 | |
| begin;
 | |
| select release_lock("hello");
 | |
| --error 1205
 | |
| select * from t1 where tipo=1 FOR UPDATE;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| send commit;
 | |
| connection thread1;
 | |
| commit;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| connection thread1;
 | |
| select * from t1;
 | |
| connection default;
 | |
| drop table t1;
 | |
| 
 | |
| 
 | |
| #
 | |
| # one UPDATE changing result set and DELETE
 | |
| #
 | |
| #connect (thread1, localhost, mysqltest,,);
 | |
| connection thread1;
 | |
| create table t1(eta int(11) not null, tipo int(11), c varchar(255)) engine=innodb;
 | |
| insert into t1 values (7,7, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
 | |
| insert into t1 values (8,8, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
 | |
| insert into t1 values (10,1,"ccccccccccccccccccccccccccccccccccccccccccc");
 | |
| insert into t1 values (20,2,"ddddddddddddddddddddddddddddddddddddddddddd");
 | |
| insert into t1 values (30,1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
 | |
| insert into t1 values (40,2,"fffffffffffffffffffffffffffffffffffffffffff");
 | |
| insert into t1 values (50,1,"ggggggggggggggggggggggggggggggggggggggggggg");
 | |
| insert into t1 values (60,2,"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh");
 | |
| insert into t1 values (70,1,"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii");
 | |
| insert into t1 values (80,22,"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj");
 | |
| insert into t1 values (90,11,"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
 | |
| select get_lock("hello",10);
 | |
| #connect (thread2, localhost, mysqltest,,);
 | |
| connection thread2;
 | |
| begin;
 | |
| send delete from t1 where tipo=2;
 | |
| sleep 1;
 | |
| connection thread1;
 | |
| begin;
 | |
| select release_lock("hello");
 | |
| --error 1205
 | |
| update t1 set tipo=1+get_lock("hello",10)*0 where tipo=2;
 | |
| select * from t1;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| send commit;
 | |
| connection thread1;
 | |
| commit;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| connection thread1;
 | |
| select * from t1;
 | |
| connection default;
 | |
| drop table t1;
 | |
| 
 | |
| 
 | |
| #
 | |
| # one UPDATE not changing result set and DELETE
 | |
| #
 | |
| #connect (thread1, localhost, mysqltest,,);
 | |
| connection thread1;
 | |
| create table t1(eta int(11) not null, tipo int(11), c varchar(255)) engine=innodb;
 | |
| insert into t1 values (7,7, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
 | |
| insert into t1 values (8,8, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
 | |
| insert into t1 values (10,1,"ccccccccccccccccccccccccccccccccccccccccccc");
 | |
| insert into t1 values (20,2,"ddddddddddddddddddddddddddddddddddddddddddd");
 | |
| insert into t1 values (30,1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
 | |
| insert into t1 values (40,2,"fffffffffffffffffffffffffffffffffffffffffff");
 | |
| insert into t1 values (50,1,"ggggggggggggggggggggggggggggggggggggggggggg");
 | |
| insert into t1 values (60,2,"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh");
 | |
| insert into t1 values (70,1,"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii");
 | |
| insert into t1 values (80,22,"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj");
 | |
| insert into t1 values (90,11,"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
 | |
| select get_lock("hello",10);
 | |
| #connect (thread2, localhost, mysqltest,,);
 | |
| connection thread2;
 | |
| begin;
 | |
| send delete from t1 where tipo=2;
 | |
| sleep 1;
 | |
| connection thread1;
 | |
| begin;
 | |
| select release_lock("hello");
 | |
| update t1 set tipo=1+get_lock("hello",10)*0 where tipo=22;
 | |
| select * from t1;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| send commit;
 | |
| connection thread1;
 | |
| commit;
 | |
| connection thread2;
 | |
| reap;
 | |
| select * from t1;
 | |
| connection thread1;
 | |
| select * from t1;
 | |
| connection default;
 | |
| sleep 1;
 | |
| drop table t1;
 | |
| disconnect thread1;
 | |
| disconnect thread2;
 |