List:Commits« Previous MessageNext Message »
From:He Zhenxing Date:March 14 2008 2:03am
Subject:RE: bk commit into 5.0 tree (hezx:1.2583) BUG#33029
View as plain text  
Hi Chuck

Nice review, thanks!

On 2008-03-13 Thu 11:44 -0400,Chuck Bell wrote:
> Hi Jason,
> 
> I found a few things that need to be fixed (most are trivial), however there
> is a bigger problem. The test does not pass on my Windows machine using the
> latest mysql-5.0-rpl clone. Please check your patch and resubmit it so I can
> ensure it's ok before I approve it.
> 
> Chuck
> 
> rpl_auto_increment_bug33029    [ fail ]

oops, I changed the variable name in show_binlog_event.inc, forget to
update the variable name in the test file ;), thank you very much!

> 
> ---
> d:/source/c++/mysql-5.0_BUG_33029/mysql-test/r/rpl_auto_increment_bug33029.r
> esult   2008-03-13 18:14:25.725880300 +0300
> +++
> d:\source\c++\mysql-5.0_BUG_33029\mysql-test\r\rpl_auto_increment_bug33029.r
> eject   2008-03-13 18:19:11.895880300 +0300
> @@ -44,6 +44,40 @@
>  CALL p1();
>  show binlog events from <binlog_start>;
>  Log_name       Pos     Event_type      Server_id       End_log_pos     Info
> +master-bin.000001      #       Query   #       #       use `test`; DROP
> TABLE I
> F EXISTS t1, t2
> +master-bin.000001      #       Query   #       #       use `test`; DROP
> TRIGGER
>  IF EXISTS tr1
> +master-bin.000001      #       Query   #       #       use `test`; CREATE
> TABLE
>  t1 (id INT AUTO_INCREMENT PRIMARY KEY)
> +master-bin.000001      #       Query   #       #       use `test`; CREATE
> TABLE
>  t2 (id INT AUTO_INCREMENT PRIMARY KEY)
> +master-bin.000001      #       Query   #       #       use `test`; CREATE
> DEFIN
> ER=`root`@`localhost` PROCEDURE p1()
> +BEGIN
> +DECLARE ins_count INT DEFAULT 10;
> +WHILE ins_count > 0 DO
> +INSERT INTO t1 VALUES (NULL);
> +SET ins_count = ins_count - 1;
> +END WHILE;
> +DELETE FROM t1 WHERE id = 1;
> +DELETE FROM t1 WHERE id = 2;
> +DELETE FROM t2 WHERE id = 1;
> +DELETE FROM t2 WHERE id = 2;
> +END
> +master-bin.000001      #       Query   #       #       use `test`; CREATE
> DEFIN
> ER=`root`@`localhost` PROCEDURE p2()
> +BEGIN
> +INSERT INTO t1 VALUES (NULL);
> +DELETE FROM t1 WHERE id = f1(3);
> +DELETE FROM t1 WHERE id = f1(4);
> +DELETE FROM t2 WHERE id = 3;
> +DELETE FROM t2 WHERE id = 4;
> +END
> +master-bin.000001      #       Query   #       #       use `test`; CREATE
> DEFIN
> ER=`root`@`localhost` TRIGGER tr1 BEFORE DELETE
> +ON t1 FOR EACH ROW
> +BEGIN
> +INSERT INTO t2  VALUES (NULL);
> +END
> +master-bin.000001      #       Query   #       #       use `test`; CREATE
> DEFIN
> ER=`root`@`localhost` FUNCTION f1 (i int) RETURNS int
> +BEGIN
> +INSERT INTO t2 VALUES (NULL);
> +RETURN i;
> +END
>  master-bin.000001      #       Intvar  #       #       INSERT_ID=1
>  master-bin.000001      #       Query   #       #       use `test`; INSERT
> INTO
> t1 VALUES (NULL)
>  master-bin.000001      #       Intvar  #       #       INSERT_ID=2
> @@ -98,6 +132,65 @@
>  CALL p2();
>  show binlog events from <binlog_start>;
>  Log_name       Pos     Event_type      Server_id       End_log_pos     Info
> +master-bin.000001      #       Query   #       #       use `test`; DROP
> TABLE I
> F EXISTS t1, t2
> +master-bin.000001      #       Query   #       #       use `test`; DROP
> TRIGGER
>  IF EXISTS tr1
> +master-bin.000001      #       Query   #       #       use `test`; CREATE
> TABLE
>  t1 (id INT AUTO_INCREMENT PRIMARY KEY)
> +master-bin.000001      #       Query   #       #       use `test`; CREATE
> TABLE
>  t2 (id INT AUTO_INCREMENT PRIMARY KEY)
> +master-bin.000001      #       Query   #       #       use `test`; CREATE
> DEFIN
> ER=`root`@`localhost` PROCEDURE p1()
> +BEGIN
> +DECLARE ins_count INT DEFAULT 10;
> +WHILE ins_count > 0 DO
> +INSERT INTO t1 VALUES (NULL);
> +SET ins_count = ins_count - 1;
> +END WHILE;
> +DELETE FROM t1 WHERE id = 1;
> +DELETE FROM t1 WHERE id = 2;
> +DELETE FROM t2 WHERE id = 1;
> +DELETE FROM t2 WHERE id = 2;
> +END
> +master-bin.000001      #       Query   #       #       use `test`; CREATE
> DEFIN
> ER=`root`@`localhost` PROCEDURE p2()
> +BEGIN
> +INSERT INTO t1 VALUES (NULL);
> +DELETE FROM t1 WHERE id = f1(3);
> +DELETE FROM t1 WHERE id = f1(4);
> +DELETE FROM t2 WHERE id = 3;
> +DELETE FROM t2 WHERE id = 4;
> +END
> +master-bin.000001      #       Query   #       #       use `test`; CREATE
> DEFIN
> ER=`root`@`localhost` TRIGGER tr1 BEFORE DELETE
> +ON t1 FOR EACH ROW
> +BEGIN
> +INSERT INTO t2  VALUES (NULL);
> +END
> +master-bin.000001      #       Query   #       #       use `test`; CREATE
> DEFIN
> ER=`root`@`localhost` FUNCTION f1 (i int) RETURNS int
> +BEGIN
> +INSERT INTO t2 VALUES (NULL);
> +RETURN i;
> +END
> +master-bin.000001      #       Intvar  #       #       INSERT_ID=1
> +master-bin.000001      #       Query   #       #       use `test`; INSERT
> INTO
> t1 VALUES (NULL)
> +master-bin.000001      #       Intvar  #       #       INSERT_ID=2
> +master-bin.000001      #       Query   #       #       use `test`; INSERT
> INTO
> t1 VALUES (NULL)
> +master-bin.000001      #       Intvar  #       #       INSERT_ID=3
> +master-bin.000001      #       Query   #       #       use `test`; INSERT
> INTO
> t1 VALUES (NULL)
> +master-bin.000001      #       Intvar  #       #       INSERT_ID=4
> +master-bin.000001      #       Query   #       #       use `test`; INSERT
> INTO
> t1 VALUES (NULL)
> +master-bin.000001      #       Intvar  #       #       INSERT_ID=5
> +master-bin.000001      #       Query   #       #       use `test`; INSERT
> INTO
> t1 VALUES (NULL)
> +master-bin.000001      #       Intvar  #       #       INSERT_ID=6
> +master-bin.000001      #       Query   #       #       use `test`; INSERT
> INTO
> t1 VALUES (NULL)
> +master-bin.000001      #       Intvar  #       #       INSERT_ID=7
> +master-bin.000001      #       Query   #       #       use `test`; INSERT
> INTO
> t1 VALUES (NULL)
> +master-bin.000001      #       Intvar  #       #       INSERT_ID=8
> +master-bin.000001      #       Query   #       #       use `test`; INSERT
> INTO
> t1 VALUES (NULL)
> +master-bin.000001      #       Intvar  #       #       INSERT_ID=9
> +master-bin.000001      #       Query   #       #       use `test`; INSERT
> INTO
> t1 VALUES (NULL)
> +master-bin.000001      #       Intvar  #       #       INSERT_ID=10
> +master-bin.000001      #       Query   #       #       use `test`; INSERT
> INTO
> t1 VALUES (NULL)
> +master-bin.000001      #       Query   #       #       use `test`; DELETE
> FROM
> t1 WHERE id = 1
> +master-bin.000001      #       Query   #       #       use `test`; DELETE
> FROM
> t1 WHERE id = 2
> +master-bin.000001      #       Query   #       #       use `test`; DELETE
> FROM
> t2 WHERE id = 1
> +master-bin.000001      #       Query   #       #       use `test`; DELETE
> FROM
> t2 WHERE id = 2
> +master-bin.000001      #       Query   #       #       use `test`; DROP
> TRIGGER
>  tr1
>  master-bin.000001      #       Intvar  #       #       INSERT_ID=11
>  master-bin.000001      #       Query   #       #       use `test`; INSERT
> INTO
> t1 VALUES (NULL)
>  master-bin.000001      #       Query   #       #       use `test`; DELETE
> FROM
> t1 WHERE id = f1(3)
> 
> mysqltest: Result content mismatch
> 
> > -----Original Message-----
> > From: hezx@stripped [mailto:hezx@stripped] 
> > Sent: Wednesday, March 12, 2008 4:47 AM
> > To: commits@stripped
> > Subject: bk commit into 5.0 tree (hezx:1.2583) BUG#33029
> > 
> > Below is the list of changes that have just been committed 
> > into a local 5.0 repository of hezx.  When hezx does a push 
> > these changes will be propagated to the main repository and, 
> > within 24 hours after the push, to the public repository.
> > For information on how to access the public repository see 
> > http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
> > 
> > ChangeSet@stripped, 2008-03-12 16:46:34+08:00, hezx@stripped +4 -0
> >   BUG#33029 5.0 to 5.1 replication fails on dup key when inserting
> >   using a trig in SP
> >   
> >   For all 5.0 and up to 5.1.12 exclusive, when a stored routine or
> >   trigger caused an INSERT into an AUTO_INCREMENT column, the
> >   generated AUTO_INCREMENT value should not be written into the
> >   binary log, which means if a statement does not generate
> >   AUTO_INCREMENT valule itself, there will be no Intvar event (SET
> 
> Spelling error. 'value'
> 
> >   INSERT_ID) associated with it even if one of the stored routine
> >   or trigger caused generation of such a value. And meanwhile, when
> >   executing a stored routine or trigger, it would ignore the
> >   INSERT_ID value even if there is a INSERT_ID value available set
> >   by a SET INSERT_ID statement.
> >   
> >   Starting from MySQL 5.1.12, the generated AUTO_INCREMENT value is
> >   written into the binary log, and the value will be used if
> >   availabe when executing the stored routine or trigger.
> 
> Spelling error. 'available'
> 
> >   
> >   Prior fix of this bug in MySQL 5.0 and prior MySQL 5.1.12
> >   (referenced as the buggy versions in the text below), when a
> >   statement that generates AUTO_INCREMENT value by the top
> >   statement was executed in the body of a SP, all statements in the
> >   SP after this statement would be treated as if they had generated
> >   AUTO_INCREMENT by the top statement.  When a statement that did
> >   not generate AUTO_INCREMENT value by the top statement but by a
> >   function/trigger called by it, an erroenous Intvar event would be
> >   associated with the statement, this erroenous INSERT_ID value
> 
> Spelling error in above 2 lines. 'erroneous'

