mirror of
https://github.com/MariaDB/server.git
synced 2025-10-18 13:42:11 +02:00

Follow-up patch with adjustments of test files and updates of result files for tests. Some of tests were rewritten slighlty. Everywhere where common pattern used: ----- CREATE USER userA; --connect con1 ... userA ... <sql statements...> --disconnect con1 DROP USER userA; ----- the DROP USER statement has been eclosed into the directive --disable_warnings --enable_warnings This change is caused by the race conddition between --disconnect and DROP USER since a number of currently running sessions established on behalf the user being dropped is counted by holding the rw_lock THD_list_iterator::lock that is not acquired on execution the DROP USER statement but the lock is taken as the last step on handling disconnection (when the client is already sending the next statement). Therefore, for the cases where the command --disconnect precedes the DROP USER statement we hide the possible warnings about presence of active sessions for the user being deleted to make tests deterministic.
171 lines
3.7 KiB
Text
171 lines
3.7 KiB
Text
include/master-slave.inc
|
|
[connection master]
|
|
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
|
|
connection master;
|
|
create user test;
|
|
grant all on test.* to test;
|
|
connection 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;
|
|
@@read_only
|
|
ON
|
|
select * from t1;
|
|
a
|
|
1001
|
|
select * from t2;
|
|
a
|
|
2001
|
|
connection slave;
|
|
select @@read_only;
|
|
@@read_only
|
|
OFF
|
|
select * from t1;
|
|
a
|
|
1001
|
|
select * from t2;
|
|
a
|
|
2001
|
|
connection master;
|
|
set global read_only=0;
|
|
connection master1;
|
|
BEGIN;
|
|
connection master2;
|
|
BEGIN;
|
|
connection master;
|
|
select @@read_only;
|
|
@@read_only
|
|
OFF
|
|
set global read_only=1;
|
|
connection master1;
|
|
*** On SUPER USER connection ***
|
|
insert into t1 values(1002);
|
|
insert into t2 values(2002);
|
|
connection master2;
|
|
*** On regular USER connection ***
|
|
insert into t1 values(1003);
|
|
ERROR HY000: The MariaDB server is running with the --read-only=ON option so it cannot execute this statement
|
|
insert into t2 values(2003);
|
|
ERROR HY000: The MariaDB server is running with the --read-only=ON option so it cannot execute this statement
|
|
connection master1;
|
|
*** SUPER USER COMMIT (must succeed) ***
|
|
COMMIT;
|
|
connection master2;
|
|
*** regular USER COMMIT (must succeed - nothing to commit) ***
|
|
COMMIT;
|
|
connection master;
|
|
select @@read_only;
|
|
@@read_only
|
|
ON
|
|
set global read_only=0;
|
|
connection master1;
|
|
insert into t1 values(1004);
|
|
insert into t2 values(2004);
|
|
select * from t1;
|
|
a
|
|
1001
|
|
1002
|
|
1004
|
|
select * from t2;
|
|
a
|
|
2001
|
|
2002
|
|
2004
|
|
connection slave;
|
|
select * from t1;
|
|
a
|
|
1001
|
|
1002
|
|
1004
|
|
select * from t2;
|
|
a
|
|
2001
|
|
2002
|
|
2004
|
|
connection slave1;
|
|
set global read_only=1;
|
|
connection slave;
|
|
select @@read_only;
|
|
@@read_only
|
|
ON
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
|
|
show create table t2;
|
|
Table Create Table
|
|
t2 CREATE TABLE `t2` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
|
|
connection master;
|
|
insert into t1 values(1005);
|
|
insert into t2 values(2005);
|
|
select * from t1;
|
|
a
|
|
1001
|
|
1002
|
|
1004
|
|
1005
|
|
select * from t2;
|
|
a
|
|
2001
|
|
2002
|
|
2004
|
|
2005
|
|
connection slave;
|
|
connection slave;
|
|
select * from t1;
|
|
a
|
|
1001
|
|
1002
|
|
1004
|
|
1005
|
|
select * from t2;
|
|
a
|
|
2001
|
|
2002
|
|
2004
|
|
2005
|
|
connection slave2;
|
|
insert into t1 values(1006);
|
|
ERROR HY000: The MariaDB server is running with the --read-only=ON option so it cannot execute this statement
|
|
insert into t2 values(2006);
|
|
ERROR HY000: The MariaDB server is running with the --read-only=ON option so it cannot execute this statement
|
|
#
|
|
# MDEV-30978: On slave XA COMMIT/XA ROLLBACK fail to return an error in read-only mode
|
|
#
|
|
# Where a read-only server permits writes through replication, it
|
|
# should not permit user connections to commit/rollback XA transactions
|
|
# prepared via replication. This test ensure this behavior is prohibited
|
|
#
|
|
connection master;
|
|
xa start '1';
|
|
insert into t1 values (1007);
|
|
xa end '1';
|
|
xa prepare '1';
|
|
connection slave;
|
|
connection slave2;
|
|
xa commit '1';
|
|
ERROR HY000: The MariaDB server is running with the --read-only=ON option so it cannot execute this statement
|
|
xa rollback '1';
|
|
ERROR HY000: The MariaDB server is running with the --read-only=ON option so it cannot execute this statement
|
|
connection master;
|
|
xa rollback '1';
|
|
connection master;
|
|
drop user test;
|
|
Warnings:
|
|
Note 4226 Dropped users ['test'@'%'] have active connections. Use KILL CONNECTION if they should not be used anymore.
|
|
drop table t1;
|
|
drop table t2;
|
|
connection slave;
|
|
set global read_only=0;
|
|
include/rpl_end.inc
|