diff options
author | unknown <malff/marcsql@weblab.(none)> | 2006-11-30 18:43:33 -0700 |
---|---|---|
committer | unknown <malff/marcsql@weblab.(none)> | 2006-11-30 18:43:33 -0700 |
commit | d469888a951368a764f807839c330feec21489f4 (patch) | |
tree | f94df2ec9dc5a369f48c4d034816f41985477e9f /mysql-test/t/rpl_read_only.test | |
parent | de613e2eb2174e9234765dc636ada4ecc1fea406 (diff) | |
download | mariadb-git-d469888a951368a764f807839c330feec21489f4.tar.gz |
WL#3602
Post review changes
the --read-only option is not enforced for the slave thread in replication, or for the SUPER user.
sql/handler.cc:
Post review changes
Allowing writes for the slave thread or for SUPER, in read-only mode
sql/lock.cc:
Post review changes
Allowing writes for the slave thread or for SUPER, in read-only mode
mysql-test/r/rpl_read_only.result:
New test
mysql-test/t/rpl_read_only-slave.opt:
New test
mysql-test/t/rpl_read_only.test:
New test
Diffstat (limited to 'mysql-test/t/rpl_read_only.test')
-rw-r--r-- | mysql-test/t/rpl_read_only.test | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/mysql-test/t/rpl_read_only.test b/mysql-test/t/rpl_read_only.test new file mode 100644 index 00000000000..659c3d10044 --- /dev/null +++ b/mysql-test/t/rpl_read_only.test @@ -0,0 +1,105 @@ +# Test case for BUG #11733 +-- source include/master-slave.inc +-- source include/have_innodb.inc + +# Setting the master readonly : +# - the variable @@readonly is not replicated on the slave + +connect (master2,127.0.0.1,test,,test,$MASTER_MYPORT,); +connect (slave2,127.0.0.1,test,,test,$SLAVE_MYPORT,); + +connection master1; + +create table t1(a int) engine=InnoDB; +create table t2(a int) engine=MyISAM; +insert into t1 values(1001); +insert into t2 values(2001); + +connection master; +set global read_only=1; + +connection master1; +select @@read_only; +select * from t1; +select * from t2; + +sync_slave_with_master; +select @@read_only; +select * from t1; +select * from t2; + +# - replication of transactions +connection master; +set global read_only=0; + +connection master1; +BEGIN; +insert into t1 values(1002); +insert into t2 values(2002); + +connection master2; +BEGIN; +insert into t1 values(1003); +insert into t2 values(2003); + +connection master; +set global read_only=1; + +connection master1; +## works even with read_only=1, because master1 is root +COMMIT; + +connection master2; +--error ER_OPTION_PREVENTS_STATEMENT +COMMIT; + +connection master; +set global read_only=0; + +connection master1; +insert into t1 values(1004); +insert into t2 values(2004); + +select * from t1; +select * from t2; + +sync_slave_with_master; +select * from t1; +select * from t2; + +# Setting the slave readonly : replication will pass +# +connection slave1; +set global read_only=1; + +connection slave; +select @@read_only; +# Make sure the replicated table is also transactional +show create table t1; +# Make sure the replicated table is not transactional +show create table t2; + +connection master; +insert into t1 values(1005); +insert into t2 values(2005); +select * from t1; +select * from t2; + +sync_slave_with_master; +connection slave; +select * from t1; +select * from t2; + +# Non root user can not write on the slave +connection slave2; +--error ER_OPTION_PREVENTS_STATEMENT +insert into t1 values(1006); +--error ER_OPTION_PREVENTS_STATEMENT +insert into t2 values(2006); + +## Cleanup +connection master; +drop table t1; +drop table t2; +sync_slave_with_master; + |