mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 18:41:56 +01:00
129 lines
3.7 KiB
Text
129 lines
3.7 KiB
Text
#
|
|
# MDEV-17863 DROP TEMPORARY TABLE creates a transaction in
|
|
# binary log on read only server
|
|
# MDEV-19074 Improved read_only mode for slaves with
|
|
# gtid_strict_mode enabled
|
|
#
|
|
create user test@localhost;
|
|
grant CREATE, DROP, INSERT, SELECT on *.* to test@localhost;
|
|
create table t1 (a int) engine=myisam;
|
|
insert into t1 values (1),(2);
|
|
reset master;
|
|
set global read_only=1;
|
|
# Ensure that optimize and analyze doesn't log to binary log
|
|
connect con1,localhost,test,,test;
|
|
insert into t1 values(3);
|
|
ERROR HY000: The MariaDB server is running with the --read-only option so it cannot execute this statement
|
|
analyze table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status Engine-independent statistics collected
|
|
test.t1 analyze status OK
|
|
check table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
repair table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 repair Error The MariaDB server is running with the --read-only option so it cannot execute this statement
|
|
test.t1 repair error Corrupt
|
|
optimize table t1;
|
|
ERROR HY000: The MariaDB server is running with the --read-only option so it cannot execute this statement
|
|
# Ensure that using temporary tables is not logged
|
|
create temporary table tmp1 (a int) engine=myisam;
|
|
insert into tmp1 values (1),(2);
|
|
update tmp1 set a=10 where a=2;
|
|
delete from tmp1 where a=1;
|
|
create temporary table tmp2 select * from t1;
|
|
select * from tmp1;
|
|
a
|
|
10
|
|
select * from tmp2;
|
|
a
|
|
1
|
|
2
|
|
create temporary table tmp3 like t1;
|
|
create or replace temporary table tmp3 like t1;
|
|
alter table tmp2 add column (b int);
|
|
select * from tmp2;
|
|
a b
|
|
1 NULL
|
|
2 NULL
|
|
insert into t1 select a+100 from tmp2;
|
|
ERROR HY000: The MariaDB server is running with the --read-only option so it cannot execute this statement
|
|
drop table tmp1,tmp2,tmp3;
|
|
# Clean up test connection
|
|
disconnect con1;
|
|
connection default;
|
|
# Execute some commands as root that should not be logged
|
|
optimize table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 optimize status Table is already up to date
|
|
repair table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 repair status OK
|
|
# Changes to temporary tables created under readonly should not
|
|
# be logged
|
|
create temporary table tmp4 (a int) engine=myisam;
|
|
insert into tmp4 values (1),(2);
|
|
create temporary table tmp5 (a int) engine=myisam;
|
|
insert into tmp5 select * from tmp4;
|
|
alter table tmp5 add column (b int);
|
|
set global read_only=0;
|
|
insert into tmp4 values (3),(4);
|
|
insert into tmp5 values (10,3),(11,4);
|
|
select * from tmp4;
|
|
a
|
|
1
|
|
2
|
|
3
|
|
4
|
|
select * from tmp5;
|
|
a b
|
|
1 NULL
|
|
2 NULL
|
|
10 3
|
|
11 4
|
|
update tmp4 set a=10 where a=2;
|
|
delete from tmp4 where a=1;
|
|
create table t2 select * from tmp4;
|
|
alter table tmp5 add column (c int);
|
|
insert into tmp5 values (20,5,1),(21,5,2);
|
|
select * from tmp5;
|
|
a b c
|
|
1 NULL NULL
|
|
2 NULL NULL
|
|
10 3 NULL
|
|
11 4 NULL
|
|
20 5 1
|
|
21 5 2
|
|
insert into t1 select a+200 from tmp5;
|
|
select * from t1;
|
|
a
|
|
1
|
|
2
|
|
201
|
|
202
|
|
210
|
|
211
|
|
220
|
|
221
|
|
drop table tmp4,tmp5;
|
|
# Check what is logged. Only last create select and the insert...select's should be
|
|
# row-logged
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; CREATE TABLE `t2` (
|
|
`a` int(11) DEFAULT NULL
|
|
)
|
|
master-bin.000001 # Annotate_rows # # create table t2 select * from tmp4
|
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Annotate_rows # # insert into t1 select a+200 from tmp5
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Query # # COMMIT
|
|
# Clean up
|
|
drop user test@localhost;
|
|
drop table t1,t2;
|