mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	Problem: SELECTs prohibited for a transactional SE in autocommit mode if read_only is set. Fix: allow them.
		
			
				
	
	
		
			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 
 |