#  WL#5096
#  
#  Description 
#  ===========
#
#  This test case checks replication between hosts with same index
#  structure but may differ on engines.
#
#  Usage
#  =====
#
#  Before including this file the following variables should be set:
#    * $server_1_engine
#    * $server_2_engine
#    * $server_3_engine
#
#  Example:
#
#     -- let $server_1_engine= Falcon
#     -- let $server_2_engine= MyISAM
#     -- let $server_3_engine= InnoDB
#
#     -- source extra/rpl_tests/rpl_row_img.test
# 

-- connection server_1

-- let $diff_table=test.t

let $i= 12;
while($i)
{
  let $step= "";

  -- connection server_1
  SET SQL_LOG_BIN=0;

  -- connection server_2
  SET SQL_LOG_BIN=0;

  -- connection server_3
  SET SQL_LOG_BIN=0;

  if ($i == 1) {
    let $step= No keys;
    --echo ******* TEST: $step
    -- connection server_1
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= $server_1_engine;
    -- connection server_2
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= $server_2_engine;
    -- connection server_3
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= $server_3_engine;

  }
  if ($i == 2)
  { 
    let $step= One key;
    --echo ******* TEST: $step
    -- connection server_1
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= $server_1_engine;
    -- connection server_2
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= $server_2_engine;
    -- connection server_3
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= $server_3_engine;

  }
  if ($i == 3)
  {
    let $step= One Composite key;
    --echo ****** TEST: $step
    -- connection server_1
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= $server_1_engine;
    -- connection server_2
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= $server_2_engine;
    -- connection server_3
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= $server_3_engine;
  }  
  if ($i == 4)
  {
    let $step= One Unique key;
    --echo ****** TEST: $step
    -- connection server_1
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= $server_1_engine;
    -- connection server_2
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= $server_2_engine;
    -- connection server_3
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= $server_3_engine;

  }  
  if ($i == 5)
  {
    let $step= One Composite Unique key;
    --echo ****** TEST: $step
    -- connection server_1
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= $server_1_engine;
    -- connection server_2
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= $server_2_engine;
    -- connection server_3
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= $server_3_engine;

  }  
  if ($i == 6)
  {
    let $step= One Primary key;
    --echo ****** TEST: $step
    -- connection server_1
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= $server_1_engine;
    -- connection server_2
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= $server_2_engine;
    -- connection server_3
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= $server_3_engine;
  }  
  if ($i == 7)
  {
    let $step= One Composite Primary Key;
    --echo ****** TEST: $step
    -- connection server_1
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= $server_1_engine;
    -- connection server_2
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= $server_2_engine;
    -- connection server_3
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= $server_3_engine;
  } 
  if ($i == 8)
  {
    let $step= One Composite key with holes;
    --echo ****** TEST: $step
    -- connection server_1
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= $server_1_engine;
    -- connection server_2
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= $server_2_engine;
    -- connection server_3
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= $server_3_engine;
  }  
  if ($i == 9)
  {
    let $step= One Composite Unique key with holes;
    --echo ****** TEST: $step
    -- connection server_1
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= $server_1_engine;
    -- connection server_2
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= $server_2_engine;
    -- connection server_3
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= $server_3_engine;
  }  
  if ($i == 10)
  {
    let $step= One Composite Primary Key with holes;
    --echo ****** TEST: $step
    -- connection server_1
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= $server_1_engine;
    -- connection server_2
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= $server_2_engine;
    -- connection server_3
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= $server_3_engine;
  } 
  if ($i == 11)
  {
    let $step= One Composite NOT NULL Unique key with holes;
    --echo ****** TEST: $step
    -- connection server_1
    --eval CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= $server_1_engine;
    -- connection server_2
    --eval CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= $server_2_engine;
    -- connection server_3
    --eval CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= $server_3_engine;
  }  
  if ($i == 12)
  {
    let $step= One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave;
    --echo ****** TEST: $step
    -- connection server_1
    --eval CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= $server_1_engine;
    -- connection server_2
    --eval CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= $server_2_engine;
    -- connection server_3
    --eval CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= $server_3_engine;
  }  

  -- connection server_1
  SET SQL_LOG_BIN=1;

  -- connection server_2
  SET SQL_LOG_BIN=1;

  -- connection server_3
  SET SQL_LOG_BIN=1;

  -- connection server_1
  INSERT INTO t VALUES (1, '1', '1', '1' );
  INSERT INTO t VALUES (4, '4', '4', '4' );
  INSERT INTO t VALUES (7, '7', '7', '7' );

  INSERT INTO t VALUES (9, '9', '9', NULL );

  INSERT INTO t VALUES (2, '1', '2', '2' );
  INSERT INTO t VALUES (3, '1', '3', '2' );
 
  -- source include/rpl_sync.inc

  -- connection server_1
  UPDATE t SET c4 = '7';

  UPDATE t SET c4 = '5' WHERE c1 = 1;
  UPDATE t SET c2 = '5' WHERE c1 = 1;
  UPDATE t SET c1 = '5' WHERE c1 = 1;

  UPDATE t SET c4 = '8' WHERE c2 = '4';
  UPDATE t SET c1 = '8' WHERE c2 = '4';
  UPDATE t SET c2 = '8' WHERE c2 = '4';

  UPDATE t SET c3 = '0' WHERE c4 = NULL;
  UPDATE t SET c2 = '0' WHERE c4 = '0';

  UPDATE t SET c2 = '2' WHERE c4 = '2';

  -- source include/rpl_sync.inc

  -- let $diff_tables= server_1:$diff_table, server_2:$diff_table, server_3:$diff_table
  -- source include/diff_tables.inc


  -- connection server_1

  DELETE FROM t WHERE c1 = 7;
  DELETE FROM t WHERE c1 = 8;
  DELETE FROM t;

  -- source include/rpl_sync.inc

  -- let $diff_tables= server_1:$diff_table, server_2:$diff_table, server_3:$diff_table
  -- source include/diff_tables.inc

  -- connection server_1

  DROP TABLE t;

  -- source include/rpl_sync.inc

  dec $i;
}
