Bug #53622 null bitmask read incorrectly in mysqlbinlog
Submitted: 13 May 2010 17:02 Modified: 24 May 2010 22:36
Reporter: Andrew Hutchings 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

[13 May 2010 17:02] Andrew Hutchings
Description:
Some cluster events appear to be written with an off-by-one when BIGINT column type is used.

How to repeat:
.
[24 May 2010 21:45] Andrew Hutchings
I think I found the problem, in ha_ndbcluster.cc:

#ifdef WORDS_BIGENDIAN
            /* lsw is stored first */
            Uint32 *buf= (Uint32 *)(*value).rec->aRef();
            field_bit->Field_bit::store((((longlong)*buf)
                                         & 0x000000000FFFFFFFFLL)
                                        |
                                        ((((longlong)*(buf+1)) << 32)
                                         & 0xFFFFFFFF00000000LL),
                                        TRUE);
#else

The first byte mask is one byte too long (has an extra 0 in it).  This would logically cause the corruption we are seeing.
[24 May 2010 21:58] Andrew Hutchings
ignore me, that is bit field processing (although still may be an unrelated bug)