Thank you for finding the spelling problems, will be fixed.

> 
> >   wouldn't cause problem when replicating between masters and
> >   slaves of 5.0.x or prior 5.1.12, because the erroneous INSERT_ID
> >   value was not used when executing functions/triggers. But when
> >   replicating from buggy versions to 5.1.12 or newer, which will
> >   use the INSERT_ID value in functions/triggers, the erronous value
> >   will be used, which would cause duplicate entry error and cause
> >   the slave to stop.
> >   
> >   The patch for 5.0 fixed it not to generate the erroneous Intvar
> >   event, another patch for 5.1 fixed it to ignore the SET INSERT_ID
> >   value when executing functions/triggers if it is replicating from
> >   a master of buggy versions.
> > 
> 
> A minor request for future patches (don't worry about this one). Please try
> to make your comments (more) concise. :)
> 

right, at least it can reduce spelling errors :) thank you!

> >   mysql-test/include/show_binlog_events.inc@stripped, 2008-03-12 
> > 16:46:32+08:00, hezx@stripped +9 -3
> >     add $binlog_start parameter to set the start position 
> > when show binlog events, if not set a default value will be used.
> >     
> >     mask out column 2 and 4, table_id, file_id values
> > 
> 
> Is column 2 and 4 tableid and fileid respectfully?

