MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Sven Sandberg Date:September 23 2009 5:22pm
Subject:Re: bzr commit into mysql-pe branch (alfranio.correia:3514) WL#2687
WL#5072
View as plain text  
Hi Alfranio,

Nice work, but here are some suggestions for further improvements:

(S1) Some typos in comments
(S2) Remove debug printouts
(S3) Typo: .inc file uses Sp/Rp, .test file uses S1/R1.
(S4) improve testing of CREATE...SELECT
(S5) make result file slightly more readable

/Sven

> ################################################################################
> # This checks if transactions that mixes transactional and non-transactional are
> # correctly handled as follows. 
> #
> # Definitions:
> #
> #   D1. A table that has a transactional engine is called a T-table.
> #
> #   D2. A table that has a non-transactional engine is called an
> #       N-table.
> #
> #   D3. Events are either appended to the Transaction Cache (TC) or to
> #       the Statement Cache (SC).
> #
> # CALL statements are unrolled, so that each statement executed by the
> # stored procedure is logged separately. (If a stored procedure A
> # invokes a stored procedure B, then B is unrolled recursively).  In the
> # following, we assume that unrolling has already been done, and the
> # word "statement" refers to a non-CALL top-level statement or a
> # non-CALL sub-statement.
> #
> # Let S be a statement that either writes a T-table or N-table.
> #
> # 1. Before executing S, determine unsafeness.
> #
> #   R1. If S reads or writes an N-table, and either S or a previous
> #       statement in the same transaction reads or writes to a T-table,
> #       then S is marked as unsafe.
> #
> # 2. When logging S, determine where to log it by applying the following
> #   rules in order.
> #
> #   R2. If logging in statement format:
> #
> #       - If S produces an error and does not write any N-table, do
> #         not log.
> #
> #       - Otherwise, if either S or any previous statement in the same
> #         transaction reads or writes to any T-tables, log to TC.
> #
> #       - Otherwise, log to SC.
> #
> #   R3. If logging in row format:
> #
> #       - Log row events that write N-tables to SC.
> #
> #       - If S produces an error, do not log row events that write
> #         T-tables.
> #
> #       - If S does not produce an error, log row events that write
> #         T-tables to TC.
> #
> #   R4. At the end of S, write the SC to the binlog and clear the SC.
> #
> # 3. At end of transaction:
> #
> #   R5. At COMMIT, if the COMMIT does not produce an error:
> #        - If the TC is non-empty, write BEGIN + TC + COMMIT to the binlog.
> #        - If the TC is empty, do nothing.
> #
> #   R6. At ROLLBACK or at COMMIT that produces an error:
> #        - If the TC contains writes to N-tables, write
> #          BEGIN + TC + ROLLBACK to the binlog.
> #        - If the TC does not contain writes to N-tables, do nothing.
> #
> #   R7. At ROLLBACK TO SAVEPOINT:
> #        - If the TC contains writes to N-tables after the savepoint, write
> #          ROLLBACK TO SAVEPOINT to the TC.
> #        - Otherwise, clear the part of the TC that starts at the savepoint and
> #          extends to the end of the TC. 
> #
> #   R8. Clear the TC at the end of the transaction. 
> #
> #   R9. CREATE * SELECT should be flushed to the binary log as an atomic
> #   operation regarless the type of the table.

(S1) Here, I would suggest to use the more precise formulation from R9 
and R10 at 
http://forge.mysql.com/wiki/MySQL_Internals_Replication#Logging_transactions

> # 
> # We use the include file rpl_mixing_engines.inc to generate sql commands from a
> # format string. The format string consists of a sequence of 'codes' separated
> # by spaces. The following codes exist:
> #
> # - Define the scope of a transaction:
> # B - Begin.
> # C - Commit.
> # R - Rollback.
> # Sp - Savepoint.
> # Rp - Rollback to Sp.

(S3) You are using Sp/Rp in the .inc file but S1/R1 in some places in
the .test file. I would suggest to use S1/R1 since that can be extended
to S2/R2, S3/R3 etc in case we ever need a test with more than one
savepoint.

> # Ce - Commit that fails before flushing.

(S1) You also have Re (though it is unused). I suggest either remove it
or add a comment here.

> #
> # - Change only T-Tables:
> # T - Updates a T-Table.
> # T-trig - Updates T-Tables through a trigger.
> # T-func - Updates T-Tables through a function.
> # T-proc - Updates T-Tables through a procedure.
> # eTg - Fails while updating the first tuple in a T-Table.

(S1) Typo: eTg -> eT

> # Te - Fails while updating an n-tuple (n > 1) in a T-Table.
> # Te-trig - Fails while updating an n-tuple (n > 1) in a T-Table.
> # Te-func - Fails while updating an n-tuple (n > 1) in a T-Table.
> #
> # - Change only N-Tables 
> # N - Updates a N-Table.
> # N-trig - Updates N-Tables through a trigger.
> # N-func - Updates N-Tables through a function.
> # N-proc - Updates N-Tables through a procedure.
> # eNg - Fails while updating the first tuple in a N-Table.

(S1) Typo: eNg -> eN

