Commit 20c59f9c authored by unknown's avatar unknown
Browse files

fixes after merge. Updates to test's results.

We now reset the THD members related to auto_increment+binlog in
MYSQL_LOG::write(). This is better than in THD::cleanup_after_query(),
which was not able to distinguish between SELECT myfunc1(),myfunc2()
and INSERT INTO t SELECT myfunc1(),myfunc2() from a binlogging point
of view.
Rows_log_event::exec_event() now calls lex_start() instead of
mysql_init_query() because the latter now does too much (it resets
the binlog format).


mysql-test/extra/rpl_tests/rpl_insert_id.test:
  fix after merge
mysql-test/mysql-test-run.pl:
  -v does not bring useful information when running valgrind; I remove it;
  if you think it's useful add it back.
mysql-test/r/binlog_stm_mix_innodb_myisam.result:
  Position columns of SHOW BINLOG EVENTS are replaced by # (more robust
  if the size of an event changes).
mysql-test/r/rpl_insert_id.result:
  fix after merge
mysql-test/r/rpl_loaddata.result:
  The binlog positions change, because one event disappeared; indeed there
  was this in the binlog (in the current 5.1!):
  SET INSERT_ID=2;
  SET INSERT_ID=1;
  SET TIMESTAMP=1152540671;
  load data LOCAL INFILE '/tmp/SQL_LOAD_MB-1-2' INTO table t1;
  Two INSERT_ID events, useless and a bug. Goes away afer cleaning up
  auto_increment handling.
mysql-test/r/rpl_switch_stm_row_mixed.result:
  INSERT_ID=5 appears, it's a consequence of having merged the fix
  for BUG#20341
  "stored function inserting into one auto_increment puts bad data in slave".
  In mixed mode, if one substatement of a stored procedure requires row-based,
  the entire procedure uses row-based (was already true for stored functions);
  this is a consequence of not doing the resetting of binlog format inside
  lock_tables() (which didn't work with how the slave thread executes
  row-based binlog events).
mysql-test/t/rpl_switch_stm_row_mixed.test:
  removing the multi-row delayed insert because in RBR the number of events
  which it generates, is not repeatable (probably depends on how the delayed
  thread groups rows, i.e. dependent on timing).
sql/ha_partition.cc:
  update to new prototype
sql/ha_partition.h:
  update to new prototype of the handler:: method.
sql/handler.cc:
  after-merge fixes (manually merging part which was hard to merge in fmtool)
sql/log.cc:
  When we write to the binary log, THD's parameters which influenced this
  write are reset: stmt_depends_on_first_successful_insert_id_in_prev_stmt
  and auto_inc_intervals_in_cur_stmt_for_binlog. This is so that future
  writes are not influenced by those and can write their own values.
  As a consequence, when we don't write to the binlog we do not reset.
  This is to abide by the rule that in a complex statement (using triggers etc),
  the first top- or substatement to generate auto_increment ids
  wins their writing to the binlog (that writing may be done by the statement
  itself or by the caller); so for example for
  INSERT INTO t SELECT myfunc() where myfunc() inserts into auto_increment
  and INSERT INTO t does not, myfunc() will fill
  auto_inc_intervals_in_cur_stmt_for_binlog, which will not be reset when
  myfunc() ends, then INSERT INTO t will write to the binlog and thus
  write the preserved auto_inc_intervals_in_cur_stmt_for_binlog.
sql/log_event.cc:
  mysql_init_query() does too much now to be called in Rows_log_event::exec_event
  (it call mysql_reset_thd_for_next_command() which may switch
  the binlog format now).
  It's ok to call it in Table_map_log_event::exec_event() but its call must
  be before setting the binlog format to "row".
sql/sql_base.cc:
  Resetting the binlog format in lock_tables() was a bad idea of mine;
  it causes problems in execution of row-based binlog events, where
  the thread sets the binlog format by itself and does not want a next
  lock_tables() to reset the binlog format.
  It is also misleading, for a function named lock_tables(), to reset
  the binlog format.
  As a consequence of this change, in mixed binlogging mode, a routine
  is logged either entirely statement-based or entirely row-based, we
  don't switch in the middle (this was already true for prelocked routines,
  now it's also true for stored procedures).