they are Pos and Server_id, I should make it more clear

> 
> >   mysql-test/r/rpl_auto_increment_bug33029.result@stripped, 
> > 2008-03-12 16:46:32+08:00, hezx@stripped +167 -0
> >     Add test for bug33029, test if the master generate the 
> > erroneous event or not
> > 
> >   mysql-test/r/rpl_auto_increment_bug33029.result@stripped, 
> > 2008-03-12 16:46:32+08:00, hezx@stripped +0 -0
> > 
> >   mysql-test/t/rpl_auto_increment_bug33029.test@stripped, 
> > 2008-03-12 16:46:32+08:00, hezx@stripped +100 -0
> >     Add test for bug33029, test if the master generate the 
> > erroneous event or not
> > 
> >   mysql-test/t/rpl_auto_increment_bug33029.test@stripped, 
> > 2008-03-12 16:46:32+08:00, hezx@stripped +0 -0
> > 
> >   sql/sql_class.cc@stripped, 2008-03-12 16:46:32+08:00, 
> > hezx@stripped +1 -0
> >     Reset insert_id_used after each query in SP
> > 
> > diff -Nrup a/mysql-test/include/show_binlog_events.inc 
> > b/mysql-test/include/show_binlog_events.inc
> > --- a/mysql-test/include/show_binlog_events.inc	
> > 2007-06-08 17:30:02 +08:00
> > +++ b/mysql-test/include/show_binlog_events.inc	
> > 2008-03-12 16:46:32 +08:00
> > @@ -1,4 +1,10 @@
> > ---let $binlog_start=98
> > ---replace_column 5 #
> > ---replace_regex /\/\* xid=.* \*\//\/* XID *\//
> > +# $binlog_start can be set by caller or take a default value
> > +
> > +if (!$binlog_start)
> > +{
> > +  let $binlog_start=98;
> > +}
> > +--replace_result $binlog_start <binlog_start> 
> > --replace_column 2 # 4 # 
> > +5 # --replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: 
> > +[0-9]+/table_id: #/ /file_id=[0-9]+/file_id=#/
> >  --eval show binlog events from $binlog_start diff -Nrup 
> > a/mysql-test/r/rpl_auto_increment_bug33029.result 
> > b/mysql-test/r/rpl_auto_increment_bug33029.result
> > --- /dev/null	Wed Dec 31 16:00:00 196900
> > +++ b/mysql-test/r/rpl_auto_increment_bug33029.result	
> > 2008-03-12 16:46:32 +08:00
> > @@ -0,0 +1,167 @@
> > +stop slave;
> > +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; reset master; reset 
> > +slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; 
> > +DROP TABLE IF EXISTS t1, t2; DROP PROCEDURE IF EXISTS p1; DROP 
> > +PROCEDURE IF EXISTS p2; DROP TRIGGER IF EXISTS tr1; DROP FUNCTION IF 
> > +EXISTS f1; CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY 
> > KEY); CREATE 
> > +TABLE t2 (id INT AUTO_INCREMENT PRIMARY KEY); CREATE PROCEDURE p1() 
> > +BEGIN DECLARE ins_count INT DEFAULT 10; WHILE ins_count > 0 
> > DO INSERT 
> > +INTO t1 VALUES (NULL); SET ins_count = ins_count - 1; END 
> > WHILE; DELETE 
> > +FROM t1 WHERE id = 1; DELETE FROM t1 WHERE id = 2; DELETE 
> > FROM t2 WHERE 
> > +id = 1; DELETE FROM t2 WHERE id = 2; END// CREATE PROCEDURE 
> > p2() BEGIN 
> > +INSERT INTO t1 VALUES (NULL); DELETE FROM t1 WHERE id = 
> > f1(3); DELETE 
> > +FROM t1 WHERE id = f1(4); DELETE FROM t2 WHERE id = 3; 
> > DELETE FROM t2 
> > +WHERE id = 4; END// CREATE TRIGGER tr1 BEFORE DELETE ON t1 
> > FOR EACH ROW 
> > +BEGIN INSERT INTO t2  VALUES (NULL); END// CREATE FUNCTION 
> > f1 (i int) 
> > +RETURNS int BEGIN INSERT INTO t2 VALUES (NULL); RETURN i; END// CALL 
> > +p1(); show binlog events from <binlog_start>;
> > +Log_name	Pos	Event_type	Server_id	
> > End_log_pos	Info
> > +master-bin.000001	#	Intvar	#	#	INSERT_ID=1
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; INSERT INTO t1 VALUES (NULL)
> > +master-bin.000001	#	Intvar	#	#	INSERT_ID=2
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; INSERT INTO t1 VALUES (NULL)
> > +master-bin.000001	#	Intvar	#	#	INSERT_ID=3
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; INSERT INTO t1 VALUES (NULL)
> > +master-bin.000001	#	Intvar	#	#	INSERT_ID=4
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; INSERT INTO t1 VALUES (NULL)
> > +master-bin.000001	#	Intvar	#	#	INSERT_ID=5
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; INSERT INTO t1 VALUES (NULL)
> > +master-bin.000001	#	Intvar	#	#	INSERT_ID=6
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; INSERT INTO t1 VALUES (NULL)
> > +master-bin.000001	#	Intvar	#	#	INSERT_ID=7
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; INSERT INTO t1 VALUES (NULL)
> > +master-bin.000001	#	Intvar	#	#	INSERT_ID=8
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; INSERT INTO t1 VALUES (NULL)
> > +master-bin.000001	#	Intvar	#	#	INSERT_ID=9
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; INSERT INTO t1 VALUES (NULL)
> > +master-bin.000001	#	Intvar	#	#	INSERT_ID=10
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; INSERT INTO t1 VALUES (NULL)
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; DELETE FROM t1 WHERE id = 1
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; DELETE FROM t1 WHERE id = 2
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; DELETE FROM t2 WHERE id = 1
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; DELETE FROM t2 WHERE id = 2
> > +# Result on master
> > +SELECT * FROM t1;
> > +id
> > +3
> > +4
> > +5
> > +6
> > +7
> > +8
> > +9
> > +10
> > +SELECT * FROM t2;
> > +id
> > +# Result on slave
> > +SELECT * FROM t1;
> > +id
> > +3
> > +4
> > +5
> > +6
> > +7
> > +8
> > +9
> > +10
> > +SELECT * FROM t2;
> > +id
> > +DROP TRIGGER tr1;
> > +CALL p2();
> > +show binlog events from <binlog_start>;
> > +Log_name	Pos	Event_type	Server_id	
> > End_log_pos	Info
> > +master-bin.000001	#	Intvar	#	#	INSERT_ID=11
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; INSERT INTO t1 VALUES (NULL)
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; DELETE FROM t1 WHERE id = f1(3)
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; DELETE FROM t1 WHERE id = f1(4)
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; DELETE FROM t2 WHERE id = 3
> > +master-bin.000001	#	Query	#	#	use 
> > `test`; DELETE FROM t2 WHERE id = 4
> > +# Result on master
> > +SELECT * FROM t1;
> > +id
> > +5
> > +6
> > +7
> > +8
> > +9
> > +10
> > +11
> > +SELECT * FROM t2;
> > +id
> > +5
> > +6
> > +7
> > +8
> > +9
> > +10
> > +11
> > +12
> > +13
> > +14
> > +15
> > +16
> > +17
> > +18
> > +19
> > +# Result on slave
> > +SELECT * FROM t1;
> > +id
> > +5
> > +6
> > +7
> > +8
> > +9
> > +10
> > +11
> > +SELECT * FROM t2;
> > +id
> > +5
> > +6
> > +7
> > +8
> > +9
> > +10
> > +11
> > +12
> > +13
> > +14
> > +15
> > +16
> > +17
> > +18
> > +19
> > +DROP TABLE IF EXISTS t1, t2;
> > +DROP PROCEDURE IF EXISTS p1;
> > +DROP PROCEDURE IF EXISTS p2;
> > +DROP FUNCTION IF EXISTS f1;
> > +DROP TRIGGER IF EXISTS tr1;
> > +Warnings:
> > +Note	1360	Trigger does not exist
> > diff -Nrup a/mysql-test/t/rpl_auto_increment_bug33029.test 
> > b/mysql-test/t/rpl_auto_increment_bug33029.test
> > --- /dev/null	Wed Dec 31 16:00:00 196900
> > +++ b/mysql-test/t/rpl_auto_increment_bug33029.test	
> > 2008-03-12 16:46:32 +08:00
> > @@ -0,0 +1,100 @@
> > +# BUG#33029 5.0 to 5.1 replication fails on dup key when inserting # 
> > +using a trig in SP
> > +
> > +source include/master-slave.inc;
> > +
> > +--disable_warnings
> > +DROP TABLE IF EXISTS t1, t2;
> > +DROP PROCEDURE IF EXISTS p1;
> > +DROP PROCEDURE IF EXISTS p2;
> > +DROP TRIGGER IF EXISTS tr1;
> > +DROP FUNCTION IF EXISTS f1;
> > +--enable_warnings
> > +
> > +CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY); CREATE TABLE t2 
> > +(id INT AUTO_INCREMENT PRIMARY KEY);
> > +
> > +delimiter //;
> > +
> > +CREATE PROCEDURE p1()
> > +BEGIN
> > +   DECLARE ins_count INT DEFAULT 10;
> > +
> > +   WHILE ins_count > 0 DO
> > +       INSERT INTO t1 VALUES (NULL);
> > +       SET ins_count = ins_count - 1;
> > +   END WHILE;
> > +
> > +   DELETE FROM t1 WHERE id = 1;
> > +   DELETE FROM t1 WHERE id = 2;
> > +   DELETE FROM t2 WHERE id = 1;
> > +   DELETE FROM t2 WHERE id = 2;
> > +END//
> > +
> > +CREATE PROCEDURE p2()
> > +BEGIN
> > +   INSERT INTO t1 VALUES (NULL);
> > +   DELETE FROM t1 WHERE id = f1(3);
> > +   DELETE FROM t1 WHERE id = f1(4);
> > +   DELETE FROM t2 WHERE id = 3;
> > +   DELETE FROM t2 WHERE id = 4;
> > +END//
> > +
> > +CREATE TRIGGER tr1 BEFORE DELETE
> > +    ON t1 FOR EACH ROW 
> > +    BEGIN
> > +        INSERT INTO t2  VALUES (NULL);
> > +    END//
> > +
> > +CREATE FUNCTION f1 (i int) RETURNS int
> > +    BEGIN
> > +	INSERT INTO t2 VALUES (NULL);
> > +	RETURN i;
> > +    END//
> > +
> 
> Can you format these better to make them easier to read? Something like:
> 
> CREATE FUNCTION..
> BEGIN
>   INSERT...
> END...
> 

