From: Date: March 11 2008 9:38am Subject: bk commit into 5.1 tree (knielsen:1.2533) BUG#34208 List-Archive: http://lists.mysql.com/commits/43740 X-Bug: 34208 Message-Id: <1205224715.0@ymer> Below is the list of changes that have just been committed into a local 5.1 repository of knielsen. When knielsen does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository. For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html ChangeSet@stripped, 2008-03-11 09:38:25+01:00, knielsen@ymer.(none) +1 -0 BUG#34208: Corrupt unique hash index creation due to Intel compiler bug on ia64. Looks like the Intel compiler on ia64 miscompiles post-increments in complex array expressions. This caused unique hash index creation to build a completely wrong index due to using values from the wrong column. Worked-around by moving the increment to a separate statement. storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp@stripped, 2008-03-11 09:38:21+01:00, knielsen@ymer.(none) +6 -1 BUG#34208: Corrupt unique hash index creation due to Intel compiler bug on ia64. Looks like the Intel compiler on ia64 miscompiles post-increments in complex array expressions. This caused unique hash index creation to build a completely wrong index due to using values from the wrong column. Worked-around by moving the increment to a separate statement. diff -Nrup a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp --- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp 2008-01-04 11:34:21 +01:00 +++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp 2008-03-11 09:38:21 +01:00 @@ -13747,7 +13747,12 @@ Dbdict::getIndexAttrList(TableRecordPtr AttributeRecordPtr tempPtr = attrPtr; if (! alist.next(tempPtr)) break; - getIndexAttr(indexPtr, attrPtr.i, &list.id[list.sz++]); + /** + * Post-increment moved out of original expression &list.id[list.sz++] + * due to Intel compiler bug on ia64 (BUG#34208). + */ + getIndexAttr(indexPtr, attrPtr.i, &list.id[list.sz]); + list.sz++; } ndbrequire(indexPtr.p->noOfAttributes == list.sz + 1); }