> # Ne - Fails while updating an n-tuple (n > 1) in a N-Table.
> # Ne-trig - Fails while updating an n-tuple (n > 1) in a N-Table.
> # Ne-func - Fails while updating an n-tuple (n > 1) in a N-Table.
> #
> # - Read T-table and write N-table:
> # Nt - Updates a N-Table
> # Net - Fails while updating an n-tuple (n > 1) in a N-Table.
> #
> # - Read N-table and write T-table:
> # nT - Updates a T-Table.
> # nTe - Fails while updating an n-tuple (n > 1) in a T-Table.
> #
> # - Update both types of tables. First a N-Table and the a T-Table:
> # NT - Upates both types of tables through an update statement.
> # NT-trig - Updates both types of tables through a trigger.
> # NT-func - Updates both types of tables through a procedure.
> # NeT-trig - Fails while updating an n-tuple (n > 1) in a T-Table.
> # NeT-func - Fails while updating an n-tuple (n > 1) in a T-Table.
> #
> # - Update both types of tables. First a T-Table and the a N-Table:
> # TN - Upates both types of tables through an update statement.
> # TN-trig - Updates both types of tables through a trigger.
> # TN-func - Updates both types of tables through a procedure.
> # TeN-trig - Fails while updating an n-tuple (n > 1) in a N-Table.
> # TeN-func - Fails while updating an n-tuple (n > 1) in a N-Table.
> # 
> # The format of the entries in the binlog depends on the mode and on the type
> # statements: S - statement and R - row. And when it is clear from the context
> # which statement is referred to, we sometimes use "M" to denote a "Mixed"
> # statement, i.e., one that accesses both a T-table and an N-table.
> #
> # For further details, please, read WL#2687 and WL#5072.
> ################################################################################
> --source include/have_innodb.inc
> 
> --echo #########################################################################
> --echo #                            CONFIGURATION
> --echo #########################################################################
> SET @commands= 'configure';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> let $trans_id= 7;

Why 7, why not 1?

> let $stmt_id= 1;
> 
> --echo #########################################################################
> --echo #         1 - MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
> --echo #########################################################################
> connection master;
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #1) Generates in the binlog what follows:
> --echo #      --> STMT  "B T C" entries, format S.
> --echo #      --> ROW   "B T C" entries, format R.
> --echo #      --> MIXED "B T C" entries, format S.
> --echo #
> SET @commands= 'T';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'T-trig';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'T-func';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'T-proc';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #1.e) Generates in the binlog what follows:
> --echo #        --> STMT  empty.
> --echo #        --> ROW   empty.
> --echo #        --> MIXED empty.
> --echo #
> SET @commands= 'eT';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'Te';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'Te-trig';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'Te-func';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #2) Generates in the binlog what follows:
> --echo #      --> STMT  "N" entry, format S.
> --echo #      --> ROW   "N" entry, format R.
> --echo #      --> MIXED "N" entry, format S.
> --echo #
> SET @commands= 'N';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'N-trig';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'N-func';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'N-proc';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #2.e) Generates in the binglog what follows if a N-table is changed:

(S1) Typo: binglog -> binlog (several places below, grep for it)

