Bug #50410 rpl_ndb tests should run with binlog_format=row
Submitted: 18 Jan 2010 12:43 Modified: 14 Oct 2010 13:01
Reporter: Sven Sandberg Email Updates:
Status: Closed Impact on me:
None 
Category:Tests: Cluster Severity:S7 (Test Cases)
Version:5.1+ OS:Any
Assigned to: Sven Sandberg CPU Architecture:Any

[18 Jan 2010 12:43] Sven Sandberg
Description:
Tests in the rpl_ndb suite currently run without specifying binlog_format, which means that the default, binlog_format=statement, is used. ndb does not even support binlog_format=statement (but works anyways). It would be better if we use a 'combination' file to make the tests run twice, once with binlog_format=row and once with binlog_format=mixed.

How to repeat:
$ cd mysql-test
$ cat suite/rpl_ndb/t/rpl_ndb_tmp.test
SELECT @@binlog_format;
$ ./mtr rpl_ndb_tmp.test
[...]
SELECT @@binlog_format;
@@binlog_format
STATEMENT
[...]
$ ls suite/rpl_ndb/combinations
No such file or directory

Suggested fix:
=== added file 'mysql-test/suite/rpl_ndb/combinations'
--- mysql-test/suite/rpl_ndb/combinations	1970-01-01 00:00:00 +0000
+++ mysql-test/suite/rpl_ndb/combinations	2010-01-18 11:36:02 +0000
@@ -0,0 +1,5 @@
+[row]
+binlog-format=row
+
+[mix]
+binlog-format=mixed
[18 Jan 2010 18:09] Sven Sandberg
After discussion with Magnus and Luís, we agreed that running all rpl_ndb tests in mixed mode is not worth the extra time it will take. If we need to test anything particular for binlog_format=mixed with cluster replication, we can create a specific test case for that.

So here's a new proposed patch:

=== modified file 'mysql-test/suite/rpl_ndb/my.cnf'
--- mysql-test/suite/rpl_ndb/my.cnf	2008-01-08 09:35:34 +0000
+++ mysql-test/suite/rpl_ndb/my.cnf	2010-01-18 18:05:27 +0000
@@ -18,6 +18,8 @@ mysqld=
 ndbcluster
 # Turn on bin logging
 log-bin=                       master-bin
+# Cluster only supports row format
+binlog-format=                 row
 
 [mysqld.1.1]
[15 Apr 2010 13:04] Matthias Leich
Hi Sven,

all my experiments with your patch in mysql-5.1 were
successful.

I agree to your reasoning and solution.

After applying your patch a run with
  ./mtr --suite=rpl_ndb <no assignment of binlog_format>
causes that far way more tests get not skipped.
This means that a test run without assignment of the
binlog_format is now much more valuable except that
"rpl_ndb.rpl_ndb_stm_innodb" gets now skipped.

Please check if this test is important.

Another questions is if your patch has any impact
on the existing collections default.push, default.daily ...
The tests run there sometimes with NDB disabled at all and
in nearly all other cases with binlog_format explicit
assigned (MIXED or ROW).
So there should be no impact of your patch.
There is only one significant exception
   make test-bt (currently used by the build team)
which runs (mysql-5.1)
./mysql-test-run.pl --comment=ndb+rpl_ndb+ps --force --timer --ps-protocol --mysqld=--binlog-format=row --suite=ndb,rpl_ndb ; \
The call above will be not affected.
But the next call
./mysql-test-run.pl --comment=ndb --force --timer --with-ndbcluster-only
will be affected.
It runs aside of other suites the suite rpl_ndb again with now
binlog-format=row like the call above.
And this is redundant costs a lot runtime.
My box, tmpfs, suite rpl_ndb
before your patch - statement - Spent 467.527 of 793 seconds executing testcases
after your patch  - row       - Spent ~ 1200 of ~ 1400 seconds ...

ok to push in case you fix the make target "test-bt" so
that a redundant execution of rpl_ndb with ROW does not happen.

Regards

Matthias
[5 May 2010 15:00] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/107545

3371 Sven Sandberg	2010-05-05
      BUG#50410: rpl_ndb tests should run with binlog_format=row
      Problem: The rpl_ndb did not set binlog_format explicitly. Since
      the default is binlog_format=statement, it means that the suite
      ran with that. ndb does not support binlog_format=statement,
      and many tests were skipped because they sourced
      include/have_binlog_format_row_or_mixed.inc
      Fix: set binlog_format=row explicitly in the configuration file
      for the rpl_ndb suite.
     @ Makefile.am
        Removed duplicate run of rpl_ndb suite with binlog_format=row.
        Now that rpl_ndb is run with binlog_format=row by default, this
        run that explicitly changes to binlog_format=row is not needed,
        because it is covered by the following run.
     @ mysql-test/suite/rpl_ndb/my.cnf
        cluster only supports binlog_format=row.
     @ mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result
        updated result file
     @ mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test
        This test is supposed to use binlog_format=STATEMENT on
        master. It uses innodb on master, so statement format is
        supported.
