Bug #33440 Conflict info not correct with wrong column type in exception table
Submitted: 21 Dec 2007 5:51 Modified: 3 Apr 2008 14:03
Reporter: li zhou Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Cluster: Replication Severity:S3 (Non-critical)
Version:mysql-5.1-telco-6.3 OS:Any
Assigned to: CPU Architecture:Any
Tags: 5.1.22-ndb-6.3.7
Triage: Triaged: D3 (Medium)

[21 Dec 2007 5:51] li zhou
Description:
Conflict info didn't write into exception table for “Same timestamp wins” conflict resolution if we create exception table with wrong column type.

How to repeat:
1: Create exception like:
create table `test`.`t1$EX`
  (
   server_id tinyint,
   master_server_id int unsigned,
   master_epoch bigint unsigned,
   count int unsigned,
   a int not null,
   d varchar(9) not null,
   primary key(server_id, master_server_id, master_epoch, count)) engine ndb;

2: run MTR 
  ./mysql-test-run.pl --do-test=rpl_ndb_conflict_old

3: Got wrong conflict info
*** slave - check conflict info, change depends on calling test
SELECT VARIABLE_VALUE-@init_ndb_conflict_fn_max FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME LIKE "NDB_CONFL
ICT_FN_MAX";
VARIABLE_VALUE-@init_ndb_conflict_fn_max
0
SELECT VARIABLE_VALUE-@init_ndb_conflict_fn_old FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME LIKE "NDB_CONFL
ICT_FN_OLD";
VARIABLE_VALUE-@init_ndb_conflict_fn_old
5
SELECT * FROM `t1$EX` ORDER BY server_id, master_server_id, master_epoch, count;
server_id       master_server_id        master_epoch    count   a       d
SELECT * FROM `t1$EX` ORDER BY a, d;
server_id       master_server_id        master_epoch    count   a       d
SELECT * FROM `t2$EX` ORDER BY server_id, master_server_id, master_epoch, count;
SELECT * FROM `t2$EX` ORDER BY a, d;

Suggested fix:
Check the type of required columns.
[21 Dec 2007 6:17] li zhou
Conflict into also not correct if the type of original_table_pk_columns is not the same with test table,
[3 Apr 2008 14:03] Sveta Smirnova
Thank you for the report.

Verified as described.