=== modified file 'mysql-test/suite/ndb/r/ndb_insert.result'
--- a/mysql-test/suite/ndb/r/ndb_insert.result	2008-09-19 10:56:53 +0000
+++ b/mysql-test/suite/ndb/r/ndb_insert.result	2008-09-29 16:21:47 +0000
@@ -429,7 +429,7 @@
 INSERT INTO t1 VALUES 
 (-1,-1,-1),(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
 (6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10),(9999,9999,9999);
-ERROR 23000: Can't write; duplicate key in table 't1'
+ERROR 23000: Can't write; duplicate key in table ''
 select count(*) from t1;
 count(*)
 2000

=== modified file 'sql/ha_ndbcluster.cc'
--- a/sql/ha_ndbcluster.cc	2008-09-24 15:01:01 +0000
+++ b/sql/ha_ndbcluster.cc	2008-09-29 18:31:39 +0000
@@ -536,12 +536,20 @@
                    int force_send, int ignore_error, uint *ignore_count)
 {
   DBUG_ENTER("execute_commit");
+  NdbOperation::AbortOption ao= NdbOperation::AO_IgnoreError;
+  if (thd_ndb->m_unsent_bytes && !ignore_error)
+  {
+    /*
+      We have unsent bytes and cannot ignore error.  Calling execute
+      with NdbOperation::AO_IgnoreError will result in possible commit
+      of a transaction although there is an error.
+    */
+    ao= NdbOperation::AbortOnError;
+  }
   const NdbOperation *first= trans->getFirstDefinedOperation();
   thd_ndb->m_execute_count++;
   DBUG_PRINT("info", ("execute_count: %u", thd_ndb->m_execute_count));
-  if (trans->execute(NdbTransaction::Commit,
-                     NdbOperation::AO_IgnoreError,
-                     force_send))
+  if (trans->execute(NdbTransaction::Commit, ao, force_send))
   {
     thd_ndb->m_max_violation_count= 0;
     thd_ndb->m_old_violation_count= 0;

=== modified file 'storage/ndb/src/ndbapi/NdbInterpretedCode.cpp'
--- a/storage/ndb/src/ndbapi/NdbInterpretedCode.cpp	2008-05-22 16:22:34 +0000
+++ b/storage/ndb/src/ndbapi/NdbInterpretedCode.cpp	2008-09-29 18:26:36 +0000
@@ -666,17 +666,21 @@
   int res= 0;
   if ((res= read_attr(6, attrId) != 0))
     return res;
-  
+
   /* Load constant into register 7 */
   /* We attempt to use the smallest constant load
    * instruction
    */
   if (aValue < (1 << 16))
+  {
     if ((res= load_const_u16(7, aValue)) != 0)
       return res;   
+  }
   else
+  {
     if ((res= load_const_u32(7, aValue)) != 0)
       return res;
+  }
 
   /* Add registers 6 and 7 -> 7*/
   if ((res= add_reg(7, 6, 7)) != 0)
@@ -700,6 +704,7 @@
    * instruction
    */
   if ((aValue >> 32) == 0)
+  {
     if (aValue < (1 << 16))
     {
       if ((res= load_const_u16(7, aValue)) != 0)
@@ -710,6 +715,7 @@
       if ((res= load_const_u32(7, aValue)) != 0)
         return res;
     }
+  }
   else
     if ((res= load_const_u64(7, aValue)) != 0)
       return res;
@@ -717,7 +723,7 @@
   /* Add registers 6 and 7 -> 7*/
   if ((res= add_reg(7, 6, 7)) != 0)
     return res;
-
+  
   /* Write back */
   return write_attr(attrId, 7);
 }
@@ -736,11 +742,15 @@
    * instruction
    */
   if (aValue < (1 << 16))
+  {
     if ((res= load_const_u16(7, aValue)) != 0)
-      return res;   
+      return res;
+  }   
   else
+  {
     if ((res= load_const_u32(7, aValue)) != 0)
       return res;
+  }
 
   /* Subtract register (R7=R6-R7)*/
   if ((res= sub_reg(7, 6, 7)) != 0)
@@ -764,6 +774,7 @@
    * instruction
    */
   if ((aValue >> 32) == 0)
+  {
     if (aValue < (1 << 16))
     {
       if ((res= load_const_u16(7, aValue)) != 0)
@@ -774,9 +785,12 @@
       if ((res= load_const_u32(7, aValue)) != 0)
         return res;
     }
+  }
   else
+  {
     if ((res= load_const_u64(7, aValue)) != 0)
       return res;
+  }
 
   /* Subtract register (R7=R6-R7)*/
   if ((res= sub_reg(7, 6, 7)) != 0)