> --echo #        --> STMT  "N" entry, format S.
> --echo #        --> ROW   "N" entry, format R.
> --echo #        --> MIXED "N" entry, format S.
> --echo #
> SET @commands= 'eN';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'Ne';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'Ne-trig';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'Ne-func';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #3) Generates in the binglog what follows:
> --echo #      --> STMT  "M" entry if only N-Table is changed, format S.
> --echo #      --> STMT  "B M C" entries, format S.
> --echo #      --> ROW   "N B T C" entries, format R.
> --echo #      --> MIXED "N B T C" entries, format R.
> --echo #
> SET @commands= 'Nt';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'nT';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'NT';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'NT-trig';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'NT-func';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'TN';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'TN-trig';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'TN-func';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #3.e) Generates in the binglog what follows:
> --echo #      --> STMT  "M" entry if only N-Table is changed, format S.
> --echo #      --> STMT  "B M R" entries, format S.
> --echo #      --> ROW   "N" entry, format R.
> --echo #      --> MIXED "N" entry, format R.
> SET @commands= 'Net';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'nTe';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'NeT-trig';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'NeT-func';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'TeN-trig';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'TeN-func';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #4) Generates in the binlog what follows:
> --echo #     --> STMT  "B T T C" entries, format S.
> --echo #     --> ROW   "B T T C" entries, format R.
> --echo #     --> MIXED "B T T C" entries, format S
> --echo #
> SET @commands= 'B T T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T T-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T T-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T T-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig T-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig T-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig T-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func T-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func T-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func T-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc T-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc T-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc T-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #4.e) Generates in the binlog what follows:
> --echo #       --> STMT  "B T C" entries, format S.
> --echo #       --> ROW   "B T C" entries, format R.
> --echo #       --> MIXED "B T C" entries, format S.
> --echo #
> SET @commands= 'B T eT C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T Te C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T Te-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T Te-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B eT T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B Te T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B Te-trig T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B Te-func T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #5) Generates in the binlog what follows:
> --echo #     --> STMT  empty.
> --echo #     --> ROW   empty.
> --echo #     --> MIXED empty.
> --echo #
> SET @commands= 'B T T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T T-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T T-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T T-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig T-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig T-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig T-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func T-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func T-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func T-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc T-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc T-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc T-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #5.e) Generates in the binlog what follows:
> --echo #       --> STMT  empty.
> --echo #       --> ROW   empty.
> --echo #       --> MIXED empty.
> --echo #
> SET @commands= 'B T eT R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T Te R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T Te-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T Te-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B eT T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B Te T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B Te-trig T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B Te-func T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #6) Generates in the binglog what follows:
> --echo #     --> STMT  "N N" entries, format S.
> --echo #     --> ROW   "N N" entries, format R.
> --echo #     --> MIXED "N N" entries, format S.
> --echo #
> SET @commands= 'B N N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N N-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N N-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N N-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig N-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig N-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig N-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func N-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func N-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func N-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc N-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc N-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc N-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #6.e) Generates in the binglog what follows if a N-Table is changed:
> --echo #     --> STMT  "N N" entries, format S.
> --echo #     --> ROW   "N N" entries, format R.
> --echo #     --> MIXED "N N" entries, format S.
> --echo #
> SET @commands= 'B N eN C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N Ne C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N Ne-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N Ne-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B eN N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B Ne N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B Ne-trig N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B Ne-func N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #7) Generates in the binlog what follows:
> --echo #      --> STMT  "N N" entries, format S.
> --echo #      --> ROW   "N N" entries, format R.
> --echo #      --> MIXED "N N" entries, format S.
> --echo #
> SET @commands= 'B N N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N N-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N N-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N N-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig N-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig N-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig N-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func N-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func N-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func N-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc N-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc N-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc N-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #7.e) Generates in the binglog what follows if a N-Table is changed:
> --echo #     --> STMT  "N N" entries, format S.
> --echo #     --> ROW   "N N" entries, format R.
> --echo #     --> MIXED "N N" entries, format S.
> --echo #
> SET @commands= 'B N eN R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N Ne R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N Ne-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N Ne-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B eN N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B Ne N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B Ne-trig N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B Ne-func N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #8) Generates in the binlog what follows:
> --echo #       --> STMT  "B T N C" entries, format S.
> --echo #       --> ROW   "N B T C" entries, format R.
> --echo #       --> MIXED "N B T C" entries, format R in N and S in T.
> --echo #
> SET @commands= 'B T N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T N-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T N-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T N-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig N-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig N-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig N-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func N-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func N-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func N-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc N-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc N-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc N-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #8.e) Generates in the binlog what follows if T-* fails:
> --echo #       --> STMT  "N" entry, format S.
> --echo #       --> ROW   "N" entry, format R.
> --echo #       --> MIXED "N" entry, format R.
> --echo #     Otherwise, what follows if N-* fails and a N-Table is changed:
> --echo #       --> STMT  "B T N C" entries, format S.
> --echo #       --> ROW   "N B T C" entries, format R.
> --echo #       --> MIXED "N B T C" entries, format R in N and S in T.
> --echo #
> SET @commands= 'B eT N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B Te N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T eN C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T Ne C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #9) Generates in the binlog what follows:
> --echo #     --> STMT  "B T N R" entries, format S.
> --echo #     --> ROW   "N" entry, format R.
> --echo #     --> MIXED "N" entry, format R.
> --echo #
> SET @commands= 'B T N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T N-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T N-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T N-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig N-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig N-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-trig N-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func N-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func N-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-func N-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc N-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc N-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T-proc N-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #9.e) Generates in the binlog what follows if T* fails:
> --echo #       --> STMT  "N" entry, format S.
> --echo #       --> ROW   "N" entry, format R.
> --echo #       --> MIXED "N" entry, format R.
> --echo #     Otherwise, what follows if N* fails and a N-Table is changed:
> --echo #       --> STMT  "B T N R" entries, format S.
> --echo #       --> ROW   "N" entry, format R.
> --echo #       --> MIXED "N" entry, format R.
> --echo #
> SET @commands= 'B eT N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B Te N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T eN R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T Ne R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #10) Generates in the binlog:
> --echo #     --> STMT  "N B T C" entries, format S.
> --echo #     --> ROW   "N B T C" entries, format R.
> --echo #     --> MIXED "N B T C" entries, format S.
> --echo #
> SET @commands= 'B N T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N T-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N T-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N T-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig T-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig T-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig T-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func T-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func T-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func T-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc T-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc T-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc T-proc C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #11) Generates in the binlog what follows:
> --echo #     --> STMT  "N" entries, format S.
> --echo #     --> ROW   "N" entries, format R.
> --echo #     --> MIXED "N" entries, format S.
> --echo #
> 
> SET @commands= 'B N T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N T-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N T-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N T-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig T-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig T-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-trig T-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func T-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func T-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-func T-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc T-proc R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc T-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N-proc T-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #12) "B M T C" generates in the binlog what follows:
> --echo #      --> STMT  "M B T C" entries if in M only N-Table is changed, format
> S.
> --echo #      --> STMT  "B M T C" entries, format S.
> --echo #      --> ROW   "N B T T C" entries, format R.
> --echo #      --> MIXED "N B T T C" entries, format R in N/T and format S in T.
> --echo #
> SET @commands= 'B Nt T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B nT T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NT T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NT-trig T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NT-func T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TN T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TN-trig T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TN-func T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #12.e) Generates in the binlog what follows if a N-Table is changed:
> --echo #        --> STMT  "M B T C" entries if in M only N-Table is changed,
> format S.
> --echo #        --> STMT  "B M T C" entries, format S.
> --echo #        --> ROW   "N B T T C" entries, format R.
> --echo #        --> MIXED "N B T T C" entries, format R in N/T and format S in T.
> --echo #  
> SET @commands= 'B Net T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B nTe T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NeT-trig T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NeT-func T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TeN-trig T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TeN-func T C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #13) "B M T R" generates in the binlog:
> --echo #      --> STMT  "M B T R" entries if in M only N-Table is changed, format
> S.
> --echo #      --> STMT  "B M T R" entries, format S.
> --echo #      --> ROW   "N" entry, format R.
> --echo #      --> MIXED "N" entry, format R.
> --echo #
> SET @commands= 'B Nt T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B nT T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NT T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NT-trig T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NT-func T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TN T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TN-trig T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TN-func T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #13.e) Generates in the binlog what follows if a N-Table is changed:
> --echo #        --> STMT  "M B T R" entries if in M only N-Table is changed,
> format S.
> --echo #        --> STMT  "B M T R" entries, format S.
> --echo #        --> ROW   "N" entry, format R.
> --echo #        --> MIXED "N" entry, format R.
> --echo #
> SET @commands= 'B Net T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B nTe T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NeT-trig T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NeT-func T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TeN-trig T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TeN-func T R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #14) Generates in the binlog what follows if a N-Table is changed:
> --echo #      --> STMT  "B T M C" entries, format S.
> --echo #      --> ROW   "N B T T C" entries, format R.
> --echo #      --> MIXED "N B T T C" entries, format R in N/T and format S in T.
> --echo #
> SET @commands= 'B T Nt C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T nT C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T NT C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T NT-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T NT-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T TN C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T TN-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T TN-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #14.e) Generates in the binlog what follows if a N-Table is changed:
> --echo #        --> STMT  "B T M C" entries, format S.
> --echo #        --> ROW   "N B T C" entry, format R.
> --echo #        --> MIXED "N B T C" entry, format R.
> --echo #
> SET @commands= 'B T Net C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T nTe C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T NeT-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T NeT-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T TeN-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T TeN-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #15) Generates in the binlog what follows if a N-Table is changed:
> --echo #        --> STMT  "B T M R" entries, format S.
> --echo #        --> ROW   "N" entry, format R.
> --echo #        --> MIXED "N" entry, format R.
> --echo #
> SET @commands= 'B T Nt R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T nT R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T NT R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T NT-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T NT-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T TN R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T TN-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T TN-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #15.e) Generates in the binlog what follows if a N-Table is changed:
> --echo #        --> STMT  "B T M R" entries, format S.
> --echo #        --> ROW   "N" entry, format R.
> --echo #        --> MIXED "N" entry, format R.
> --echo #
> SET @commands= 'B T Net R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T nTe R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T NeT-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T NeT-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T TeN-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T TeN-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #16) Generates in the binlog what follows if a N-Table is changed:
> --echo #      --> STMT  "M N" entries if in M only N-Table is changed, format S.
> --echo #      --> STMT  "B M N C" entries, format S.
> --echo #      --> ROW   "N N B T C" entries, format R.
> --echo #      --> MIXED "M N" entries if in M only N-Table is changed, format S.
> --echo #      --> MIXED "N N B T C" entries, format R.
> --echo #
> SET @commands= 'B Nt N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B nT N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NT N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NT-trig N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NT-func N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TN N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TN-trig N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TN-func N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #16.e) Generates in the binlog what follows if a N-Table is changed:
> --echo #      --> STMT  "M N" entries if in M only N-Table is changed, format S.
> --echo #      --> STMT  "B M N C" entries, format S.
> --echo #      --> ROW   "N N B T C" entries, format R.
> --echo #      --> MIXED "M N" entries if in M only N-Table is changed, format S.
> --echo #      --> MIXED "N N B T C" entries, format R.
> --echo #
> SET @commands= 'B Net N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B nTe N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NeT-trig N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NeT-func N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TeN-trig N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TeN-func N C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #17) Generates in the binlog what follows if a N-Table is changed:
> --echo #    --> STMT  "M N" entries if in M only N-Table is changed, format S.
> --echo #    --> STMT  "B M N R" entries, format S.
> --echo #    --> ROW   "N N" entries, format R.
> --echo #    --> MIXED "M N" entries if in M only N-Table is changed, format S.
> --echo #    --> MIXED "N N" entries, format R.
> --echo #
> SET @commands= 'B Nt N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B nT N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NT N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NT-trig N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NT-func N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TN N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TN-trig N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TN-func N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #17.e) Generates in the binlog what follows if a N-Table is changed:
> --echo #      --> STMT  "M N" entries if in M only N-Table is changed, format S.
> --echo #      --> STMT  "B M N R" entries, format S.
> --echo #      --> ROW   "N N" entries, format R.
> --echo #      --> MIXED "M N" entries if in M only N-Table is changed, format S.
> --echo #      --> MIXED "N N" entries, format R.
> --echo #
> SET @commands= 'B Net N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B nTe N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NeT-trig N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B NeT-func N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TeN-trig N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B TeN-func N R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #18) Generates in the binlog what follows if a N-Table is changed:
> --echo #    --> STMT  "N M" entries if in M only N-Table is changed, format S.
> --echo #    --> STMT  "N B M C" entries, format S.
> --echo #    --> ROW   "N N B T C" entries, format R.
> --echo #    --> MIXED "N N B T C" entries, format S in first N and format R in the
> other.
> --echo #
> 
> SET @commands= 'B N Nt C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N nT C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N NT C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N NT-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N NT-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N TN C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N TN-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N TN-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #18.e) Generates in the binlog what follows if a N-Table is changed:
> --echo #      --> STMT  "N M" entries if in M only N-Table is changed, format S.
> --echo #      --> STMT  "N B M C" entries, format S.
> --echo #      --> ROW   "N N" entries, format R.
> --echo #      --> MIXED "N N" entries, format S in first N and format R in the
> other.
> --echo #
> SET @commands= 'B N Net C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N nTe C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N NeT-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N NeT-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N TeN-trig C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N TeN-func C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #19) Generates in the binlog what follows if a N-Table is changed:
> --echo #    --> STMT  "N M" entries if in M only N-Table is changed, format S.
> --echo #    --> STMT  "N B M R" entries, format S.
> --echo #    --> ROW   "N N" entries, format R.
> --echo #    --> MIXED "N N" entries, format S in first N and format R in the
> other.
> --echo #
> 
> SET @commands= 'B N Nt R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N nT R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N NT R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N NT-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N NT-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N TN R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N TN-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N TN-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #
> --echo #19.e) Generates in the binlog what follows if a N-Table is changed:
> --echo #      --> STMT  "N M" entries if in M only N-Table is changed, format S.
> --echo #      --> STMT  "N B M R" entries, format S.
> --echo #      --> ROW   "N N" entries, format R.
> --echo #      --> MIXED "N N" entries, format S in first N and format R in the
> other.
> --echo #
> SET @commands= 'B N Net R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N nTe R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N NeT-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N NeT-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N TeN-trig R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N TeN-func R';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> --echo
> --echo
> --echo
> --echo #20) Generates in the binlog a set of entries equivalent to rollback.
> --echo # Due to a bug this is disable for now.
> --echo # 
> #SET @commands= 'B N T Ce';
> #--source extra/rpl_tests/rpl_mixing_engines.inc
> 
> #SET @commands= 'B T N Ce';
> #--source extra/rpl_tests/rpl_mixing_engines.inc
> 
> #SET @commands= 'B TN Ce';
> #--source extra/rpl_tests/rpl_mixing_engines.inc
> 
> #SET @commands= 'B NT Ce';
> #--source extra/rpl_tests/rpl_mixing_engines.inc
> 
> #SET @commands= 'B nT Ce';
> #--source extra/rpl_tests/rpl_mixing_engines.inc
> 
> #SET @commands= 'B Nt Ce';
> #--source extra/rpl_tests/rpl_mixing_engines.inc
> 
> 
> --echo
> ###################################################################################
> --echo #                               2 - SAVEPOINT
> --echo
> ###################################################################################
> SET @commands= 'B T Sp T Rp C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B N T S1 T R1 C';
> --source extra/rpl_tests/rpl_mixing_engines.inc