sql/sql_class.cc:
  resetting of auto_increment variables used for binlogging is now done
  when writing to the binary log, no need to do the resetting at the end
  of the statement. It is also more correct this way; consider
  SELECT myfunc1(),myfunc2();
  where both functions insert into the same auto_increment column.
  Binlogging is done in 2 events: "SELECT myfunc1()" and "SELECT myfunc2()".
  So each of those needs to have, in binlog, the INSERT_ID which
  it inserted. But as the 2 function calls are executed under prelocked mode,
  the old code didn't reset auto_inc_intervals_in_cur_stmt_for_binlog
  after the first SELECT was binlogged, and so the INSERT_ID of the first
  SELECT was binlogged for the first SELECT and (wrong) also for the 2nd
  SELECT event.
  stmt_depends_on_first_... has the same logic.
sql/sql_class.h:
  clearer comment
sql/sql_delete.cc:
  unneeded #ifdef. As we temporarily change the binlog format to "statement"
  before calling mysql_delete(), we must restore it afterwards.
sql/sql_insert.cc:
  after-merge fixes.
  No need to reset auto_inc_intervals_in_cur_stmt_for_binlog for every
  row in the delayed insert system thread, because we already reset it
  when writing to the binlog.
sql/sql_parse.cc:
  unneeded #ifdef
parent 3a3a5622
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -170,7 +170,7 @@ connection master;

drop function bug15728;
drop function bug15728_insert;
drop table t1, t2;
drop table t1;
drop procedure foo;

# test of BUG#20188 REPLACE or ON DUPLICATE KEY UPDATE in
+1 −1
Original line number Diff line number Diff line
@@ -291,7 +291,7 @@ our $opt_user_test;
our $opt_valgrind= 0;
our $opt_valgrind_mysqld= 0;
our $opt_valgrind_mysqltest= 0;
our $default_valgrind_options= "-v --show-reachable=yes";
our $default_valgrind_options= "--show-reachable=yes";
our $opt_valgrind_options;
our $opt_valgrind_path;

