mirror of
https://github.com/MariaDB/server.git
synced 2025-01-25 00:04:33 +01:00
ac6026ce27
temp table This patch introduces two key changes in the replication's behavior. Firstly, it reverts part of BUG#51894 which puts any update to temporary tables into the trx-cache. Now, updates to temporary tables are handled according to the type of their engines as a regular table. Secondly, an unsafe mixed statement, (i.e. a statement that access transactional table as well non-transactional or temporary table, and writes to any of them), are written into the trx-cache in order to minimize errors in the execution when the statement logging format is in use. Such changes has a direct impact on which statements are classified as unsafe statements and thus part of BUG#53259 is reverted.
278 lines
7.2 KiB
Text
278 lines
7.2 KiB
Text
stop slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
reset master;
|
|
reset slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
start slave;
|
|
include/stop_slave.inc
|
|
reset master;
|
|
reset slave;
|
|
start slave;
|
|
create table t1(n int not null auto_increment primary key)ENGINE=InnoDB;
|
|
insert into t1 values (NULL);
|
|
drop table t1;
|
|
create table t1 (word char(20) not null)ENGINE=InnoDB;
|
|
load data infile 'LOAD_FILE' into table t1 ignore 1 lines;
|
|
select count(*) from t1;
|
|
count(*)
|
|
69
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
|
master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=InnoDB
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
show binlog events from <binlog_start> limit 1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB
|
|
show binlog events from <binlog_start> limit 2;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB
|
|
master-bin.000001 # Query # # BEGIN
|
|
show binlog events from <binlog_start> limit 1,4;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
flush logs;
|
|
create table t3 (a int)ENGINE=InnoDB;
|
|
select * from t1 order by 1 asc;
|
|
word
|
|
Aarhus
|
|
Aaron
|
|
Aaron
|
|
Ababa
|
|
Ababa
|
|
aback
|
|
aback
|
|
abaft
|
|
abaft
|
|
abandon
|
|
abandon
|
|
abandoned
|
|
abandoned
|
|
abandoning
|
|
abandoning
|
|
abandonment
|
|
abandonment
|
|
abandons
|
|
abandons
|
|
abase
|
|
abased
|
|
abasement
|
|
abasements
|
|
abases
|
|
abash
|
|
abashed
|
|
abashes
|
|
abashing
|
|
abasing
|
|
abate
|
|
abated
|
|
abatement
|
|
abatements
|
|
abater
|
|
abates
|
|
abating
|
|
Abba
|
|
abbe
|
|
abbey
|
|
abbeys
|
|
abbot
|
|
abbots
|
|
Abbott
|
|
abbreviate
|
|
abbreviated
|
|
abbreviates
|
|
abbreviating
|
|
abbreviation
|
|
abbreviations
|
|
Abby
|
|
abdomen
|
|
abdomens
|
|
abdominal
|
|
abduct
|
|
abducted
|
|
abduction
|
|
abductions
|
|
abductor
|
|
abductors
|
|
abducts
|
|
Abe
|
|
abed
|
|
Abel
|
|
Abelian
|
|
Abelson
|
|
Aberdeen
|
|
Abernathy
|
|
aberrant
|
|
aberration
|
|
select * from t1 order by 1 asc;
|
|
word
|
|
Aarhus
|
|
Aaron
|
|
Aaron
|
|
Ababa
|
|
Ababa
|
|
aback
|
|
aback
|
|
abaft
|
|
abaft
|
|
abandon
|
|
abandon
|
|
abandoned
|
|
abandoned
|
|
abandoning
|
|
abandoning
|
|
abandonment
|
|
abandonment
|
|
abandons
|
|
abandons
|
|
abase
|
|
abased
|
|
abasement
|
|
abasements
|
|
abases
|
|
abash
|
|
abashed
|
|
abashes
|
|
abashing
|
|
abasing
|
|
abate
|
|
abated
|
|
abatement
|
|
abatements
|
|
abater
|
|
abates
|
|
abating
|
|
Abba
|
|
abbe
|
|
abbey
|
|
abbeys
|
|
abbot
|
|
abbots
|
|
Abbott
|
|
abbreviate
|
|
abbreviated
|
|
abbreviates
|
|
abbreviating
|
|
abbreviation
|
|
abbreviations
|
|
Abby
|
|
abdomen
|
|
abdomens
|
|
abdominal
|
|
abduct
|
|
abducted
|
|
abduction
|
|
abductions
|
|
abductor
|
|
abductors
|
|
abducts
|
|
Abe
|
|
abed
|
|
Abel
|
|
Abelian
|
|
Abelson
|
|
Aberdeen
|
|
Abernathy
|
|
aberrant
|
|
aberration
|
|
flush logs;
|
|
include/stop_slave.inc
|
|
include/start_slave.inc
|
|
create table t2 (n int)ENGINE=InnoDB;
|
|
insert into t2 values (1);
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
|
master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=InnoDB
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Rotate # # master-bin.000002;pos=4
|
|
show binlog events in 'master-bin.000002' from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=InnoDB
|
|
master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=InnoDB
|
|
master-bin.000002 # Query # # BEGIN
|
|
master-bin.000002 # Table_map # # table_id: # (test.t2)
|
|
master-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000002 # Xid # # COMMIT /* XID */
|
|
show binary logs;
|
|
Log_name File_size
|
|
master-bin.000001 #
|
|
master-bin.000002 #
|
|
show binary logs;
|
|
Log_name File_size
|
|
slave-bin.000001 #
|
|
slave-bin.000002 #
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB
|
|
slave-bin.000001 # Query # # BEGIN
|
|
slave-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
slave-bin.000001 # Xid # # COMMIT /* XID */
|
|
slave-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
|
slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=InnoDB
|
|
slave-bin.000001 # Query # # BEGIN
|
|
slave-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
slave-bin.000001 # Xid # # COMMIT /* XID */
|
|
slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=InnoDB
|
|
slave-bin.000001 # Rotate # # slave-bin.000002;pos=4
|
|
show binlog events in 'slave-bin.000002' from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=InnoDB
|
|
slave-bin.000002 # Query # # BEGIN
|
|
slave-bin.000002 # Table_map # # table_id: # (test.t2)
|
|
slave-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F
|
|
slave-bin.000002 # Xid # # COMMIT /* XID */
|
|
Checking that both slave threads are running.
|
|
show binlog events in 'slave-bin.000005' from 4;
|
|
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
DROP TABLE t3;
|
|
stop slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
reset master;
|
|
reset slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
start slave;
|
|
create table t1(a int auto_increment primary key, b int);
|
|
insert into t1 values (NULL, 1);
|
|
set insert_id=5;
|
|
insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id());
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; create table t1(a int auto_increment primary key, b int)
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Query # # COMMIT
|
|
select * from t1;
|
|
a b
|
|
1 1
|
|
5 1
|
|
6 1
|
|
drop table t1;
|