List:Commits« Previous MessageNext Message »
From:Daogang Qu Date:August 25 2010 2:32pm
Subject:Re: bzr commit into mysql-5.5-bugfixing branch (Dao-Gang.Qu:3192)
Bug#54579
View as plain text  
Libing Song wrote:
> Hi Daogang,
> Nice work!
>
> Only one minor problem.
> Could you please add a test to verify that DELAYED is in a conditional
> comment.
> like that 'INSERT /*!DELAYED*/ VALUES(1).
>   
Sure. Addressed. Please review:
http://lists.mysql.com/commits/116752

Best Regards,

Daogang
> On Mon, 2010-08-23 at 08:15 +0000, Dao-Gang.Qu@stripped wrote:
>   
>> #At file:///home/daogangqu/mysql/bzrwork1/bug54579/mysql-5.5-bugfixing/ based on
> revid:alfranio.correia@stripped
>>
>>  3192 Dao-Gang.Qu@stripped	2010-08-23
>>       Bug #54579  	Wrong unsafe warning for INSERT DELAYED in SBR
>>             
>>       The lock_type is upgrade to TL_WRITE from TL_WRITE_DELAYED for
>>       INSERT DELAYED when inserting multi values in one statement.
>>       It's safe. But it causes an unsafe warning in SBR.
>>             
>>       Make INSERT DELAYED safe by logging it as INSERT without DELAYED.
>>      @ mysql-test/extra/binlog_tests/binlog_insert_delayed.test
>>         Updated the test file to test multi INSERT DELAYED statement
>>         is no longer causes an unsafe warning and binlogged as INSERT
>>         without DELAYED.
>>      @ mysql-test/extra/rpl_tests/create_recursive_construct.inc
>>         Updated for the patch of bug#54579.
>>      @ mysql-test/suite/binlog/r/binlog_row_binlog.result
>>         Updated for the patch of bug#54579.
>>      @ mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result
>>         Test result for BUG#54579.
>>      @ mysql-test/suite/binlog/r/binlog_stm_binlog.result
>>         Updated for the patch of bug#54579.
>>      @ mysql-test/suite/binlog/r/binlog_unsafe.result
>>         Updated for the patch of bug#54579.
>>      @ mysql-test/suite/binlog/t/binlog_unsafe.test
>>         Updated for the patch of bug#54579.
>>      @ sql/sql_insert.cc
>>         Added code to genetate a new query string for removing
>>         DELAYED keyword for multi INSERT DEALAYED statement.
>>      @ sql/sql_yacc.yy
>>         Added code to record the DELAYED keyword position and remove the setting
>>         of unsafe statement for INSERT DELAYED statement
>>
>>     modified:
>>       mysql-test/extra/binlog_tests/binlog_insert_delayed.test
>>       mysql-test/extra/rpl_tests/create_recursive_construct.inc
>>       mysql-test/suite/binlog/r/binlog_row_binlog.result
>>       mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result
>>       mysql-test/suite/binlog/r/binlog_stm_binlog.result
>>       mysql-test/suite/binlog/r/binlog_unsafe.result
>>       mysql-test/suite/binlog/t/binlog_unsafe.test
>>       sql/sql_insert.cc
>>       sql/sql_lex.h
>>       sql/sql_yacc.yy
>> === modified file 'mysql-test/extra/binlog_tests/binlog_insert_delayed.test'
>> --- a/mysql-test/extra/binlog_tests/binlog_insert_delayed.test	2008-07-23
> 16:56:39 +0000
>> +++ b/mysql-test/extra/binlog_tests/binlog_insert_delayed.test	2010-08-23
> 08:15:18 +0000
>> @@ -46,19 +46,19 @@ insert delayed into t1 values (300);
>>  inc $count;
>>  --source include/wait_until_rows_count.inc
>>  
>> -# It is not enough to wait until all rows have been inserted into the
>> -# table. FLUSH TABLES ensures that they are in the binlog too.  See
>> -# comment above.
>> -FLUSH TABLES;
>> -source include/show_binlog_events.inc;
>> -
>> -insert delayed into t1 values (null),(null),(null),(null);
>> +insert /* before delayed */ delayed /* after delayed */ into t1 values
> (null),(null),(null),(null);
>>  inc $count; inc $count; inc $count; inc $count;
>>  --source include/wait_until_rows_count.inc
>>  
>> -insert delayed into t1 values (null),(null),(400),(null);
>> +insert /* before delayed */ delayed /* after delayed */ into t1 values
> (null),(null),(400),(null);
>>  inc $count; inc $count; inc $count; inc $count;
>>  --source include/wait_until_rows_count.inc
>>  
>> +# It is not enough to wait until all rows have been inserted into the
>> +# table. FLUSH TABLES ensures that they are in the binlog too.  See
>> +# comment above.
>> +FLUSH TABLES;
>> +source include/show_binlog_events.inc;
>> +
>>  select * from t1;
>>  drop table t1;
>>
>> === modified file 'mysql-test/extra/rpl_tests/create_recursive_construct.inc'
>> --- a/mysql-test/extra/rpl_tests/create_recursive_construct.inc	2010-08-10
> 11:32:54 +0000
>> +++ b/mysql-test/extra/rpl_tests/create_recursive_construct.inc	2010-08-23
> 08:15:18 +0000
>> @@ -338,10 +338,20 @@ if (`SELECT '$CRC_RET_stmt_sidef' != ''`
>>      SHOW BINLOG EVENTS;
>>      --die Warnings printed
>>    }
>> -  # The first event is format_description, the second is
>> -  # Query_event('BEGIN'), and the third should be our Table_map.
>>    --let $event_type= query_get_value(SHOW BINLOG EVENTS, Event_type, 3)
>> -  if (`SELECT '$event_type' != 'Table_map'`) {
>> +  # The first event is format_description, the second is
>> +  # Query_event('BEGIN'), and the third should be our Query
>> +  # for safe statement.
>> +  if (`SELECT $unsafe_type = 3 AND '$event_type' != 'Query'`) {
>> +    --enable_query_log
>> +    --echo ******** Failure! Event number 3 was a '$event_type', not a 'Query'.
> ********
>> +    SHOW BINLOG EVENTS;
>> +    --die Wrong events in binlog.
>> +  }
>> +  # The first event is format_description, the second is
>> +  # Query_event('BEGIN'), and the third should be our Table_map
>> +  # for unsafe statement.
>> +  if (`SELECT $unsafe_type != 3 AND '$event_type' != 'Table_map'`) {
>>      --enable_query_log
>>      --echo ******** Failure! Event number 3 was a '$event_type', not a
> 'Table_map'. ********
>>      SHOW BINLOG EVENTS;
>>
>> === modified file 'mysql-test/suite/binlog/r/binlog_row_binlog.result'
>> --- a/mysql-test/suite/binlog/r/binlog_row_binlog.result	2010-08-20 02:59:58
> +0000
>> +++ b/mysql-test/suite/binlog/r/binlog_row_binlog.result	2010-08-23 08:15:18
> +0000
>> @@ -1221,6 +1221,8 @@ create table t1 (a int not null auto_inc
>>  insert delayed into t1 values (207);
>>  insert delayed into t1 values (null);
>>  insert delayed into t1 values (300);
>> +insert /* before delayed */ delayed /* after delayed */ into t1 values
> (null),(null),(null),(null);
>> +insert /* before delayed */ delayed /* after 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
>> @@ -1266,9 +1268,20 @@ 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	#	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	#	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	#	#	use `test`; FLUSH TABLES
>> -insert delayed into t1 values (null),(null),(null),(null);
>> -insert delayed into t1 values (null),(null),(400),(null);
>> +master-bin.000001	#	Rotate	#	#	master-bin.000002;pos=4
>>  select * from t1;
>>  a
>>  207
>>
>> === modified file
> 'mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result'
>> --- a/mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result	2010-04-28
> 12:47:49 +0000
>> +++ b/mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result	2010-08-23
> 08:15:18 +0000
>> @@ -2,6 +2,8 @@ create table t1 (a int not null auto_inc
>>  insert delayed into t1 values (207);
>>  insert delayed into t1 values (null);
>>  insert delayed into t1 values (300);
>> +insert /* before delayed */ delayed /* after delayed */ into t1 values
> (null),(null),(null),(null);
>> +insert /* before delayed */ delayed /* after 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
>> @@ -19,13 +21,15 @@ master-bin.000001	#	Query	#	#	COMMIT
>>  master-bin.000001	#	Query	#	#	BEGIN
>>  master-bin.000001	#	Query	#	#	use `test`; insert delayed into t1 values (300)
>>  master-bin.000001	#	Query	#	#	COMMIT
>> +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 /* before delayed */  /* after
> delayed */ into t1 values (null),(null),(400),(null)
>> +master-bin.000001	#	Query	#	#	COMMIT
>>  master-bin.000001	#	Query	#	#	use `test`; FLUSH TABLES
>> -insert delayed into t1 values (null),(null),(null),(null);
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>> -insert delayed into t1 values (null),(null),(400),(null);
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  select * from t1;
>>  a
>>  207
>>
>> === modified file 'mysql-test/suite/binlog/r/binlog_stm_binlog.result'
>> --- a/mysql-test/suite/binlog/r/binlog_stm_binlog.result	2010-08-20 02:59:58
> +0000
>> +++ b/mysql-test/suite/binlog/r/binlog_stm_binlog.result	2010-08-23 08:15:18
> +0000
>> @@ -720,6 +720,8 @@ create table t1 (a int not null auto_inc
>>  insert delayed into t1 values (207);
>>  insert delayed into t1 values (null);
>>  insert delayed into t1 values (300);
>> +insert /* before delayed */ delayed /* after delayed */ into t1 values
> (null),(null),(null),(null);
>> +insert /* before delayed */ delayed /* after 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
>> @@ -757,9 +759,19 @@ 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	#	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	#	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	#	#	use `test`; FLUSH TABLES
>> -insert delayed into t1 values (null),(null),(null),(null);
>> -insert delayed into t1 values (null),(null),(400),(null);
>>  select * from t1;
>>  a
>>  207
>>
>> === modified file 'mysql-test/suite/binlog/r/binlog_unsafe.result'
>> --- a/mysql-test/suite/binlog/r/binlog_unsafe.result	2010-08-10 11:32:54 +0000
>> +++ b/mysql-test/suite/binlog/r/binlog_unsafe.result	2010-08-23 08:15:18 +0000
>> @@ -862,65 +862,51 @@ Note	1592	Unsafe statement written to th
>>  * Invoke statement so that return value is dicarded: expect no warning.
>>  SELECT * FROM data_table LIMIT 1;
>>  
>> -==== Testing INSERT DELAYED unsafeness ====
>> +==== Testing INSERT DELAYED safeness after BUG#54579 is fixed ====
>>  
>>  Invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
>>  CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES
> (47); INSERT DELAYED INTO t0 VALUES (1), (2); RETURN 0; END;
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  INSERT INTO t1 SELECT func_sidef_1();
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  
>>  Invoking function func_sidef_2 invoking function func_sidef_1 invoking unsafe
> INSERT DELAYED statement.
>>  CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES
> (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  INSERT INTO t2 SELECT func_sidef_2();
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  DROP FUNCTION func_sidef_2;
>>  
>>  Invoking procedure proc_2 invoking function func_sidef_1 invoking unsafe INSERT
> DELAYED statement.
>>  CREATE PROCEDURE proc_2() BEGIN INSERT INTO t1 SELECT func_sidef_1(); INSERT
> INTO ta2 VALUES (47); END;
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  CALL proc_2();
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  DROP PROCEDURE proc_2;
>>  
>>  Invoking trigger trig_2 invoking function func_sidef_1 invoking unsafe INSERT
> DELAYED statement.
>>  CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT
> INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  INSERT INTO trigger_table_2 VALUES (1);
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  DROP TRIGGER trig_2;
>>  
>>  Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe INSERT
> DELAYED statement.
>>  CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  INSERT INTO t2 SELECT * FROM view_sidef_2;
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  DROP VIEW view_sidef_2;
>>  
>>  Invoking prepared statement prep_2 invoking function func_sidef_1 invoking
> unsafe INSERT DELAYED statement.
>>  PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  EXECUTE prep_2;
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  DROP PREPARE prep_2;
>> @@ -928,49 +914,39 @@ DROP FUNCTION func_sidef_1;
>>  
>>  Invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
>>  CREATE PROCEDURE proc_1() BEGIN INSERT DELAYED INTO t0 VALUES (1), (2); INSERT
> INTO ta1 VALUES (47); END;
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  CALL proc_1();
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  
>>  Invoking function func_sidef_2 invoking procedure proc_1 invoking unsafe INSERT
> DELAYED statement.
>>  CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES
> (47); CALL proc_1(); RETURN 0; END;
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  INSERT INTO t2 SELECT func_sidef_2();
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  DROP FUNCTION func_sidef_2;
>>  
>>  Invoking procedure proc_2 invoking procedure proc_1 invoking unsafe INSERT
> DELAYED statement.
>>  CREATE PROCEDURE proc_2() BEGIN CALL proc_1(); INSERT INTO ta2 VALUES (47);
> END;
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  CALL proc_2();
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  DROP PROCEDURE proc_2;
>>  
>>  Invoking trigger trig_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED
> statement.
>>  CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT
> INTO ta2 VALUES (47); CALL proc_1(); END;
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  INSERT INTO trigger_table_2 VALUES (1);
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  DROP TRIGGER trig_2;
>>  
>>  Invoking prepared statement prep_2 invoking procedure proc_1 invoking unsafe
> INSERT DELAYED statement.
>>  PREPARE prep_2 FROM "CALL proc_1()";
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  EXECUTE prep_2;
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  DROP PREPARE prep_2;
>> @@ -978,49 +954,39 @@ DROP PROCEDURE proc_1;
>>  
>>  Invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
>>  CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT
> INTO ta1 VALUES (47); INSERT DELAYED INTO t0 VALUES (1), (2); END;
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  INSERT INTO trigger_table_1 VALUES (1);
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  
>>  Invoking function func_sidef_2 invoking trigger trig_1 invoking unsafe INSERT
> DELAYED statement.
>>  CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES
> (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  INSERT INTO t2 SELECT func_sidef_2();
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  DROP FUNCTION func_sidef_2;
>>  
>>  Invoking procedure proc_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED
> statement.
>>  CREATE PROCEDURE proc_2() BEGIN INSERT INTO trigger_table_1 VALUES (1); INSERT
> INTO ta2 VALUES (47); END;
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  CALL proc_2();
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  DROP PROCEDURE proc_2;
>>  
>>  Invoking trigger trig_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED
> statement.
>>  CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT
> INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  INSERT INTO trigger_table_2 VALUES (1);
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  DROP TRIGGER trig_2;
>>  
>>  Invoking prepared statement prep_2 invoking trigger trig_1 invoking unsafe
> INSERT DELAYED statement.
>>  PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  EXECUTE prep_2;
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  DROP PREPARE prep_2;
>> @@ -1028,19 +994,15 @@ DROP TRIGGER trig_1;
>>  
>>  Invoking prepared statement prep_1 invoking unsafe INSERT DELAYED statement.
>>  PREPARE prep_1 FROM "INSERT DELAYED INTO t0 VALUES (1), (2)";
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  EXECUTE prep_1;
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  DROP PREPARE prep_1;
>>  
>>  Invoking unsafe INSERT DELAYED statement.
>> -* binlog_format = STATEMENT: expect 1 warnings.
>> +* binlog_format = STATEMENT: expect 0 warnings.
>>  INSERT DELAYED INTO t0 VALUES (1), (2);
>> -Warnings:
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  * SQL_LOG_BIN = 0: expect nothing logged and no warning.
>>  * binlog_format = MIXED: expect row events in binlog and no warning.
>>  
>> @@ -1798,11 +1760,10 @@ SELECT COUNT(*) FROM mysql.general_log;
>>  
>>  Invoking function func_sidef_1 invoking statement that is unsafe in many ways.
>>  CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES
> (47); INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname,
> myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; RETURN 0; END;
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  INSERT INTO t1 SELECT func_sidef_1();
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -1813,11 +1774,10 @@ Note	1592	Unsafe statement written to th
>>  
>>  Invoking function func_sidef_2 invoking function func_sidef_1 invoking statement
> that is unsafe in many ways.
>>  CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES
> (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  INSERT INTO t2 SELECT func_sidef_2();
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -1829,11 +1789,10 @@ DROP FUNCTION func_sidef_2;
>>  
>>  Invoking procedure proc_2 invoking function func_sidef_1 invoking statement that
> is unsafe in many ways.
>>  CREATE PROCEDURE proc_2() BEGIN INSERT INTO t1 SELECT func_sidef_1(); INSERT
> INTO ta2 VALUES (47); END;
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  CALL proc_2();
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -1845,11 +1804,10 @@ DROP PROCEDURE proc_2;
>>  
>>  Invoking trigger trig_2 invoking function func_sidef_1 invoking statement that
> is unsafe in many ways.
>>  CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT
> INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  INSERT INTO trigger_table_2 VALUES (1);
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -1863,17 +1821,15 @@ Invoking view view_sidef_2 invoking func
>>  CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable
> that may have a different value on the slave.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function
> that may return a different value on the slave.
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  INSERT INTO t2 SELECT * FROM view_sidef_2;
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -1885,11 +1841,10 @@ DROP VIEW view_sidef_2;
>>  
>>  Invoking prepared statement prep_2 invoking function func_sidef_1 invoking
> statement that is unsafe in many ways.
>>  PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  EXECUTE prep_2;
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -1902,11 +1857,10 @@ DROP FUNCTION func_sidef_1;
>>  
>>  Invoking procedure proc_1 invoking statement that is unsafe in many ways.
>>  CREATE PROCEDURE proc_1() BEGIN INSERT DELAYED INTO double_autoinc_table SELECT
> CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; INSERT INTO
> ta1 VALUES (47); END;
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  CALL proc_1();
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -1917,11 +1871,10 @@ Note	1592	Unsafe statement written to th
>>  
>>  Invoking function func_sidef_2 invoking procedure proc_1 invoking statement that
> is unsafe in many ways.
>>  CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES
> (47); CALL proc_1(); RETURN 0; END;
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  INSERT INTO t2 SELECT func_sidef_2();
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -1933,11 +1886,10 @@ DROP FUNCTION func_sidef_2;
>>  
>>  Invoking procedure proc_2 invoking procedure proc_1 invoking statement that is
> unsafe in many ways.
>>  CREATE PROCEDURE proc_2() BEGIN CALL proc_1(); INSERT INTO ta2 VALUES (47);
> END;
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  CALL proc_2();
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -1949,11 +1901,10 @@ DROP PROCEDURE proc_2;
>>  
>>  Invoking trigger trig_2 invoking procedure proc_1 invoking statement that is
> unsafe in many ways.
>>  CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT
> INTO ta2 VALUES (47); CALL proc_1(); END;
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  INSERT INTO trigger_table_2 VALUES (1);
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -1965,11 +1916,10 @@ DROP TRIGGER trig_2;
>>  
>>  Invoking prepared statement prep_2 invoking procedure proc_1 invoking statement
> that is unsafe in many ways.
>>  PREPARE prep_2 FROM "CALL proc_1()";
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  EXECUTE prep_2;
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -1982,11 +1932,10 @@ DROP PROCEDURE proc_1;
>>  
>>  Invoking trigger trig_1 invoking statement that is unsafe in many ways.
>>  CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT
> INTO ta1 VALUES (47); INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(),
> @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; END;
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  INSERT INTO trigger_table_1 VALUES (1);
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -1997,11 +1946,10 @@ Note	1592	Unsafe statement written to th
>>  
>>  Invoking function func_sidef_2 invoking trigger trig_1 invoking statement that
> is unsafe in many ways.
>>  CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES
> (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  INSERT INTO t2 SELECT func_sidef_2();
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -2013,11 +1961,10 @@ DROP FUNCTION func_sidef_2;
>>  
>>  Invoking procedure proc_2 invoking trigger trig_1 invoking statement that is
> unsafe in many ways.
>>  CREATE PROCEDURE proc_2() BEGIN INSERT INTO trigger_table_1 VALUES (1); INSERT
> INTO ta2 VALUES (47); END;
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  CALL proc_2();
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -2029,11 +1976,10 @@ DROP PROCEDURE proc_2;
>>  
>>  Invoking trigger trig_2 invoking trigger trig_1 invoking statement that is
> unsafe in many ways.
>>  CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT
> INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  INSERT INTO trigger_table_2 VALUES (1);
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -2045,11 +1991,10 @@ DROP TRIGGER trig_2;
>>  
>>  Invoking prepared statement prep_2 invoking trigger trig_1 invoking statement
> that is unsafe in many ways.
>>  PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  EXECUTE prep_2;
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -2062,11 +2007,10 @@ DROP TRIGGER trig_1;
>>  
>>  Invoking prepared statement prep_1 invoking statement that is unsafe in many
> ways.
>>  PREPARE prep_1 FROM "INSERT DELAYED INTO double_autoinc_table SELECT
> CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1";
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  EXECUTE prep_1;
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -2077,11 +2021,10 @@ Note	1592	Unsafe statement written to th
>>  DROP PREPARE prep_1;
>>  
>>  Invoking statement that is unsafe in many ways.
>> -* binlog_format = STATEMENT: expect 7 warnings.
>> +* binlog_format = STATEMENT: expect 6 warnings.
>>  INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname,
> myfunc_int(), NULL) FROM mysql.general_log LIMIT 1;
>>  Warnings:
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause.
> This is unsafe because the set of rows included cannot be predicted.
>> -Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED.
> This is unsafe because the times when rows are inserted cannot be predicted.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log,
> slow query log, or performance_schema table(s). This is unsafe because system tables may
> differ on slaves.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a
> stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be
> logged correctly.
>>  Note	1592	Unsafe statement written to the binary log using statement format
> since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not
> return the same value on the slave.
>> @@ -2554,8 +2497,7 @@ func_limit()
>>  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	#	Table_map	#	#	table_id: # (test.t1)
>> -master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F
>> +master-bin.000001	#	Query	#	#	use `test`; INSERT DELAYED INTO t1 VALUES (1),
> (2)
>>  master-bin.000001	#	Query	#	#	COMMIT
>>  master-bin.000001	#	Query	#	#	BEGIN
>>  master-bin.000001	#	Table_map	#	#	table_id: # (test.t1)
>>
>> === modified file 'mysql-test/suite/binlog/t/binlog_unsafe.test'
>> --- a/mysql-test/suite/binlog/t/binlog_unsafe.test	2010-08-10 11:32:54 +0000
>> +++ b/mysql-test/suite/binlog/t/binlog_unsafe.test	2010-08-23 08:15:18 +0000
>> @@ -179,13 +179,13 @@ while (`SELECT $unsafe_type < 9`) {
>>    }
>>  
>>    if (`SELECT $unsafe_type = 3`) {
>> -    --echo ==== Testing INSERT DELAYED unsafeness ====
>> +    --echo ==== Testing INSERT DELAYED safeness after BUG#54579 is fixed ====
>>      --let $desc_0= unsafe INSERT DELAYED statement
>>      --let $stmt_sidef_0= INSERT DELAYED INTO t0 VALUES (1), (2)
>>      --let $value_0=
>>      --let $sel_sidef_0=
>>      --let $sel_retval_0=
>> -    --let $CRC_ARG_expected_number_of_warnings= 1
>> +    --let $CRC_ARG_expected_number_of_warnings= 0
>>    }
>>  
>>    if (`SELECT $unsafe_type = 4`) {
>> @@ -227,7 +227,7 @@ while (`SELECT $unsafe_type < 9`) {
>>      --let $value_0=
>>      --let $sel_sidef_0=
>>      --let $sel_retval_0=
>> -    --let $CRC_ARG_expected_number_of_warnings= 7
>> +    --let $CRC_ARG_expected_number_of_warnings= 6
>>    }
>>  
>>    if (`SELECT $unsafe_type = 8`) {
>>
>> === modified file 'sql/sql_insert.cc'
>> --- a/sql/sql_insert.cc	2010-08-20 02:59:58 +0000
>> +++ b/sql/sql_insert.cc	2010-08-23 08:15:18 +0000
>> @@ -586,6 +586,32 @@ bool open_and_lock_for_insert_delayed(TH
>>  
>>
>>  /**
>> +  Create a new query string for removing DELAYED keyword for
>> +  multi INSERT DEALAYED statement.
>> +
>> +  @param[in] thd                 Thread handler
>> +  @param[in] buf                 Query string
>> +
>> +  @return
>> +             0           ok
>> +             1           error
>> +*/
>> +static int
>> +create_insert_stmt_from_insert_delayed(THD *thd, String *buf)
>> +{
>> +  /* Append the part of thd->query before "DELAYED" keyword */
>> +  if (buf->append(thd->query(),
>> +                  thd->lex->keyword_delayed_begin - thd->query()))
>> +    return 1;
>> +  /* Append the part of thd->query after "DELAYED" keyword */
>> +  if (buf->append(thd->lex->keyword_delayed_begin + 7))
>> +    return 1;
>> +
>> +  return 0;
>> +}
>> +
>> +
>> +/**
>>    INSERT statement implementation
>>  
>>    @note Like implementations of other DDL/DML in MySQL, this function
>> @@ -964,13 +990,28 @@ bool mysql_insert(THD *thd,TABLE_LIST *t
>>  	such case the flag is ignored for constructing binlog event.
>>  	*/
>>  	DBUG_ASSERT(thd->killed != THD::KILL_BAD_DATA || error > 0);
>> -	if (thd->binlog_query(THD::ROW_QUERY_TYPE,
>> -			      thd->query(), thd->query_length(),
>> -			      transactional_table, FALSE, FALSE,
>> -                              errcode))
>> +        if (was_insert_delayed && table_list->lock_type == 
> TL_WRITE)
>>          {
>> +          /* Binlog multi INSERT DELAYED as INSERT without DELAYED. */
>> +          String log_query;
>> +          if (create_insert_stmt_from_insert_delayed(thd, &log_query))
>> +          {
>> +            sql_print_error("Event Error: An error occurred while creating query
> string"
>> +                            "for INSERT DELAYED stmt, before writing it into
> binary log.");
>> +
>> +            error= 1;
>> +          }
>> +          else if (thd->binlog_query(THD::ROW_QUERY_TYPE,
>> +                                     log_query.c_ptr(), log_query.length(),
>> +                                     transactional_table, FALSE, FALSE,
>> +                                     errcode))
>> +            error= 1;
>> +        }
>> +        else if (thd->binlog_query(THD::ROW_QUERY_TYPE,
>> +			           thd->query(), thd->query_length(),
>> +			           transactional_table, FALSE, FALSE,
>> +                                   errcode))
>>  	  error= 1;
>> -	}
>>        }
>>      }
>>      DBUG_ASSERT(transactional_table || !changed || 
>>
>> === modified file 'sql/sql_lex.h'
>> --- a/sql/sql_lex.h	2010-08-20 02:59:58 +0000
>> +++ b/sql/sql_lex.h	2010-08-23 08:15:18 +0000
>> @@ -2354,8 +2354,14 @@ struct LEX: public Query_tables_list
>>  
>>      This pointer is required to add possibly omitted DEFINER-clause to the
>>      DDL-statement before dumping it to the binlog.
>> +
>> +    keyword_delayed_begin points to the begin of the DELAYED keyword in
>> +    INSERT DELAYED statement.
>>    */
>> -  const char *stmt_definition_begin;
>> +  union {
>> +    const char *stmt_definition_begin;
>> +    const char *keyword_delayed_begin;
>> +  };
>>  
>>    const char *stmt_definition_end;
>>  
>>
>> === modified file 'sql/sql_yacc.yy'
>> --- a/sql/sql_yacc.yy	2010-08-18 09:35:41 +0000
>> +++ b/sql/sql_yacc.yy	2010-08-23 08:15:18 +0000
>> @@ -10446,8 +10446,8 @@ insert_lock_option:
>>          | LOW_PRIORITY  { $$= TL_WRITE_LOW_PRIORITY; }
>>          | DELAYED_SYM
>>          {
>> +          Lex->keyword_delayed_begin= YYLIP->get_tok_start();
>>            $$= TL_WRITE_DELAYED;
>> -          Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_INSERT_DELAYED);
>>          }
>>          | HIGH_PRIORITY { $$= TL_WRITE; }
>>          ;
>> @@ -10456,8 +10456,8 @@ replace_lock_option:
>>            opt_low_priority { $$= $1; }
>>          | DELAYED_SYM
>>          {
>> +          Lex->keyword_delayed_begin= YYLIP->get_tok_start();
>>            $$= TL_WRITE_DELAYED;
>> -          Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_INSERT_DELAYED);
>>          }
>>          ;
>>  
>>
>> text/bzr-bundle type attachment
>> (bzr/dao-gang.qu@stripped)
>> # Bazaar merge directive format 2 (Bazaar 0.90)
>> # revision_id: dao-gang.qu@stripped
>> # target_branch: file:///home/daogangqu/mysql/bzrwork1/bug54579/mysql-\
>> #   5.5-bugfixing/
>> # testament_sha1: 6a3199c7f95d70dbf2c90b101498e493081b1053
>> # timestamp: 2010-08-23 16:15:27 +0800
>> # base_revision_id: alfranio.correia@stripped\
>> #   i86igkp0hf3aiw6u
>> # 
>> # Begin bundle
>> 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
>>
>>
>>     
>
>   

Thread
bzr commit into mysql-5.5-bugfixing branch (Dao-Gang.Qu:3192) Bug#54579Dao-Gang.Qu23 Aug
  • Re: bzr commit into mysql-5.5-bugfixing branch (Dao-Gang.Qu:3192)Bug#54579He Zhenxing24 Aug
    • Re: bzr commit into mysql-5.5-bugfixing branch (Dao-Gang.Qu:3192)Bug#54579Daogang Qu25 Aug
  • Re: bzr commit into mysql-5.5-bugfixing branch (Dao-Gang.Qu:3192)Bug#54579Libing Song25 Aug
    • Re: bzr commit into mysql-5.5-bugfixing branch (Dao-Gang.Qu:3192)Bug#54579Daogang Qu25 Aug