[12 May 2010 10:29] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/108096

3379 Sven Sandberg	2010-05-12
      BUG#50410: rpl_ndb tests should run with binlog_format=row
      Problem: The rpl_ndb did not set binlog_format explicitly. Since
      the default is binlog_format=statement, it means that the suite
      ran with that. ndb does not support binlog_format=statement,
      and many tests were skipped because they sourced
      include/have_binlog_format_row_or_mixed.inc
      Fix: set binlog_format=row explicitly in the configuration file
      for the rpl_ndb suite.
     @ Makefile.am
        Removed duplicate run of rpl_ndb suite with binlog_format=row.
        Now that rpl_ndb is run with binlog_format=row by default, this
        run that explicitly changes to binlog_format=row is not needed,
        because it is covered by the following run.
     @ mysql-test/suite/rpl_ndb/my.cnf
        cluster only supports binlog_format=row.
     @ mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result
        updated result file
     @ mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test
        This test is supposed to use binlog_format=STATEMENT on
        master. It uses innodb on master, so statement format is
        supported.
[12 May 2010 10:38] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/108098

4067 Sven Sandberg	2010-05-12 [merge]
      Merged BUG#50410 from 5.1-bugteam to pe
      resolved conflict in Makefile.am manually.
[12 May 2010 11:32] Sven Sandberg
pushed to mysql-5.1 and mysql-pe
[16 May 2010 11:45] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/108395

3383 Alfranio Correia	2010-05-16
      BUG#50410: rpl_ndb tests should run with binlog_format=row
      
      Post-fix: Updated a test case after the patch for BUG#50410,
      because the patch makes ndb to run in the row format and as
      such unsafe warning messages are not printed out.
[28 May 2010 5:53] Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100524190136-egaq7e8zgkwb9aqi) (version source revid:alik@sun.com-20100524190136-egaq7e8zgkwb9aqi) (pib:16)
[28 May 2010 6:22] Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20100524190941-nuudpx60if25wsvx) (version source revid:alik@sun.com-20100524190409-5w4l7mje1wk1c90l) (merge vers: 6.0.14-alpha) (pib:16)
[28 May 2010 6:50] Bugs System
Pushed into 5.5.5-m3 (revid:alik@sun.com-20100524185725-c8k5q7v60i5nix3t) (version source revid:alexey.kopytov@sun.com-20100523204118-0tl3goawu658rxh6) (merge vers: 5.5.5-m3) (pib:16)
[1 Jun 2010 6:57] Jon Stephens
Changes in test code only, no user-facing changes.

Closed without further action.
[2 Jun 2010 8:49] Bugs System
Pushed into 5.1.48 (revid:georgi.kodinov@oracle.com-20100602084411-2yu607bslbmgufl3) (version source revid:alfranio.correia@sun.com-20100516114521-3im3gpl3baxdyh0y) (merge vers: 5.1.47) (pib:16)
[2 Jun 2010 9:09] Jon Stephens
Setting status back to Closed for reasons already stated.
[14 Oct 2010 8:27] Bugs System
Pushed into mysql-5.1-telco-7.0 5.1.51-ndb-7.0.20 (revid:martin.skold@mysql.com-20101014082627-jrmy9xbfbtrebw3c) (version source revid:vasil.dimov@oracle.com-20100513074652-0cvlhgkesgbb2bfh) (merge vers: 5.5.5-m3) (pib:21)
[14 Oct 2010 8:42] Bugs System
Pushed into mysql-5.1-telco-6.3 5.1.51-ndb-6.3.39 (revid:martin.skold@mysql.com-20101014083757-5qo48b86d69zjvzj) (version source revid:vasil.dimov@oracle.com-20100513074652-0cvlhgkesgbb2bfh) (merge vers: 5.5.5-m3) (pib:21)
[14 Oct 2010 8:57] Bugs System
Pushed into mysql-5.1-telco-6.2 5.1.51-ndb-6.2.19 (revid:martin.skold@mysql.com-20101014084420-y54ecj85j5we27oa) (version source revid:vasil.dimov@oracle.com-20100513074652-0cvlhgkesgbb2bfh) (merge vers: 5.5.5-m3) (pib:21)
[14 Oct 2010 13:01] Jon Stephens
Set back to Closed without further action; see previous comment.