212 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			212 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								drop table if exists t1,t2;
							 | 
						||
| 
								 | 
							
								create table t1(n int);
							 | 
						||
| 
								 | 
							
								insert into t1 values (1);
							 | 
						||
| 
								 | 
							
								lock tables t1 write;
							 | 
						||
| 
								 | 
							
								update low_priority t1 set n = 4;
							 | 
						||
| 
								 | 
							
								select n from t1;
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								n
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1(n int);
							 | 
						||
| 
								 | 
							
								insert into t1 values (1);
							 | 
						||
| 
								 | 
							
								lock tables t1 read;
							 | 
						||
| 
								 | 
							
								update low_priority t1 set n = 4;
							 | 
						||
| 
								 | 
							
								select n from t1;
							 | 
						||
| 
								 | 
							
								n
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a int, b int);
							 | 
						||
| 
								 | 
							
								create table t2 (c int, d int);
							 | 
						||
| 
								 | 
							
								insert into t1 values(1,1);
							 | 
						||
| 
								 | 
							
								insert into t1 values(2,2);
							 | 
						||
| 
								 | 
							
								insert into t2 values(1,2);
							 | 
						||
| 
								 | 
							
								lock table t1 read;
							 | 
						||
| 
								 | 
							
								update t1,t2 set c=a where b=d;
							 | 
						||
| 
								 | 
							
								select c from t2;
							 | 
						||
| 
								 | 
							
								c
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								drop table t2;
							 | 
						||
| 
								 | 
							
								create table t1 (a int);
							 | 
						||
| 
								 | 
							
								create table t2 (a int);
							 | 
						||
| 
								 | 
							
								lock table t1 write, t2 write;
							 | 
						||
| 
								 | 
							
								insert t1 select * from t2;
							 | 
						||
| 
								 | 
							
								drop table t2;
							 | 
						||
| 
								 | 
							
								ERROR 42S02: Table 'test.t2' doesn't exist
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a int);
							 | 
						||
| 
								 | 
							
								create table t2 (a int);
							 | 
						||
| 
								 | 
							
								lock table t1 write, t2 write, t1 as t1_2 write, t2 as t2_2 write;
							 | 
						||
| 
								 | 
							
								insert t1 select * from t2;
							 | 
						||
| 
								 | 
							
								drop table t2;
							 | 
						||
| 
								 | 
							
								ERROR 42S02: Table 'test.t2' doesn't exist
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								End of 4.1 tests
							 | 
						||
| 
								 | 
							
								create table t1(a int);
							 | 
						||
| 
								 | 
							
								lock tables t1 write;
							 | 
						||
| 
								 | 
							
								show columns from t1;
							 | 
						||
| 
								 | 
							
								Field	Type	Null	Key	Default	Extra
							 | 
						||
| 
								 | 
							
								a	int(11)	YES		NULL	
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								USE mysql;
							 | 
						||
| 
								 | 
							
								LOCK TABLES columns_priv WRITE, db WRITE, host WRITE, user WRITE;
							 | 
						||
| 
								 | 
							
								FLUSH TABLES;
							 | 
						||
| 
								 | 
							
								USE mysql;
							 | 
						||
| 
								 | 
							
								SELECT user.Select_priv FROM user, db WHERE user.user = db.user LIMIT 1;
							 | 
						||
| 
								 | 
							
								OPTIMIZE TABLES columns_priv, db, host, user;
							 | 
						||
| 
								 | 
							
								Table	Op	Msg_type	Msg_text
							 | 
						||
| 
								 | 
							
								mysql.columns_priv	optimize	status	OK
							 | 
						||
| 
								 | 
							
								mysql.db	optimize	status	OK
							 | 
						||
| 
								 | 
							
								mysql.host	optimize	status	OK
							 | 
						||
| 
								 | 
							
								mysql.user	optimize	status	OK
							 | 
						||
| 
								 | 
							
								UNLOCK TABLES;
							 | 
						||
| 
								 | 
							
								Select_priv
							 | 
						||
| 
								 | 
							
								N
							 | 
						||
| 
								 | 
							
								USE test;
							 | 
						||
| 
								 | 
							
								use test;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (c1 int);
							 | 
						||
| 
								 | 
							
								LOCK TABLE t1 WRITE;
							 | 
						||
| 
								 | 
							
								FLUSH TABLES WITH READ LOCK;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t2 (c1 int);
							 | 
						||
| 
								 | 
							
								UNLOCK TABLES;
							 | 
						||
| 
								 | 
							
								UNLOCK TABLES;
							 | 
						||
| 
								 | 
							
								DROP TABLE t1, t2;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (c1 int);
							 | 
						||
| 
								 | 
							
								LOCK TABLE t1 WRITE;
							 | 
						||
| 
								 | 
							
								FLUSH TABLES WITH READ LOCK;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t2 AS SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								ERROR HY000: Table 't2' was not locked with LOCK TABLES
							 | 
						||
| 
								 | 
							
								UNLOCK TABLES;
							 | 
						||
| 
								 | 
							
								UNLOCK TABLES;
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								CREATE DATABASE mysqltest_1;
							 | 
						||
| 
								 | 
							
								FLUSH TABLES WITH READ LOCK;
							 | 
						||
| 
								 | 
							
								DROP DATABASE mysqltest_1;
							 | 
						||
| 
								 | 
							
								DROP DATABASE mysqltest_1;
							 | 
						||
| 
								 | 
							
								ERROR HY000: Can't execute the query because you have a conflicting read lock
							 | 
						||
| 
								 | 
							
								UNLOCK TABLES;
							 | 
						||
| 
								 | 
							
								DROP DATABASE mysqltest_1;
							 | 
						||
