mirror of
https://github.com/MariaDB/server.git
synced 2025-02-14 09:25:35 +01:00
438 lines
14 KiB
Text
438 lines
14 KiB
Text
SET @old_binlog_format=@@binlog_format;
|
|
SET BINLOG_FORMAT=ROW;
|
|
RESET MASTER;
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t2 VALUES (1),(2),(3);
|
|
**** Truncate of empty table shall be logged
|
|
TRUNCATE TABLE t1;
|
|
TRUNCATE TABLE t2;
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
|
DROP TABLE t1,t2;
|
|
#
|
|
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
|
#
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1),(2);
|
|
BEGIN;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
connect truncate,localhost,root,,;
|
|
TRUNCATE TABLE t1;
|
|
connection default;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
COMMIT;
|
|
connection truncate;
|
|
# Reaping TRUNCATE TABLE
|
|
SELECT COUNT(*) FROM t1;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
connection default;
|
|
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 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
disconnect truncate;
|
|
DROP TABLE t1,t2;
|
|
# Even though the isolation level might be permissive, truncate
|
|
# table follows a stricter isolation as its locking is based on
|
|
# (exclusive) metadata locks.
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t2 VALUES (1),(2),(3);
|
|
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
|
**** Truncate of empty table shall be logged
|
|
TRUNCATE TABLE t1;
|
|
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
|
TRUNCATE TABLE t2;
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
|
DROP TABLE t1,t2;
|
|
#
|
|
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
|
#
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1),(2);
|
|
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
|
BEGIN;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
connect truncate,localhost,root,,;
|
|
TRUNCATE TABLE t1;
|
|
connection default;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
COMMIT;
|
|
connection truncate;
|
|
# Reaping TRUNCATE TABLE
|
|
SELECT COUNT(*) FROM t1;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
connection default;
|
|
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 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
disconnect truncate;
|
|
DROP TABLE t1,t2;
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t2 VALUES (1),(2),(3);
|
|
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|
**** Truncate of empty table shall be logged
|
|
TRUNCATE TABLE t1;
|
|
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|
TRUNCATE TABLE t2;
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
|
DROP TABLE t1,t2;
|
|
#
|
|
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
|
#
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1),(2);
|
|
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|
BEGIN;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
connect truncate,localhost,root,,;
|
|
TRUNCATE TABLE t1;
|
|
connection default;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
COMMIT;
|
|
connection truncate;
|
|
# Reaping TRUNCATE TABLE
|
|
SELECT COUNT(*) FROM t1;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
connection default;
|
|
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 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
disconnect truncate;
|
|
DROP TABLE t1,t2;
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t2 VALUES (1),(2),(3);
|
|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|
**** Truncate of empty table shall be logged
|
|
TRUNCATE TABLE t1;
|
|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|
TRUNCATE TABLE t2;
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
|
DROP TABLE t1,t2;
|
|
#
|
|
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
|
#
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1),(2);
|
|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|
BEGIN;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
connect truncate,localhost,root,,;
|
|
TRUNCATE TABLE t1;
|
|
connection default;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
COMMIT;
|
|
connection truncate;
|
|
# Reaping TRUNCATE TABLE
|
|
SELECT COUNT(*) FROM t1;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
connection default;
|
|
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 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
disconnect truncate;
|
|
DROP TABLE t1,t2;
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t2 VALUES (1),(2),(3);
|
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|
**** Truncate of empty table shall be logged
|
|
TRUNCATE TABLE t1;
|
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|
TRUNCATE TABLE t2;
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
|
DROP TABLE t1,t2;
|
|
#
|
|
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
|
#
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1),(2);
|
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|
BEGIN;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
connect truncate,localhost,root,,;
|
|
TRUNCATE TABLE t1;
|
|
connection default;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
COMMIT;
|
|
connection truncate;
|
|
# Reaping TRUNCATE TABLE
|
|
SELECT COUNT(*) FROM t1;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
connection default;
|
|
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 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
disconnect truncate;
|
|
DROP TABLE t1,t2;
|
|
SET BINLOG_FORMAT=STATEMENT;
|
|
RESET MASTER;
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t2 VALUES (1),(2),(3);
|
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|
**** Truncate of empty table shall be logged
|
|
TRUNCATE TABLE t1;
|
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|
TRUNCATE TABLE t2;
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
|
DROP TABLE t1,t2;
|
|
#
|
|
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
|
#
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1),(2);
|
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|
BEGIN;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
connect truncate,localhost,root,,;
|
|
TRUNCATE TABLE t1;
|
|
connection default;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
COMMIT;
|
|
connection truncate;
|
|
# Reaping TRUNCATE TABLE
|
|
SELECT COUNT(*) FROM t1;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
connection default;
|
|
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`; INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
disconnect truncate;
|
|
DROP TABLE t1,t2;
|
|
# Truncate is not supported for SBR if the isolation level is
|
|
# READ UNCOMMITTED or READ COMMITTED. These specific isolation
|
|
# levels are tested elsewhere.
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t2 VALUES (1),(2),(3);
|
|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|
**** Truncate of empty table shall be logged
|
|
TRUNCATE TABLE t1;
|
|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|
TRUNCATE TABLE t2;
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
|
DROP TABLE t1,t2;
|
|
#
|
|
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
|
#
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1),(2);
|
|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|
BEGIN;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
connect truncate,localhost,root,,;
|
|
TRUNCATE TABLE t1;
|
|
connection default;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
COMMIT;
|
|
connection truncate;
|
|
# Reaping TRUNCATE TABLE
|
|
SELECT COUNT(*) FROM t1;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
connection default;
|
|
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`; INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
disconnect truncate;
|
|
DROP TABLE t1,t2;
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t2 VALUES (1),(2),(3);
|
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|
**** Truncate of empty table shall be logged
|
|
TRUNCATE TABLE t1;
|
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|
TRUNCATE TABLE t2;
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
|
DROP TABLE t1,t2;
|
|
#
|
|
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
|
#
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1),(2);
|
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|
BEGIN;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
connect truncate,localhost,root,,;
|
|
TRUNCATE TABLE t1;
|
|
connection default;
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
COMMIT;
|
|
connection truncate;
|
|
# Reaping TRUNCATE TABLE
|
|
SELECT COUNT(*) FROM t1;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
4
|
|
connection default;
|
|
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`; INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
|
disconnect truncate;
|
|
DROP TABLE t1,t2;
|
|
SET @@global.binlog_format = @old_binlog_format;
|
|
SET @@session.binlog_format = @old_binlog_format;
|