WL#6922: Migrate binlog suite to run with innodb storage engine

Status: Complete

We have switched the default engine to innodb in MTR and added a line
--source include/force_myisam_default.inc to all existing tests. This WL will
migrate the binlog suite to run with innodb engine

User Documentation
==================

None required.
In the binlog and i_binlog suites remove the line
--source include/force_myisam_default.inc from the .test
files that are not required to run with MyISAM
The following tests failed:
i_binlog.binlog_stm_mix_innodb_disabled
i_binlog.binlog_row_innodb_disabled
binlog.binlog_stm_insert_select
binlog.binlog_row_insert_select
binlog.binlog_stm_row
binlog.binlog_stm_blackhole
binlog.binlog_stm_drop_tbl
binlog.binlog_row_drop_tbl
binlog.binlog_database
binlog.binlog_stm_ps
binlog.binlog_unsafe
binlog.binlog_stm_drop_tmp_tbl
binlog.binlog_row_drop_tmp_tbl


The above tests can be categorised as below:
1. MyISAM Only tests

>>binlog_stm_mix_innodb_disabled 
>>binlog_row_innodb_disabled
These two tests check that when InnoDB is disabled (using --skip-innodb) and
binlog enabled,  events are still logged to binary log. The server will not
start with innodb as default storage engine
(http://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#option_mysqld_innodb)
when skip-innodb option being used. 

>>binlog_stm_insert_select
>>binlog_row_insert_select
These two tests are to check if a partly-completed INSERT SELECT in a MyISAM
table goes into the binlog. This test has different behaivior with innodb as
default. Therefore test is MyISAM specific.

>>binlog_stm_row
In MyISAM INSERT INTO .. SELECT FROM takes a read lock on the source table
whereas in InnoDB row-level locking is used.

>>binlog_stm_blackhole
In this test there is a difference  in the result of  fulltext search between
myisam and innodb. (results for same queries being different for FTS between the
two engines) 

FIX:
The line --source include/force_myisam_default.inc retained. Also added --source
include/have_myisam.inc before the above mentioned line.

2. Engine Independent tests

>>binlog_stm_drop_tbl
>>binlog_row_drop_tbl
>>binlog_database 
>>binlog_stm_ps
>>binlog_unsafe
The above four tests are not engine specific and fail due the contents of binlog
events
-master-bin.000001	#	Query	#	#	COMMIT
+master-bin.000001	#	Xid	#	#	COMMIT /* XID */

FIX: Added one variable '$mask_binlog_commit_events' in show_events.inc file,
checking if we need to mask binlog/relaylog events or not.
Then initialize and uninitialize the same variable in failing testcases, as show
below:
+--let $mask_binlog_commit_events= 1 
 source include/show_binlog_events.inc;
+--let $mask_binlog_commit_events= 0
  
>>binlog_stm_drop_tmp_tbl
>>binlog_row_drop_tmp_tbl
The above two tests failed due to result content mismatch in show binlog
events.(Result file updated)