Hi Serge
On 2008-04-19 Sat 22:41 +0800,He Zhenxing wrote:
> Hi Serge
>
> Thank you for your work!
>
> First, I don't think add SET FOREIGN_KEY_CHECKS on slave can help the
> issue because the test case uses RBR, and even if using SBR, the master
> will correctly recording the value of FOREIGN_KEY_CHECKS for the
> statement in the events. So SET FOREIGN_KEY_CHECKS on slave is not
> necessary. Add ORDER BY might be helpful.
>
> Second, I checked several recent pushbuild results of mysql-6.0, and did
> not find any failure of this test case, so I think maybe this problem
> has already been fixed. I would suggest you to do a more complete check
> to see if this test case still fails in the recent pushbuild, if you can
> find any, check the logs and try to figure out the problem with that, if
> not, I think this is more likely a server problem, and has already been
> fixed, so you can just add a comment and close this bug.
It turns out that the test case has been disabled, so you should ignore
my second comment. Sorry!
But I still think that besides the problem of result order, other
problems of this test case does not seem to be a test case problem, it's
more likely a server bug.
>
> On 2008-04-04 Fri 01:05 +0400,Serge Kozlov wrote:
> > Below is the list of changes that have just been committed into a local
> > 6.0 repository of skozlov. When skozlov 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-04-04 01:05:25+04:00, skozlov@stripped +3 -0
> > Bug#32673.
> > 1. Added ORDER BY for all SELECT.
> > 2. Set FOREIGN_KEY_CHECKS variable on slave to avoid issues with FK updates.
> >
> > mysql-test/extra/rpl_tests/rpl_row_sp002.test@stripped, 2008-04-04 01:05:19+04:00,
> skozlov@stripped +19 -16
> > updated test case
> >
> > mysql-test/suite/rpl/r/rpl_row_sp002_innodb.result@stripped, 2008-04-04
> 01:05:19+04:00, skozlov@stripped +17 -16
> > updated result file
> >
> > mysql-test/suite/rpl/t/disabled.def@stripped, 2008-04-04 01:05:19+04:00,
> skozlov@stripped +0 -1
> > updated disabled.def
> >
> > diff -Nrup a/mysql-test/extra/rpl_tests/rpl_row_sp002.test
> b/mysql-test/extra/rpl_tests/rpl_row_sp002.test
> > --- a/mysql-test/extra/rpl_tests/rpl_row_sp002.test 2007-03-29 22:31:01 +04:00
> > +++ b/mysql-test/extra/rpl_tests/rpl_row_sp002.test 2008-04-04 01:05:19 +04:00
> > @@ -56,6 +56,9 @@ delimiter ;|
> > let $message=< -- test 1 call p1 -- >;
> > --source include/show_msg.inc
> > SET FOREIGN_KEY_CHECKS=1;
> > +--connection slave
> > +SET FOREIGN_KEY_CHECKS=1;
> > +--connection master
> > call test.p1('texas');
> > call test.p1('Live');
> > call test.p1('next');
> > @@ -66,31 +69,31 @@ call test.p1('MySQL');
> > let $message=< -- test 1 select master after p1 -- >;
> > --source include/show_msg.inc
> >
> > -SELECT * FROM test.t1;
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t1 ORDER BY a;
> > +SELECT * FROM test.t2 ORDER BY a;
> >
> > let $message=< -- test 1 select slave after p1 -- >;
> > --source include/show_msg.inc
> > save_master_pos;
> > connection slave;
> > sync_with_master;
> > -SELECT * FROM test.t1;
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t1 ORDER BY a;
> > +SELECT * FROM test.t2 ORDER BY a;
> >
> > let $message=< -- test 1 call p2 & select master -- >;
> > --source include/show_msg.inc
> > connection master;
> > call test.p2(4);
> > -SELECT * FROM test.t1;
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t1 ORDER BY a;
> > +SELECT * FROM test.t2 ORDER BY a;
> >
> > let $message=< -- test 1 select slave after p2 -- >;
> > --source include/show_msg.inc
> > save_master_pos;
> > connection slave;
> > sync_with_master;
> > -SELECT * FROM test.t1;
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t1 ORDER BY a;
> > +SELECT * FROM test.t2 ORDER BY a;
> >
> > connection master;
> > #show binlog events;
> > @@ -131,16 +134,16 @@ CALL test.p1(6,'MySQL');
> >
> > let $message=< -- test 2 select Master after p1 -- >;
> > --source include/show_msg.inc
> > -SELECT * FROM test.t1;
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t1 ORDER BY a;
> > +SELECT * FROM test.t2 ORDER BY a;
> >
> > let $message=< -- test 2 select Slave after p1 -- >;
> > --source include/show_msg.inc
> > save_master_pos;
> > connection slave;
> > sync_with_master;
> > -SELECT * FROM test.t1;
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t1 ORDER BY a;
> > +SELECT * FROM test.t2 ORDER BY a;
> >
> > let $message=< -- test 2 call p2 & select Master -- >;
> > --source include/show_msg.inc
> > @@ -148,16 +151,16 @@ connection master;
> > CALL test.p2(2);
> > CALL test.p2(4);
> > CALL test.p2(6);
> > -SELECT * FROM test.t1;
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t1 ORDER BY a;
> > +SELECT * FROM test.t2 ORDER BY a;
> >
> > let $message=< -- test 1 select Slave after p2 -- >;
> > --source include/show_msg.inc
> > save_master_pos;
> > connection slave;
> > sync_with_master;
> > -SELECT * FROM test.t1;
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t1 ORDER BY a;
> > +SELECT * FROM test.t2 ORDER BY a;
> >
> > connection master;
> > #show binlog events;
> > diff -Nrup a/mysql-test/suite/rpl/r/rpl_row_sp002_innodb.result
> b/mysql-test/suite/rpl/r/rpl_row_sp002_innodb.result
> > --- a/mysql-test/suite/rpl/r/rpl_row_sp002_innodb.result 2007-06-27 16:27:30
> +04:00
> > +++ b/mysql-test/suite/rpl/r/rpl_row_sp002_innodb.result 2008-04-04 01:05:19
> +04:00
> > @@ -25,6 +25,7 @@ end|
> > < -- test 1 call p1 -- >
> > ------------------------
> > SET FOREIGN_KEY_CHECKS=1;
> > +SET FOREIGN_KEY_CHECKS=1;
> > call test.p1('texas');
> > call test.p1('Live');
> > call test.p1('next');
> > @@ -34,7 +35,7 @@ call test.p1('MySQL');
> >
> > < -- test 1 select master after p1 -- >
> > ---------------------------------------
> > -SELECT * FROM test.t1;
> > +SELECT * FROM test.t1 ORDER BY a;
> > a t
> > 1 texas
> > 2 Live
> > @@ -42,7 +43,7 @@ a t
> > 4 to
> > 5 OK
> > 6 MySQL
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t2 ORDER BY a;
> > a f
> > 1 1
> > 2 2
> > @@ -53,7 +54,7 @@ a f
> >
> > < -- test 1 select slave after p1 -- >
> > --------------------------------------
> > -SELECT * FROM test.t1;
> > +SELECT * FROM test.t1 ORDER BY a;
> > a t
> > 1 texas
> > 2 Live
> > @@ -61,7 +62,7 @@ a t
> > 4 to
> > 5 OK
> > 6 MySQL
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t2 ORDER BY a;
> > a f
> > 1 1
> > 2 2
> > @@ -73,12 +74,12 @@ a f
> > < -- test 1 call p2 & select master -- >
> > ----------------------------------------
> > call test.p2(4);
> > -SELECT * FROM test.t1;
> > +SELECT * FROM test.t1 ORDER BY a;
> > a t
> > 4 to
> > 5 OK
> > 6 MySQL
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t2 ORDER BY a;
> > a f
> > 4 4
> > 5 5
> > @@ -86,12 +87,12 @@ a f
> >
> > < -- test 1 select slave after p2 -- >
> > --------------------------------------
> > -SELECT * FROM test.t1;
> > +SELECT * FROM test.t1 ORDER BY a;
> > a t
> > 4 to
> > 5 OK
> > 6 MySQL
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t2 ORDER BY a;
> > a f
> > 4 4
> > 5 5
> > @@ -125,7 +126,7 @@ CALL test.p1(6,'MySQL');
> >
> > < -- test 2 select Master after p1 -- >
> > ---------------------------------------
> > -SELECT * FROM test.t1;
> > +SELECT * FROM test.t1 ORDER BY a;
> > a t
> > 1 texas
> > 2 Live
> > @@ -133,7 +134,7 @@ a t
> > 4 to
> > 5 OK
> > 6 MySQL
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t2 ORDER BY a;
> > a f
> > 1 6
> > 2 6
> > @@ -144,7 +145,7 @@ a f
> >
> > < -- test 2 select Slave after p1 -- >
> > --------------------------------------
> > -SELECT * FROM test.t1;
> > +SELECT * FROM test.t1 ORDER BY a;
> > a t
> > 1 texas
> > 2 Live
> > @@ -152,7 +153,7 @@ a t
> > 4 to
> > 5 OK
> > 6 MySQL
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t2 ORDER BY a;
> > a f
> > 1 6
> > 2 6
> > @@ -166,7 +167,7 @@ a f
> > CALL test.p2(2);
> > CALL test.p2(4);
> > CALL test.p2(6);
> > -SELECT * FROM test.t1;
> > +SELECT * FROM test.t1 ORDER BY a;
> > a t
> > 1 texas
> > 3 next
> > @@ -174,7 +175,7 @@ a t
> > 20 Live
> > 40 to
> > 60 MySQL
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t2 ORDER BY a;
> > a f
> > 1 6
> > 3 6
> > @@ -185,7 +186,7 @@ a f
> >
> > < -- test 1 select Slave after p2 -- >
> > --------------------------------------
> > -SELECT * FROM test.t1;
> > +SELECT * FROM test.t1 ORDER BY a;
> > a t
> > 1 texas
> > 3 next
> > @@ -193,7 +194,7 @@ a t
> > 20 Live
> > 40 to
> > 60 MySQL
> > -SELECT * FROM test.t2;
> > +SELECT * FROM test.t2 ORDER BY a;
> > a f
> > 1 6
> > 3 6
> > diff -Nrup a/mysql-test/suite/rpl/t/disabled.def
> b/mysql-test/suite/rpl/t/disabled.def
> > --- a/mysql-test/suite/rpl/t/disabled.def 2008-03-30 11:17:06 +04:00
> > +++ b/mysql-test/suite/rpl/t/disabled.def 2008-04-04 01:05:19 +04:00
> > @@ -23,7 +23,6 @@ rpl_extraColmaster_innodb : BUG#30854 :
> > rpl_extraColmaster_myisam : BUG#30854
> > rpl_view : Bug#32654: rpl_view.test fails randomly
> > rpl_ndb_multi : Bug#30751: rpl_ndb_multi missing row in output
> > -rpl_row_sp002_innodb : Bug#32673 rpl_row_sp002_innodb.test fails
> randomly
> > rpl_ssl : Bug#32217 rpl_ssl fails with different number of
> records on master and slave
> > rpl_row_until : Bug#28772 rpl_row_until fails in pushbuild
> > rpl_log_pos : Bug#8693 Test 'rpl_log_pos' fails sometimes
>
>