OK, this is actually a problem with mix tabs and spaces, will replace
all tabs with spaces.

> 
> > +delimiter ;//
> > +
> > +# the $_binlog_start will be used by the 
> > show_binlog_events.inc, so # 
> > +that we can skip binlog events we don't care let $_binlog_start= 
> > +query_get_value(SHOW MASTER STATUS, Position, 1); CALL p1(); source 
> > +include/show_binlog_events.inc;
> > +
> > +echo # Result on master;
> > +SELECT * FROM t1;
> > +SELECT * FROM t2;
> > +
> > +sync_slave_with_master;
> > +
> > +echo # Result on slave;
> > +SELECT * FROM t1;
> > +SELECT * FROM t2;
> > +
> > +connection master;
> > +
> > +DROP TRIGGER tr1;
> > +
> > +# the $_binlog_start will be used by the 
> > show_binlog_events.inc, so # 
> > +that we can skip binlog events we don't care let $_binlog_start= 
> > +query_get_value(SHOW MASTER STATUS, Position, 1); CALL p2(); source 
> > +include/show_binlog_events.inc;
> > +
> > +echo # Result on master;
> > +SELECT * FROM t1;
> > +SELECT * FROM t2;
> > +
> > +sync_slave_with_master;
> > +
> > +echo # Result on slave;
> > +SELECT * FROM t1;
> > +SELECT * FROM t2;
> > +
> > +# clean up
> > +connection master;
> > +DROP TABLE IF EXISTS t1, t2;
> > +DROP PROCEDURE IF EXISTS p1;
> > +DROP PROCEDURE IF EXISTS p2;
> > +DROP FUNCTION IF EXISTS f1;
> > +DROP TRIGGER IF EXISTS tr1;
> > +sync_slave_with_master;
> > diff -Nrup a/sql/sql_class.cc b/sql/sql_class.cc
> > --- a/sql/sql_class.cc	2007-12-15 19:04:58 +08:00
> > +++ b/sql/sql_class.cc	2008-03-12 16:46:32 +08:00
> > @@ -622,6 +622,7 @@ void THD::cleanup_after_query()
> >    {
> >      clear_next_insert_id= 0;
> >      next_insert_id= 0;
> > +    insert_id_used= 0;
> 
> Please add a brief comment to this line so we know why it was added.

good

> 
> >    }
> >    /*
> >      Reset rand_used so that detection of calls to rand() 
> > will save random 
> > 
> > --
> > MySQL Code Commits Mailing List
> > For list archives: http://lists.mysql.com/commits
> > To unsubscribe:    
> > http://lists.mysql.com/commits?unsub=1
> > 

Thread
bk commit into 5.0 tree (hezx:1.2583) BUG#33029hezx12 Mar
  • RE: bk commit into 5.0 tree (hezx:1.2583) BUG#33029Chuck Bell13 Mar
    • RE: bk commit into 5.0 tree (hezx:1.2583) BUG#33029He Zhenxing14 Mar