(S3) Here it uses S1/R1. I'd suggest to use S1/R1 in the .inc file too 
and above.

> 
> SET @commands= 'B T N S1 T R1 C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> SET @commands= 'B T S1 N T R1 C';
> --source extra/rpl_tests/rpl_mixing_engines.inc
> 
> --echo
> ###################################################################################
> --echo #                 3 - CREATE TABLE...SELECT and CREATE TABLE...LIKE
> --echo
> ###################################################################################
> connection master;
> let $first_binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
> 
> CREATE TABLE tt_xx1 engine=Innodb SELECT * FROM tt_1;
> DROP TABLE tt_xx1;
> CREATE TABLE tt_xx2 engine=Innodb SELECT * FROM nt_1;
> DROP TABLE tt_xx2;
> CREATE TABLE nt_xx3 engine=MyIsam SELECT * FROM tt_1;
> DROP TABLE nt_xx3;
> CREATE TABLE nt_xx4 engine=MyIsam SELECT * FROM nt_1;
> DROP TABLE nt_xx4;
> CREATE TABLE tt_xx5 LIKE tt_1;
> DROP TABLE tt_xx5;
> CREATE TABLE nt_xx6 LIKE nt_1;
> DROP TABLE nt_xx6;
> 
> let $binlog_start= $first_binlog_start;
> --source include/show_binlog_events.inc

