86 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			86 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								# should work with embedded server after mysqltest is fixed
							 | 
						||
| 
								 | 
							
								-- source include/not_embedded.inc
							 | 
						||
| 
								 | 
							
								-- source include/have_innodb.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# BUG#11733: COMMITs should not happen if read-only is set
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--disable_warnings
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS table_11733 ;
							 | 
						||
| 
								 | 
							
								--enable_warnings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# READ_ONLY does nothing to SUPER users
							 | 
						||
| 
								 | 
							
								# so we use a non-SUPER one:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								grant CREATE, SELECT, DROP on *.* to test@localhost;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								connect (con1,localhost,test,,test);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								set global read_only=0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Any transactional engine will do
							 | 
						||
| 
								 | 
							
								create table table_11733 (a int) engine=InnoDb;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								connection con1;
							 | 
						||
| 
								 | 
							
								BEGIN;
							 | 
						||
| 
								 | 
							
								insert into table_11733 values(11733);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								set global read_only=1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								connection con1;
							 | 
						||
| 
								 | 
							
								select @@global.read_only;
							 | 
						||
| 
								 | 
							
								select * from table_11733 ;
							 | 
						||
| 
								 | 
							
								-- error ER_OPTION_PREVENTS_STATEMENT
							 | 
						||
| 
								 | 
							
								COMMIT;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								set global read_only=0;
							 | 
						||
| 
								 | 
							
								drop table table_11733 ;
							 | 
						||
| 
								 | 
							
								drop user test@localhost;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								disconnect con1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #35732: read-only blocks SELECT statements in InnoDB
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test 1: read only mode
							 | 
						||
| 
								 | 
							
								GRANT CREATE, SELECT, DROP ON *.* TO test@localhost;
							 | 
						||
| 
								 | 
							
								connect(con1, localhost, test, , test);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1(a INT) ENGINE=INNODB;
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (0), (1);
							 | 
						||
| 
								 | 
							
								SET GLOBAL read_only=1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								connection con1;
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								BEGIN;
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								COMMIT;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								SET GLOBAL read_only=0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test 2: global read lock
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								FLUSH TABLES WITH READ LOCK;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								connection con1;
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								BEGIN;
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								COMMIT;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								UNLOCK TABLES;
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								DROP USER test@localhost;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								disconnect con1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo echo End of 5.1 tests 
							 |