List:Commits« Previous MessageNext Message »
From:knielsen Date:March 11 2008 9:38am
Subject:bk commit into 5.1 tree (knielsen:1.2533) BUG#34208
View as plain text  
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);
 }
Thread
bk commit into 5.1 tree (knielsen:1.2533) BUG#34208knielsen11 Mar