(S4) Here, I think you need to:

  (1) execute show_binlog_events.inc after each CREATE TABLE. Otherwise 
we would not notice if there was a bug causing the TC not to be flushed, 
because it will be flushed at the implicit commit of DROP TABLE.

  (2) test that CREATE...SELECT that fails does not produce any rows in 
the binlog.

> 
> --echo
> ###################################################################################
> --echo #                               CHECK CONSISTENCY 
> --echo
> ###################################################################################
> connection master;
> sync_slave_with_master;
> 
> --exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert
> --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-nmt-master.sql
> --exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert
> --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-nmt-slave.sql
> --diff_files $MYSQLTEST_VARDIR/tmp/test-nmt-master.sql
> $MYSQLTEST_VARDIR/tmp/test-nmt-slave.sql
> 
> --echo
> ###################################################################################
> --echo #                                        CLEAN
> --echo
> ###################################################################################
> SET @commands= 'clean';
> --source extra/rpl_tests/rpl_mixing_engines.inc




rpl_mixing_engines.inc:
> ################################################################################
> # This is an auxiliary file used by rpl_mixing_engines.test, and that it
> # executes SQL statements according to a format string, as specified in
> # rpl_mixing_engines.test. In addition, it accepts the special format
> # strings 'configure' and 'clean', used before and after everything else.
> ################################################################################
> 
> if (`SELECT HEX(@commands) = HEX('configure')`)
> {
>   connection master;
> 
>   SET SQL_LOG_BIN=0;
>   CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = MyISAM;
>   CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = MyISAM;
>   CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = MyISAM;
>   CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = MyISAM;
>   CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = MyISAM;
>   CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = MyISAM;
>   CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = Innodb;
>   CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = Innodb;
>   CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = Innodb;
>   CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = Innodb;
>   CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = Innodb;
>   CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = Innodb;
>   SET SQL_LOG_BIN=1;
> 
>   connection slave;
> 
>   SET SQL_LOG_BIN=0;
>   CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = MyISAM;
>   CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = MyISAM;
>   CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = MyISAM;
>   CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = MyISAM;
>   CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = MyISAM;
>   CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = MyISAM;
>   CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = Innodb;
>   CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = Innodb;
>   CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = Innodb;
>   CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = Innodb;
>   CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = Innodb;
>   CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY
> KEY(trans_id, stmt_id)) ENGINE = Innodb;
>   SET SQL_LOG_BIN=1;
> 
>   connection master;
> 
>   INSERT INTO nt_1(trans_id, stmt_id) VALUES(1,1);
>   INSERT INTO nt_2(trans_id, stmt_id) VALUES(2,1);
>   INSERT INTO nt_3(trans_id, stmt_id) VALUES(3,1);
>   INSERT INTO nt_4(trans_id, stmt_id) VALUES(4,1);
>   INSERT INTO nt_5(trans_id, stmt_id) VALUES(5,1);
>   INSERT INTO nt_6(trans_id, stmt_id) VALUES(6,1);
> 
>   INSERT INTO tt_1(trans_id, stmt_id) VALUES(1,1);
>   INSERT INTO tt_2(trans_id, stmt_id) VALUES(2,1);
>   INSERT INTO tt_3(trans_id, stmt_id) VALUES(3,1);
>   INSERT INTO tt_4(trans_id, stmt_id) VALUES(4,1);
>   INSERT INTO tt_5(trans_id, stmt_id) VALUES(5,1);
>   INSERT INTO tt_6(trans_id, stmt_id) VALUES(6,1);
> 
>   DELIMITER |;
> 
>   CREATE PROCEDURE pc_i_tt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER)
>   BEGIN
>     DECLARE in_stmt_id INTEGER;
>     SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id;
>     SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
>     INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
>     INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 2);
>   END|
> 
>   CREATE PROCEDURE pc_i_nt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER)
>   BEGIN
>     DECLARE in_stmt_id INTEGER;
>     SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id;
>     SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
>     INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
>     INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 2);
>   END|
> 
>   CREATE FUNCTION fc_i_tt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS
> VARCHAR(64)
>   BEGIN
>     DECLARE in_stmt_id INTEGER;
>     SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id;
>     SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
>     INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
>     INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 2);
>     RETURN "fc_i_tt_5_suc";
>   END|
> 
>   CREATE FUNCTION fc_i_nt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS
> VARCHAR(64)
>   BEGIN
>     DECLARE in_stmt_id INTEGER;
>     SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id;
>     SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
>     INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
>     INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 2);
>     RETURN "fc_i_nt_5_suc";
>   END|
> 
>   CREATE TRIGGER tr_i_tt_3_to_nt_3 AFTER INSERT ON tt_3 FOR EACH ROW
>   BEGIN
>     DECLARE in_stmt_id INTEGER;
>     SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= NEW.trans_id;
>     SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
>     INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
>     INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
>   END|
> 
>   CREATE TRIGGER tr_i_nt_4_to_tt_4 AFTER INSERT ON nt_4 FOR EACH ROW
>   BEGIN
>     DECLARE in_stmt_id INTEGER;
>     SELECT max(stmt_id) INTO in_stmt_id FROM tt_4 WHERE trans_id= NEW.trans_id;
>     SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
>     INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
>     INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
>   END|
> 
>   CREATE TRIGGER tr_i_tt_5_to_tt_6 AFTER INSERT ON tt_5 FOR EACH ROW
>   BEGIN
>     DECLARE in_stmt_id INTEGER;
>     SELECT max(stmt_id) INTO in_stmt_id FROM tt_6 WHERE trans_id= NEW.trans_id;
>     SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id, 1), 1) INTO in_stmt_id;
>     INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
>     INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
>   END|
> 
>   CREATE TRIGGER tr_i_nt_5_to_nt_6 AFTER INSERT ON nt_5 FOR EACH ROW
>   BEGIN
>     DECLARE in_stmt_id INTEGER;
>     SELECT max(stmt_id) INTO in_stmt_id FROM nt_6 WHERE trans_id= NEW.trans_id;
>     SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
>     INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
>     INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
>   END|
> 
>   DELIMITER ;|
> 
>   let $pos_trans_command= query_get_value("SHOW MASTER STATUS", Position, 1);
> 
>   SET @commands='';
> }
> 
> if (`SELECT HEX(@commands) = HEX('clean')`)
> {
>   connection master;
> 
>   DROP TABLE tt_1;
>   DROP TABLE tt_2;
>   DROP TABLE tt_3;
>   DROP TABLE tt_4;
>   DROP TABLE tt_5;
>   DROP TABLE tt_6;
> 
>   DROP TABLE nt_1;
>   DROP TABLE nt_2;
>   DROP TABLE nt_3;
>   DROP TABLE nt_4;
>   DROP TABLE nt_5;
>   DROP TABLE nt_6;
> 
>   DROP PROCEDURE pc_i_tt_5_suc;
>   DROP PROCEDURE pc_i_nt_5_suc;
>   DROP FUNCTION fc_i_tt_5_suc;
>   DROP FUNCTION fc_i_nt_5_suc;
> 
>   sync_slave_with_master;
> 
>   SET @commands='';
> }
> 
> if (`SELECT HEX(@commands) != HEX('')`)
> {
>   --disable_query_log
>   SET @command= SUBSTRING_INDEX(@commands, ' ', 1);
>   let $command= `SELECT @command`;
>   --echo ------------- $command ------------
>   let $pos_command= query_get_value("SHOW MASTER STATUS", Position, 1);
>   if (`SELECT HEX(@command) = HEX('B')`)
>   {
>     --enable_query_log
>     eval BEGIN;
>     --disable_query_log
>   }
>   if (`SELECT HEX(@command) = HEX('T')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)

(S2) Please remove debug printouts (here and in several places below).

>     --enable_query_log
>     eval INSERT INTO tt_1(trans_id, stmt_id) VALUES ($trans_id, $stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('T-trig')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval INSERT INTO tt_5(trans_id, stmt_id) VALUES ($trans_id, $stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('T-func')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval SELECT fc_i_tt_5_suc ($trans_id, $stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('T-proc')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval CALL pc_i_tt_5_suc ($trans_id, $stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('eT')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     let $old_trans_id= `SELECT max(trans_id) from tt_1`;
>     let $old_stmt_id= `SELECT max(stmt_id) from tt_1 where trans_id= $old_trans_id`;
>     --enable_query_log
>     --error ER_DUP_ENTRY
>     eval INSERT INTO tt_1(trans_id, stmt_id) VALUES ($old_trans_id, $old_stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('Te')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     let $old_trans_id= `SELECT max(trans_id) from tt_1`;
>     let $old_stmt_id= `SELECT max(stmt_id) from tt_1 where trans_id= $old_trans_id`;
>     --enable_query_log
>     --error ER_DUP_ENTRY
>     eval INSERT INTO tt_1(trans_id, stmt_id) VALUES ($trans_id, $stmt_id),
> ($old_trans_id, $old_stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('Te-trig')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     let $old_trans_id= `SELECT max(trans_id) from tt_5`;
>     let $old_stmt_id= `SELECT max(stmt_id) from tt_5 where trans_id= $old_trans_id`;
>     --enable_query_log
>     --error ER_DUP_ENTRY
>     eval INSERT INTO tt_5(trans_id, stmt_id) VALUES ($trans_id, $stmt_id),
> ($old_trans_id, $old_stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('Te-func')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     let $old_trans_id= `SELECT max(trans_id) from tt_5`;
>     let $old_stmt_id= `SELECT max(stmt_id) from tt_5 where trans_id= $old_trans_id`;
>     --enable_query_log
>     --error ER_DUP_ENTRY, ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
>     eval INSERT INTO tt_5(trans_id, stmt_id, info) VALUES ($trans_id, $stmt_id, ''),
> ($old_trans_id, $old_stmt_id, fc_i_tt_5_suc ($trans_id, $stmt_id));
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('N')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval INSERT INTO nt_1(trans_id, stmt_id) VALUES ($trans_id, $stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('N-trig')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval INSERT INTO nt_5(trans_id, stmt_id) VALUES ($trans_id, $stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('N-func')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval SELECT fc_i_nt_5_suc ($trans_id, $stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('N-proc')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval CALL pc_i_nt_5_suc ($trans_id, $stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('eN')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     let $old_trans_id= `SELECT max(trans_id) from nt_1`;
>     let $old_stmt_id= `SELECT max(stmt_id) from nt_1 where trans_id= $old_trans_id`;
>     --enable_query_log
>     --error ER_DUP_ENTRY
>     eval INSERT INTO nt_1(trans_id, stmt_id) VALUES ($old_trans_id, $old_stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('Ne')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     let $old_trans_id= `SELECT max(trans_id) from nt_1`;
>     let $old_stmt_id= `SELECT max(stmt_id) from nt_1 where trans_id= $old_trans_id`;
>     --enable_query_log
>     --error ER_DUP_ENTRY
>     eval INSERT INTO nt_1(trans_id, stmt_id) VALUES ($trans_id, $stmt_id),
> ($old_trans_id, $old_stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('Ne-trig')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     let $old_trans_id= `SELECT max(trans_id) from nt_5`;
>     let $old_stmt_id= `SELECT max(stmt_id) from nt_5 where trans_id= $old_trans_id`;
>     --enable_query_log
>     --error ER_DUP_ENTRY, ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
>     eval INSERT INTO nt_5(trans_id, stmt_id) VALUES ($trans_id, $stmt_id),
> ($old_trans_id, $old_stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('Ne-func')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     let $old_trans_id= `SELECT max(trans_id) from nt_5`;
>     let $old_stmt_id= `SELECT max(stmt_id) from nt_5 where trans_id= $old_trans_id`;
>     --enable_query_log
>     --error ER_DUP_ENTRY, ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
>     eval INSERT INTO nt_5(trans_id, stmt_id, info) VALUES ($trans_id, $stmt_id, ''),
> ($old_trans_id, $old_stmt_id, fc_i_nt_5_suc ($trans_id, $stmt_id));
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('Nt')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval INSERT INTO nt_1(trans_id, stmt_id, info) SELECT $trans_id, $stmt_id,
> COUNT(*) FROM tt_1;
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('Net')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     let $old_trans_id= `SELECT max(trans_id) from nt_1`;
>     let $old_stmt_id= `SELECT max(stmt_id) from nt_1 where trans_id= $old_trans_id`;
>     --enable_query_log
>     --error ER_DUP_ENTRY
>     eval INSERT INTO nt_1(trans_id, stmt_id, info) SELECT $trans_id, $stmt_id,
> COUNT(*) FROM tt_1 UNION SELECT $old_trans_id, $old_stmt_id, COUNT(*) FROM tt_1;
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('nT')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval INSERT INTO tt_1(trans_id, stmt_id, info) SELECT $trans_id, $stmt_id,
> COUNT(*) FROM nt_1;
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('nTe')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     let $old_trans_id= `SELECT max(trans_id) from tt_1`;
>     let $old_stmt_id= `SELECT max(stmt_id) from tt_1 where trans_id= $old_trans_id`;
>     --enable_query_log
>     --error ER_DUP_ENTRY
>     eval INSERT INTO tt_1(trans_id, stmt_id, info) SELECT $trans_id, $stmt_id,
> COUNT(*) FROM nt_1 UNION SELECT $old_trans_id, $old_stmt_id, COUNT(*) FROM nt_1;
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('NT')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.info= "new text $trans_id -->
> $stmt_id", nt_4.info= "new text $trans_id --> $stmt_id", tt_3.info= "new text $trans_id
> --> $stmt_id", tt_4.info= "new text $trans_id --> $stmt_id" where nt_3.trans_id =
> nt_4.trans_id and nt_4.trans_id = tt_3.trans_id and tt_3.trans_id = tt_4.trans_id and
> tt_4.trans_id = 1;
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('NT-trig')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval INSERT INTO nt_4(trans_id, stmt_id) VALUES ($trans_id, $stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('NT-func')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval INSERT INTO nt_5(trans_id, stmt_id, info) VALUES ($trans_id, $stmt_id,
> fc_i_tt_5_suc($trans_id, $stmt_id));
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('NeT-trig')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     let $old_trans_id= `SELECT max(trans_id) from nt_4`;
>     let $old_stmt_id= `SELECT max(stmt_id) from nt_4 where trans_id= $old_trans_id`;
>     --enable_query_log
>     --error ER_DUP_ENTRY, ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
>     eval INSERT INTO nt_4(trans_id, stmt_id) VALUES ($trans_id, $stmt_id),
> ($old_trans_id, $old_stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('NeT-func')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     let $old_trans_id= `SELECT max(trans_id) from nt_5`;
>     let $old_stmt_id= `SELECT max(stmt_id) from nt_5 where trans_id= $old_trans_id`;
>     --enable_query_log
>     --error ER_DUP_ENTRY, ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
>     eval INSERT INTO nt_5(trans_id, stmt_id, info) VALUES ($trans_id, $stmt_id, ''),
> ($old_trans_id, $old_stmt_id, fc_i_tt_5_suc ($trans_id, $stmt_id));
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('TN')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.info= "new text $trans_id -->
> $stmt_id", tt_4.info= "new text $trans_id --> $stmt_id", nt_3.info= "new text $trans_id
> --> $stmt_id", nt_4.info= "new text $trans_id --> $stmt_id" where nt_3.trans_id =
> nt_4.trans_id and nt_4.trans_id = tt_3.trans_id and tt_3.trans_id = tt_4.trans_id and
> tt_4.trans_id = 1;
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('TN-trig')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval INSERT INTO tt_3(trans_id, stmt_id) VALUES ($trans_id, $stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('TN-func')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     --enable_query_log
>     eval INSERT INTO tt_5(trans_id, stmt_id, info) VALUES ($trans_id, $stmt_id,
> fc_i_nt_5_suc($trans_id, $stmt_id));
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('TeN-trig')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     let $old_trans_id= `SELECT max(trans_id) from tt_3`;
>     let $old_stmt_id= `SELECT max(stmt_id) from tt_3 where trans_id= $old_trans_id`;
>     --enable_query_log
>     --error ER_DUP_ENTRY, ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
>     eval INSERT INTO tt_3(trans_id, stmt_id) VALUES ($trans_id, $stmt_id),
> ($old_trans_id, $old_stmt_id);
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('TeN-func')`)
>   {
>     --echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
>     let $old_trans_id= `SELECT max(trans_id) from tt_5`;
>     let $old_stmt_id= `SELECT max(stmt_id) from tt_5 where trans_id= $old_trans_id`;
>     --enable_query_log
>     --error ER_DUP_ENTRY, ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
>     eval INSERT INTO tt_5(trans_id, stmt_id, info) VALUES ($trans_id, $stmt_id, ''),
> ($old_trans_id, $old_stmt_id, fc_i_nt_5_suc ($trans_id, $stmt_id));
>     --disable_query_log
>     inc $stmt_id;
>   }
>   if (`SELECT HEX(@command) = HEX('C')`)
>   {
>     --enable_query_log
>     eval COMMIT;
>     --disable_query_log
>   }
>   if (`SELECT HEX(@command) = HEX('R')`)
>   {
>     --enable_query_log
>     eval ROLLBACK;
>     --disable_query_log
>   }
>   if (`SELECT HEX(@command) = HEX('Sp')`)
>   {
>     --enable_query_log
>     eval SAVEPOINT s1; 
>     --disable_query_log
>   }
>   if (`SELECT HEX(@command) = HEX('Rp')`)
>   {
>     --enable_query_log
>     eval ROLLBACK TO s1; 
>     --disable_query_log
>   }
>   if (`SELECT HEX(@command) = HEX('Ce')`)
>   {
>     --enable_query_log
>     eval SET SESSION debug="+d,injecting_fault_flushing";
>     --error ER_ERROR_ON_WRITE
>     eval COMMIT;
>     eval SET SESSION debug="-d,injecting_fault_flushing";
>     --disable_query_log
>   }
>   if (`SELECT HEX(@command) = HEX('Re')`)
>   {
>     --enable_query_log
>     eval SET SESSION debug="+d,injecting_fault_flushing";
>     --error ER_ERROR_ON_WRITE
>     eval ROLLBACK;
>     eval SET SESSION debug="-d,injecting_fault_flushing";
>     --disable_query_log
>   }
>   SET @commands= LTRIM(SUBSTRING(@commands, LENGTH(@command) + 1));
>   inc $stmt_id;
> 
>   let $binlog_start= $pos_command;
>   --source include/show_binlog_events.inc
>   --echo ------------- $command ------------

(S5) I think the output would be slightly more clear if the ----- 
$command ----- that you write after the statement didn't look  like the 
one you write after the statement.

>   if (`SELECT HEX(@commands) = HEX('')`)
>   {

(S5) I think this would become more clear if you wrote

---------------- $commands ---------------

before the show_binlog_events.inc. Here, $commands is the string given 
when rpl_mixing_tables.inc was first included (so you need to do 
something like:

if (`SELECT '$commands' = ''`) {
   --let $commands= `SELECT @commands`
}

near the beginning of the test, and

if (`SELECT '@commands' = '') {
   --let $commands=
}

near the end.

>     let $binlog_start= $pos_trans_command;
>     --source include/show_binlog_events.inc
>     --echo
>     let $pos_trans_command= query_get_value("SHOW MASTER STATUS", Position, 1);
>     let $stmt_id= 1;
>     inc $trans_id;
>   }
>   --enable_query_log
> 
>   --source extra/rpl_tests/rpl_mixing_engines.inc
> }



-- 
Sven Sandberg, Software Engineer
MySQL AB, www.mysql.com

Thread
bzr commit into mysql-pe branch (alfranio.correia:3514) WL#2687 WL#5072Alfranio Correia13 Sep
Re: bzr commit into mysql-pe branch (alfranio.correia:3514) WL#2687WL#5072Sven Sandberg16 Sep
  • Re: bzr commit into mysql-pe branch (alfranio.correia:3514) WL#2687WL#5072Alfranio Correia17 Sep
  • Re: bzr commit into mysql-pe branch (alfranio.correia:3514) WL#2687WL#5072Alfranio Correia20 Sep
    • Re: bzr commit into mysql-pe branch (alfranio.correia:3514) WL#2687WL#5072Sven Sandberg21 Sep
      • Re: bzr commit into mysql-pe branch (alfranio.correia:3514) WL#2687WL#5072Alfranio Correia21 Sep
        • Re: bzr commit into mysql-pe branch (alfranio.correia:3514) WL#2687WL#5072Sven Sandberg23 Sep
          • Re: bzr commit into mysql-pe branch (alfranio.correia:3514) WL#2687WL#5072Alfranio Correia25 Sep
            • Re: bzr commit into mysql-pe branch (alfranio.correia:3514) WL#2687WL#5072Alfranio Correia28 Sep
              • Re: bzr commit into mysql-pe branch (alfranio.correia:3514) WL#2687WL#5072Sven Sandberg28 Sep