+95 −95
Original line number Diff line number Diff line
@@ -8,10 +8,10 @@ insert into t2 select * from t1;
commit;
show binlog events from 102;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	102	Query	1	#	use `test`; BEGIN
master-bin.000001	170	Query	1	#	use `test`; insert into t1 values(1)
master-bin.000001	257	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	351	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; BEGIN
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(1)
master-bin.000001	#	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
delete from t1;
delete from t2;
reset master;
@@ -23,10 +23,10 @@ Warnings:
Warning	1196	Some non-transactional changed tables couldn't be rolled back
show binlog events from 102;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	102	Query	1	#	use `test`; BEGIN
master-bin.000001	170	Query	1	#	use `test`; insert into t1 values(2)
master-bin.000001	257	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	351	Query	1	#	use `test`; ROLLBACK
master-bin.000001	#	Query	1	#	use `test`; BEGIN
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(2)
master-bin.000001	#	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	#	Query	1	#	use `test`; ROLLBACK
delete from t1;
delete from t2;
reset master;
@@ -41,13 +41,13 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
commit;
show binlog events from 102;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	102	Query	1	#	use `test`; BEGIN
master-bin.000001	170	Query	1	#	use `test`; insert into t1 values(3)
master-bin.000001	257	Query	1	#	use `test`; savepoint my_savepoint
master-bin.000001	342	Query	1	#	use `test`; insert into t1 values(4)
master-bin.000001	429	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	523	Query	1	#	use `test`; rollback to savepoint my_savepoint
master-bin.000001	620	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; BEGIN
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(3)
master-bin.000001	#	Query	1	#	use `test`; savepoint my_savepoint
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(4)
master-bin.000001	#	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	#	Query	1	#	use `test`; rollback to savepoint my_savepoint
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
delete from t1;
delete from t2;
reset master;
@@ -67,14 +67,14 @@ a
7
show binlog events from 102;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	102	Query	1	#	use `test`; BEGIN
master-bin.000001	170	Query	1	#	use `test`; insert into t1 values(5)
master-bin.000001	257	Query	1	#	use `test`; savepoint my_savepoint
master-bin.000001	342	Query	1	#	use `test`; insert into t1 values(6)
master-bin.000001	429	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	523	Query	1	#	use `test`; rollback to savepoint my_savepoint
master-bin.000001	620	Query	1	#	use `test`; insert into t1 values(7)
master-bin.000001	707	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; BEGIN
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(5)
master-bin.000001	#	Query	1	#	use `test`; savepoint my_savepoint
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(6)
master-bin.000001	#	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	#	Query	1	#	use `test`; rollback to savepoint my_savepoint
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(7)
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
delete from t1;
delete from t2;
reset master;
@@ -89,10 +89,10 @@ get_lock("a",10)
1
show binlog events from 102;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	102	Query	1	#	use `test`; BEGIN
master-bin.000001	170	Query	1	#	use `test`; insert into t1 values(8)
master-bin.000001	257	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	351	Query	1	#	use `test`; ROLLBACK
master-bin.000001	#	Query	1	#	use `test`; BEGIN
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(8)
master-bin.000001	#	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	#	Query	1	#	use `test`; ROLLBACK
delete from t1;
delete from t2;
reset master;
@@ -100,9 +100,9 @@ insert into t1 values(9);
insert into t2 select * from t1;
show binlog events from 102;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	102	Query	1	#	use `test`; insert into t1 values(9)
master-bin.000001	189	Xid	1	#	COMMIT /* xid= */
master-bin.000001	216	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(9)
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; insert into t2 select * from t1
delete from t1;
delete from t2;
reset master;
@@ -111,19 +111,19 @@ begin;
insert into t2 select * from t1;
show binlog events from 102;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	102	Query	1	#	use `test`; insert into t1 values(10)
master-bin.000001	190	Xid	1	#	COMMIT /* xid= */
master-bin.000001	217	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(10)
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; insert into t2 select * from t1
insert into t1 values(11);
commit;
show binlog events from 102;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	102	Query	1	#	use `test`; insert into t1 values(10)
master-bin.000001	190	Xid	1	#	COMMIT /* xid= */
master-bin.000001	217	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	311	Query	1	#	use `test`; BEGIN
master-bin.000001	379	Query	1	#	use `test`; insert into t1 values(11)
master-bin.000001	467	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(10)
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	#	Query	1	#	use `test`; BEGIN
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(11)
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
alter table t2 engine=INNODB;
delete from t1;
delete from t2;
@@ -134,10 +134,10 @@ insert into t2 select * from t1;
commit;
show binlog events from 102;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	102	Query	1	#	use `test`; BEGIN
master-bin.000001	170	Query	1	#	use `test`; insert into t1 values(12)
master-bin.000001	258	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	352	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; BEGIN
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(12)
master-bin.000001	#	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
delete from t1;
delete from t2;
reset master;
@@ -159,9 +159,9 @@ rollback to savepoint my_savepoint;
commit;
show binlog events from 102;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	102	Query	1	#	use `test`; BEGIN
master-bin.000001	170	Query	1	#	use `test`; insert into t1 values(14)
master-bin.000001	258	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; BEGIN
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(14)
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
delete from t1;
delete from t2;
reset master;
@@ -179,10 +179,10 @@ a
18
show binlog events from 102;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	102	Query	1	#	use `test`; BEGIN
master-bin.000001	170	Query	1	#	use `test`; insert into t1 values(16)
master-bin.000001	258	Query	1	#	use `test`; insert into t1 values(18)
master-bin.000001	346	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; BEGIN
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(16)
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(18)
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
delete from t1;
delete from t2;
alter table t2 engine=MyISAM;
@@ -229,29 +229,29 @@ get_lock("lock1",60)
1
show binlog events from 102;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	102	Query	1	#	use `test`; BEGIN
master-bin.000001	170	Query	1	#	use `test`; insert into t1 values(16)
master-bin.000001	258	Query	1	#	use `test`; insert into t1 values(18)
master-bin.000001	346	Xid	1	#	COMMIT /* xid= */
master-bin.000001	373	Query	1	#	use `test`; delete from t1
master-bin.000001	450	Xid	1	#	COMMIT /* xid= */
master-bin.000001	477	Query	1	#	use `test`; delete from t2
master-bin.000001	554	Xid	1	#	COMMIT /* xid= */
master-bin.000001	581	Query	1	#	use `test`; alter table t2 engine=MyISAM
master-bin.000001	672	Query	1	#	use `test`; insert into t1 values (1)
master-bin.000001	760	Xid	1	#	COMMIT /* xid= */
master-bin.000001	787	Query	1	#	use `test`; insert into t2 values (20)
master-bin.000001	876	Query	1	#	use `test`; drop table t1,t2
master-bin.000001	955	Query	1	#	use `test`; create temporary table ti (a int) engine=innodb
master-bin.000001	1065	Query	1	#	use `test`; insert into ti values(1)
master-bin.000001	1152	Xid	1	#	COMMIT /* xid= */
master-bin.000001	1179	Query	1	#	use `test`; create temporary table t1 (a int) engine=myisam
master-bin.000001	1289	Query	1	#	use `test`; insert t1 values (1)
master-bin.000001	1372	Query	1	#	use `test`; create table t0 (n int)
master-bin.000001	1458	Query	1	#	use `test`; insert t0 select * from t1
master-bin.000001	1547	Query	1	#	use `test`; insert into t0 select GET_LOCK("lock1",null)
master-bin.000001	1654	Query	1	#	use `test`; create table t2 (n int) engine=innodb
master-bin.000001	1754	Query	1	#	use `test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `test`.`t1`,`test`.`ti`
master-bin.000001	#	Query	1	#	use `test`; BEGIN
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(16)
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values(18)
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; delete from t1
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; delete from t2
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; alter table t2 engine=MyISAM
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values (1)
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; insert into t2 values (20)
master-bin.000001	#	Query	1	#	use `test`; drop table t1,t2
master-bin.000001	#	Query	1	#	use `test`; create temporary table ti (a int) engine=innodb
master-bin.000001	#	Query	1	#	use `test`; insert into ti values(1)
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; create temporary table t1 (a int) engine=myisam
master-bin.000001	#	Query	1	#	use `test`; insert t1 values (1)
master-bin.000001	#	Query	1	#	use `test`; create table t0 (n int)
master-bin.000001	#	Query	1	#	use `test`; insert t0 select * from t1
master-bin.000001	#	Query	1	#	use `test`; insert into t0 select GET_LOCK("lock1",null)
master-bin.000001	#	Query	1	#	use `test`; create table t2 (n int) engine=innodb
master-bin.000001	#	Query	1	#	use `test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `test`.`t1`,`test`.`ti`
do release_lock("lock1");
drop table t0,t2;
set autocommit=0;
@@ -333,28 +333,28 @@ a b
DROP TABLE t1,t2;
show binlog events from 102;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	102	Query	1	198	use `test`; INSERT INTO t1 values (1,1),(1,2)
master-bin.000001	198	Query	1	284	use `test`; DROP TABLE if exists t2
master-bin.000001	284	Query	1	374	use `test`; INSERT INTO t1 values (3,3)
master-bin.000001	374	Query	1	460	use `test`; DROP TABLE IF EXISTS t2
master-bin.000001	460	Query	1	584	use `test`; CREATE TABLE t2 (a int, b int, primary key (a)) engine=innodb
master-bin.000001	584	Query	1	674	use `test`; INSERT INTO t1 VALUES (4,4)
master-bin.000001	674	Query	1	80	use `test`; TRUNCATE table t2
master-bin.000001	754	Xid	1	781	COMMIT /* xid= */
master-bin.000001	781	Query	1	871	use `test`; INSERT INTO t1 VALUES (5,5)
master-bin.000001	871	Query	1	947	use `test`; DROP TABLE t2
master-bin.000001	947	Query	1	1037	use `test`; INSERT INTO t1 values (6,6)
master-bin.000001	1037	Query	1	1171	use `test`; CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a)) engine=innodb
master-bin.000001	1171	Query	1	1261	use `test`; INSERT INTO t1 values (7,7)
master-bin.000001	1261	Query	1	1351	use `test`; INSERT INTO t1 values (8,8)
master-bin.000001	1351	Query	1	1441	use `test`; INSERT INTO t1 values (9,9)
master-bin.000001	1441	Query	1	80	use `test`; TRUNCATE table t2
master-bin.000001	1521	Xid	1	1548	COMMIT /* xid= */
master-bin.000001	1548	Query	1	1640	use `test`; INSERT INTO t1 values (10,10)
master-bin.000001	1640	Query	1	1708	use `test`; BEGIN
master-bin.000001	1708	Query	1	94	use `test`; INSERT INTO t2 values (100,100)
master-bin.000001	1802	Xid	1	1829	COMMIT /* xid= */
master-bin.000001	1829	Query	1	1908	use `test`; DROP TABLE t1,t2
master-bin.000001	#	Query	1	#	use `test`; INSERT INTO t1 values (1,1),(1,2)
master-bin.000001	#	Query	1	#	use `test`; DROP TABLE if exists t2
master-bin.000001	#	Query	1	#	use `test`; INSERT INTO t1 values (3,3)
master-bin.000001	#	Query	1	#	use `test`; DROP TABLE IF EXISTS t2
master-bin.000001	#	Query	1	#	use `test`; CREATE TABLE t2 (a int, b int, primary key (a)) engine=innodb
master-bin.000001	#	Query	1	#	use `test`; INSERT INTO t1 VALUES (4,4)
master-bin.000001	#	Query	1	#	use `test`; TRUNCATE table t2
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; INSERT INTO t1 VALUES (5,5)
master-bin.000001	#	Query	1	#	use `test`; DROP TABLE t2
master-bin.000001	#	Query	1	#	use `test`; INSERT INTO t1 values (6,6)
master-bin.000001	#	Query	1	#	use `test`; CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a)) engine=innodb
master-bin.000001	#	Query	1	#	use `test`; INSERT INTO t1 values (7,7)
master-bin.000001	#	Query	1	#	use `test`; INSERT INTO t1 values (8,8)
master-bin.000001	#	Query	1	#	use `test`; INSERT INTO t1 values (9,9)
master-bin.000001	#	Query	1	#	use `test`; TRUNCATE table t2
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; INSERT INTO t1 values (10,10)
master-bin.000001	#	Query	1	#	use `test`; BEGIN
master-bin.000001	#	Query	1	#	use `test`; INSERT INTO t2 values (100,100)
master-bin.000001	#	Xid	1	#	COMMIT /* xid= */
master-bin.000001	#	Query	1	#	use `test`; DROP TABLE t1,t2
reset master;
create table t1 (a int) engine=innodb;
create table t2 (a int) engine=myisam;
+36 −36
Original line number Diff line number Diff line
@@ -153,43 +153,8 @@ id last_id
3	5
drop function bug15728;
drop function bug15728_insert;
drop procedure foo;
drop table t1;
truncate table t2;
create table t1 (id tinyint primary key);
create function insid() returns int
begin
insert into t2 (last_id) values (0);
return 0;
end|
set sql_log_bin=0;
insert into t2 (id) values(1),(2),(3);
delete from t2;
set sql_log_bin=1;
select insid();
insid()
0
set sql_log_bin=0;
insert into t2 (id) values(5),(6),(7);
delete from t2 where id>=5;
set sql_log_bin=1;
insert into t1 select insid();
select * from t1;
id
0
select * from t2;
id	last_id
4	0
8	0
select * from t1;
id
0
select * from t2;
id	last_id
4	0
8	0
drop table t1, t2;
drop function insid;
drop procedure foo;
create table t1 (n int primary key auto_increment not null,
b int, unique(b));
set sql_log_bin=0;
@@ -255,3 +220,38 @@ n b
2	100
3	350
drop table t1;
truncate table t2;
create table t1 (id tinyint primary key);
create function insid() returns int
begin
insert into t2 (last_id) values (0);
return 0;
end|
set sql_log_bin=0;
insert into t2 (id) values(1),(2),(3);
delete from t2;
set sql_log_bin=1;
select insid();
insid()
0
set sql_log_bin=0;
insert into t2 (id) values(5),(6),(7);
delete from t2 where id>=5;
set sql_log_bin=1;
insert into t1 select insid();
select * from t1;
id
0
select * from t2;
id	last_id
4	0
8	0
select * from t1;
id
0
select * from t2;
id	last_id
4	0
8	0
drop table t1, t2;
drop function insid;
+3 −3
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ day id category name
2003-03-22	2416	a	bbbbb
show master status;
File	Position	Binlog_Do_DB	Binlog_Ignore_DB
slave-bin.000001	1276		
slave-bin.000001	1248		
drop table t1;
drop table t2;
drop table t3;
@@ -39,7 +39,7 @@ set global sql_slave_skip_counter=1;
start slave;
show slave status;
Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	1793	#	#	master-bin.000001	Yes	Yes				#			0		0	1793	#	None		0	No						#
#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	1765	#	#	master-bin.000001	Yes	Yes				#			0		0	1765	#	None		0	No						#
set sql_log_bin=0;
delete from t1;
set sql_log_bin=1;
@@ -49,7 +49,7 @@ change master to master_user='test';
change master to master_user='root';
show slave status;
Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	1828	#	#	master-bin.000001	No	No				#			0		0	1828	#	None		0	No						#
#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	1800	#	#	master-bin.000001	No	No				#			0		0	1800	#	None		0	No						#
set global sql_slave_skip_counter=1;
start slave;
set sql_log_bin=0;
Loading