mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
cd64b23fcf
It is not necessary to support INSERT DELAYED for a single value insert, while we do not support that for multi-values insert when binlog is enabled in SBR. The lock_type is upgrade to TL_WRITE from TL_WRITE_DELAYED for INSERT DELAYED for single value insert as multi-values insert did when binlog is enabled. Then it's safe. And binlog it as INSERT without DELAYED. mysql-test/extra/binlog_tests/binlog_insert_delayed.test: Added test case for bug#57666. mysql-test/suite/binlog/r/binlog_row_binlog.result: Updated for bug#57666 mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result: Updated for bug#57666 mysql-test/suite/binlog/r/binlog_stm_binlog.result: Updated for bug#57666 mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result: Updated for bug#57666 sql/sql_insert.cc: Updated code for the following things: 1. Upgrade the lock_type to TL_WRITE from TL_WRITE_DELAYED for INSERT DELAYED for single value insert as multi-values insert did when binlog is enabled. 2. Clear code to not binlog INSERT DELAYED STMT in SBR. 3. Get rid of privilege check for log_on.
51 lines
2.2 KiB
Text
51 lines
2.2 KiB
Text
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
|
|
insert /* before delayed */ delayed /* after delayed */ into t1 values (207);
|
|
insert /*! delayed */ into t1 values (null);
|
|
insert delayed into t1 values (300);
|
|
FLUSH TABLES;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `mtr`; INSERT INTO test_suppressions (pattern) VALUES ( NAME_CONST('pattern',_latin1'Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT' COLLATE 'latin1_swedish_ci'))
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Query # # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; insert /* before delayed */ /* after delayed */ into t1 values (207)
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Intvar # # INSERT_ID=208
|
|
master-bin.000001 # Query # # use `test`; insert /*! */ into t1 values (null)
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; insert into t1 values (300)
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
|
RESET MASTER;
|
|
insert /* before delayed */ delayed /* after delayed */ into t1 values (null),(null),(null),(null);
|
|
insert /*! delayed */ into t1 values (null),(null),(400),(null);
|
|
FLUSH TABLES;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Intvar # # INSERT_ID=301
|
|
master-bin.000001 # Query # # use `test`; insert /* before delayed */ /* after delayed */ into t1 values (null),(null),(null),(null)
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Intvar # # INSERT_ID=305
|
|
master-bin.000001 # Query # # use `test`; insert /*! */ into t1 values (null),(null),(400),(null)
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
|
select * from t1;
|
|
a
|
|
207
|
|
208
|
|
300
|
|
301
|
|
302
|
|
303
|
|
304
|
|
305
|
|
306
|
|
400
|
|
401
|
|
drop table t1;
|