| 
								 | 
							
								ERROR HY000: Can't drop database 'mysqltest_1'; database doesn't exist
							 | 
						||
| 
								 | 
							
								create table t1 (f1 int(12) unsigned not null auto_increment, primary key(f1)) engine=innodb;
							 | 
						||
| 
								 | 
							
								lock tables t1 write;
							 | 
						||
| 
								 | 
							
								alter table t1 auto_increment=0;
							 | 
						||
| 
								 | 
							
								alter table t1 auto_increment=0;
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a int);
							 | 
						||
| 
								 | 
							
								create table t2 like t1;
							 | 
						||
| 
								 | 
							
								# con1
							 | 
						||
| 
								 | 
							
								lock tables t1 write;
							 | 
						||
| 
								 | 
							
								# con2
							 | 
						||
| 
								 | 
							
								flush tables with read lock;
							 | 
						||
| 
								 | 
							
								# con5
							 | 
						||
| 
								 | 
							
								# global read lock is taken
							 | 
						||
| 
								 | 
							
								# con3
							 | 
						||
| 
								 | 
							
								select * from t2 for update;
							 | 
						||
| 
								 | 
							
								# waiting for release of read lock
							 | 
						||
| 
								 | 
							
								# con4
							 | 
						||
| 
								 | 
							
								# would hang and later cause a deadlock
							 | 
						||
| 
								 | 
							
								flush tables t2;
							 | 
						||
| 
								 | 
							
								# clean up
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								drop table t1,t2;
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Lightweight version:
							 | 
						||
| 
								 | 
							
								# Ensure that the wait for a GRL is done before opening tables.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create table t1 (a int);
							 | 
						||
| 
								 | 
							
								create table t2 like t1;
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# UPDATE
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# default
							 | 
						||
| 
								 | 
							
								flush tables with read lock;
							 | 
						||
| 
								 | 
							
								# con1
							 | 
						||
| 
								 | 
							
								update t2 set a = 1;
							 | 
						||
| 
								 | 
							
								# default
							 | 
						||
| 
								 | 
							
								# statement is waiting for release of read lock
							 | 
						||
| 
								 | 
							
								# con2
							 | 
						||
| 
								 | 
							
								flush table t2;
							 | 
						||
| 
								 | 
							
								# default
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								# con1
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# LOCK TABLES .. WRITE
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# default
							 | 
						||
| 
								 | 
							
								flush tables with read lock;
							 | 
						||
| 
								 | 
							
								# con1
							 | 
						||
| 
								 | 
							
								lock tables t2 write;
							 | 
						||
| 
								 | 
							
								# default
							 | 
						||
| 
								 | 
							
								# statement is waiting for release of read lock
							 | 
						||
| 
								 | 
							
								# con2
							 | 
						||
| 
								 | 
							
								flush table t2;
							 | 
						||
| 
								 | 
							
								# default
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								# con1
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								drop table t1,t2;
							 | 
						||
| 
								 | 
							
								End of 5.0 tests
							 | 
						||
| 
								 | 
							
								create table t1 (i int);
							 | 
						||
| 
								 | 
							
								lock table t1 read;
							 | 
						||
| 
								 | 
							
								update t1 set i= 10;
							 | 
						||
| 
								 | 
							
								select * from t1;
							 | 
						||
| 
								 | 
							
								kill query ID;
							 | 
						||
| 
								 | 
							
								i
							 | 
						||
| 
								 | 
							
								ERROR 70100: Query execution was interrupted
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								drop table if exists t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a int) ENGINE=MEMORY;
							 | 
						||
| 
								 | 
							
								--> client 2
							 | 
						||
| 
								 | 
							
								handler t1 open;
							 | 
						||
| 
								 | 
							
								ERROR HY000: Table storage engine for 't1' doesn't have this option
							 | 
						||
| 
								 | 
							
								--> client 1
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								drop table if exists t1;
							 | 
						||
| 
								 | 
							
								create table t1 (i int);
							 | 
						||
| 
								 | 
							
								connection: default
							 | 
						||
| 
								 | 
							
								lock tables t1 write;
							 | 
						||
| 
								 | 
							
								connection: flush
							 | 
						||
| 
								 | 
							
								flush tables with read lock;;
							 | 
						||
| 
								 | 
							
								connection: default
							 | 
						||
| 
								 | 
							
								alter table t1 add column j int;
							 | 
						||
| 
								 | 
							
								connection: insert
							 | 
						||
| 
								 | 
							
								insert into t1 values (1,2);;
							 | 
						||
| 
								 | 
							
								connection: default
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								connection: flush
							 | 
						||
| 
								 | 
							
								select * from t1;
							 | 
						||
| 
								 | 
							
								i	j
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								select * from t1;
							 | 
						||
| 
								 | 
							
								i	j
							 | 
						||
| 
								 | 
							
								1	2
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								drop table if exists t1;
							 | 
						||
| 
								 | 
							
								create table t1 (i int);
							 | 
						||
| 
								 | 
							
								connection: default
							 | 
						||
| 
								 | 
							
								lock tables t1 write;
							 | 
						||
| 
								 | 
							
								connection: flush
							 | 
						||
| 
								 | 
							
								flush tables with read lock;;
							 | 
						||
| 
								 | 
							
								connection: default
							 | 
						||
| 
								 | 
							
								flush tables;
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								drop table if exists t1,t2;
							 | 
						||
| 
								 | 
							
								create table t1 (a int);
							 | 
						||
| 
								 | 
							
								flush status;
							 | 
						||
| 
								 | 
							
								lock tables t1 read;
							 | 
						||
| 
								 | 
							
								insert into t1 values(1);;
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								select @tlwa < @tlwb;
							 | 
						||
| 
								 | 
							
								@tlwa < @tlwb
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								End of 5.1 tests
							 |