Bug#22067 rpl_rbr_to_sbr and some other fail if NDB is default storage

A query SET @@GLOBAL.binlog_format = ... returns an error when NDB is the
default storage. This fails some tests invoking the set binlog_format explicitly.
because the var turns to be read-only.
  
  In the following are files and method to fix if needed.
  
  t/
  ndb_binlog_basic2.test         # here the failure is benign
  rpl_rbr_to_sbr.test            # does not check any ndb features =>           
 
  .                              # => not_ndb_default is enough
  rpl_row_basic_8partition.test  # set binlog_format can be replaced
  rpl_switch_stm_row_mixed.test  # does not check any ndb features =>
  .                              # => not_ndb_default is enough
  
  two more invoking invoke extra/rpl_truncate_helper.test
  
  rpl_truncate_2myisam           # to be fixed with not_ndb_default
  rpl_truncate_3innodb           # same as above
  .                              # because there is a dedicated to ndb .        
 
  .                              # rpl_truncate_7ndb* suit.

Adapting/testing a new implement
--source include/safe_set_to_maybe_ro_var.inc
to avoid abort due to the error using binlog_format as application.
parent 9a878894
......@@ -1791,3 +1791,4 @@ vio/viotest-sslconnect.cpp
vio/viotest.cpp
zlib/*.ds?
zlib/*.vcproj
mysql-test/t/rpl_truncate_4ndb.test
# to mask out the error - never abort neither log in result file - in setting
# to read-only variable.
# It is assumed that the new value is equal to one the var was set to.
# Such situation happens particularily with binlog_format that becomes read-only
# with ndb default storage.
#
# when generate results always watch the file to find what is expected,
# the SET query may fail
# script accepts $maybe_ro_var the var name and $val4var the value
### USAGE:
### let $maybe_ro_var= ...
### let $val4var= ...
### include/safe_set_to_maybe_ro_var.inc
--disable_result_log
--disable_abort_on_error
eval SET $maybe_ro_var = $val4var;
--enable_abort_on_error
--enable_result_log
eval SELECT $maybe_ro_var;
......@@ -5,7 +5,10 @@ reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
DROP TABLE IF EXISTS t1;
SET BINLOG_FORMAT=ROW;
SET @@BINLOG_FORMAT = ROW;
SELECT @@BINLOG_FORMAT;
@@BINLOG_FORMAT
ROW
**** Partition RANGE testing ****
CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255),
bc CHAR(255), d DECIMAL(10,4) DEFAULT 0,
......
-- source include/have_row_based.inc
-- source include/have_binlog_format_mixed_or_statement.inc
-- source include/not_ndb_default.inc
-- source include/master-slave.inc
# Test that the slave temporarily switches to ROW when seeing binrow
......
......@@ -8,12 +8,17 @@
############################################################
--source include/have_row_based.inc
--source include/have_binlog_format_row.inc
--source include/have_partition.inc
--source include/not_ndb_default.inc
--source include/master-slave.inc
connection master;
--disable_warnings
DROP TABLE IF EXISTS t1;
SET BINLOG_FORMAT=ROW;
let $maybe_ro_var = @@BINLOG_FORMAT;
let $val4var = ROW;
--source include/safe_set_to_maybe_ro_var.inc
--echo **** Partition RANGE testing ****
......
-- source include/have_row_based.inc
-- source include/not_ndb_default.inc
-- source include/master-slave.inc
connection master;
......
--source include/not_ndb_default.inc
let $engine=MyISAM;
--source extra/rpl_tests/rpl_truncate.test
--source include/have_innodb.inc
--source include/not_ndb_default.inc
let $engine=InnoDB;
--source extra/rpl_tests/rpl_truncate.test
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment