List:Commits« Previous MessageNext Message »
From:Jonas Oreland Date:October 27 2009 12:12pm
Subject:bzr push into mysql-5.1-telco-7.1 branch (jonas:3117 to 3119)
View as plain text  
 3119 Jonas Oreland	2009-10-27 [merge]
      merge 70 to 71

    modified:
      storage/ndb/include/util/Bitmask.hpp
      storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp
      storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp
      storage/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp
 3118 Jonas Oreland	2009-10-27 [merge]
      merge 70 to 71

    modified:
      storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp
      storage/ndb/test/ndbapi/testDict.cpp
 3117 Jonas Oreland	2009-10-27 [merge]
      merge 70 to 71

    modified:
      storage/ndb/src/kernel/blocks/ERROR_codes.txt
      storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
      storage/ndb/test/ndbapi/testSystemRestart.cpp
=== modified file 'storage/ndb/include/util/Bitmask.hpp'
--- a/storage/ndb/include/util/Bitmask.hpp	2009-06-06 12:01:09 +0000
+++ b/storage/ndb/include/util/Bitmask.hpp	2009-10-27 12:08:44 +0000
@@ -183,6 +183,9 @@ public:
    */
   static int parseMask(unsigned size, Uint32 data[], const char * str);
 
+  /* Fast bit counting (16 instructions on x86_64, gcc -O3). */
+  static inline Uint32 count_bits(Uint32 x);
+
 private:
   static void getFieldImpl(const Uint32 data[], unsigned, unsigned, Uint32 []);
   static void setFieldImpl(Uint32 data[], unsigned, unsigned, const Uint32 []);
@@ -325,11 +328,7 @@ BitmaskImpl::count(unsigned size, const 
 {
   unsigned cnt = 0;
   for (unsigned i = 0; i < size; i++) {
-    Uint32 x = data[i];
-    while (x) {
-      x &= (x - 1);
-      cnt++;
-    }
+    cnt += count_bits(data[i]);
   }
   return cnt;
 }
@@ -449,6 +448,17 @@ BitmaskImpl::getText(unsigned size, cons
   return org;
 }
 
+inline
+Uint32
+BitmaskImpl::count_bits(Uint32 x)
+{
+  x= x - ((x>>1) & 0x55555555);
+  x= (x & 0x33333333) + ((x>>2) & 0x33333333);
+  x= (x + (x>>4)) & 0x0f0f0f0f;
+  x= (x*0x01010101) >> 24;
+  return x;
+}
+
 /**
  * Bitmasks.  The size is number of 32-bit words (Uint32).
  * Unused bits in the last word must be zero.

=== modified file 'storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp	2009-10-16 06:30:30 +0000
+++ b/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp	2009-10-27 11:40:14 +0000
@@ -8004,6 +8004,9 @@ void Dbdih::execALTER_TAB_REQ(Signal * s
 
     connectPtr.i = req->connectPtr;
     ptrCheckGuard(connectPtr, cconnectFileSize, connectRecord);
+
+    ndbrequire(connectPtr.p->connectState == ConnectRecord::ALTER_TABLE);
+
     connectPtr.p->userpointer = senderData;
     connectPtr.p->userblockref = senderRef;
 
@@ -8120,6 +8123,10 @@ void Dbdih::execALTER_TAB_REQ(Signal * s
       ndbrequire(tabPtr.p->totalfragments == save);
       ndbrequire(connectPtr.p->m_alter.m_org_totalfragments == save);
       send_alter_tab_ref(signal, tabPtr, connectPtr, err);
+
+      ndbrequire(tabPtr.p->connectrec == connectPtr.i);
+      tabPtr.p->connectrec = RNIL;
+      release_connect(connectPtr);
       return;
     }
 
@@ -8345,10 +8352,6 @@ Dbdih::send_alter_tab_ref(Signal* signal
   ref->errorCode = errCode;
   sendSignal(connectPtr.p->userblockref, GSN_ALTER_TAB_REF, signal,
              AlterTabRef::SignalLength, JBB);
-
-  ndbrequire(tabPtr.p->connectrec == connectPtr.i);
-  tabPtr.p->connectrec = RNIL;
-  release_connect(connectPtr);
 }
 
 void
@@ -8429,7 +8432,7 @@ Dbdih::drop_fragments(Signal* signal, Pt
     jam();
     Ptr<TabRecord> tabPtr;
     tabPtr.i = connectPtr.p->table;
-    ptrAss(tabPtr, tabRecord);
+    ptrCheckGuard(tabPtr, ctabFileSize, tabRecord);
 
     Uint32 new_frags = connectPtr.p->m_alter.m_totalfragments;
     Uint32 org_frags = connectPtr.p->m_alter.m_org_totalfragments;
@@ -8448,6 +8451,8 @@ Dbdih::drop_fragments(Signal* signal, Pt
       ndbrequire(tabPtr.p->tabCopyStatus == TabRecord::CS_ALTER_TABLE);
       tabPtr.p->tabCopyStatus = TabRecord::CS_IDLE;
       send_alter_tab_ref(signal, tabPtr, connectPtr, ~0);
+
+      connectPtr.p->connectState = ConnectRecord::ALTER_TABLE;
       return;
     }
     case ConnectRecord::ALTER_TABLE_REVERT:

=== modified file 'storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp'
--- a/storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp	2009-10-20 16:11:14 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp	2009-10-27 12:11:34 +0000
@@ -2432,16 +2432,6 @@ public:
   Uint32 read_lcp_keys(Uint32, const Uint32 * src, Uint32 len, Uint32 *dst);
 private:
 
-  /* Fast bit counting (16 instructions on x86_64, gcc -O3). */
-  static inline Uint32 count_bits(Uint32 x)
-  {
-    x= x - ((x>>1) & 0x55555555);
-    x= (x & 0x33333333) + ((x>>2) & 0x33333333);
-    x= (x + (x>>4)) & 0x0f0f0f0f;
-    x= (x*0x01010101) >> 24;
-    return x;
-  }
-
 //------------------------------------------------------------------
 //------------------------------------------------------------------
   void setUpQueryRoutines(Tablerec* regTabPtr);

=== modified file 'storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp'
--- a/storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp	2009-10-23 13:01:47 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp	2009-10-27 12:11:34 +0000
@@ -3310,7 +3310,7 @@ Dbtup::shrink_tuple(KeyReqStruct* req_st
         for(Uint16 i= 0; i< bm_len; i++)
         {
           Uint32 v= src_bm_ptr[i];
-          dyn_var_count+= count_bits(v & *dyn_bm_var_mask_ptr++);
+          dyn_var_count+= BitmaskImpl::count_bits(v & *dyn_bm_var_mask_ptr++);
           dst_bm_ptr[i]= v;
         }
         

=== modified file 'storage/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp'
--- a/storage/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp	2009-09-04 11:33:38 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp	2009-10-27 12:08:44 +0000
@@ -921,9 +921,9 @@ Dbtup::readDynFixedSizeShrunkenNotNULL(U
   Uint32 *bm_mask_ptr= regTabPtr->dynFixSizeMask;
   Uint32 bm_pos= AttributeOffset::getNullFlagOffset(attrDes2);
   Uint32 prevMask= (1 << (pos & 31)) - 1;
-  Uint32 bit_count= count_bits(prevMask & bm_mask_ptr[bm_pos] & bm_ptr[bm_pos]);
+  Uint32 bit_count= BitmaskImpl::count_bits(prevMask & bm_mask_ptr[bm_pos] & bm_ptr[bm_pos]);
   for(Uint32 i=0; i<bm_pos; i++)
-    bit_count+= count_bits(bm_mask_ptr[i] & bm_ptr[i]);
+    bit_count+= BitmaskImpl::count_bits(bm_mask_ptr[i] & bm_ptr[i]);
 
   /* Now compute the data pointer from the row length. */
   Uint32 attr_descriptor= req_struct->attr_descriptor;
@@ -1067,9 +1067,9 @@ Dbtup::readDynBigFixedSizeShrunkenNotNUL
   Uint32 *bm_mask_ptr= regTabPtr->dynVarSizeMask;
   Uint32 bm_pos= AttributeOffset::getNullFlagOffset(attrDes2);
   Uint32 prevMask= (1 << (pos & 31)) - 1;
-  Uint32 bit_count= count_bits(prevMask & bm_mask_ptr[bm_pos] & bm_ptr[bm_pos]);
+  Uint32 bit_count= BitmaskImpl::count_bits(prevMask & bm_mask_ptr[bm_pos] & bm_ptr[bm_pos]);
   for(Uint32 i=0; i<bm_pos; i++)
-    bit_count+= count_bits(bm_mask_ptr[i] & bm_ptr[i]);
+    bit_count+= BitmaskImpl::count_bits(bm_mask_ptr[i] & bm_ptr[i]);
 
   /* Now find the data pointer and length from the offset array. */
   Uint32 attr_descriptor= req_struct->attr_descriptor;
@@ -1318,9 +1318,9 @@ Dbtup::readDynVarSizeShrunkenNotNULL(Uin
   Uint32 *bm_mask_ptr= regTabPtr->dynVarSizeMask;
   Uint32 bm_pos= AttributeOffset::getNullFlagOffset(attrDes2);
   Uint32 prevMask= (1 << (pos & 31)) - 1;
-  Uint32 bit_count= count_bits(prevMask & bm_mask_ptr[bm_pos] & bm_ptr[bm_pos]);
+  Uint32 bit_count= BitmaskImpl::count_bits(prevMask & bm_mask_ptr[bm_pos] & bm_ptr[bm_pos]);
   for(Uint32 i=0; i<bm_pos; i++)
-    bit_count+= count_bits(bm_mask_ptr[i] & bm_ptr[i]);
+    bit_count+= BitmaskImpl::count_bits(bm_mask_ptr[i] & bm_ptr[i]);
 
   /* Now find the data pointer and length from the offset array. */
   //Uint16* offset_array = req_struct->m_var_data[MM].m_dyn_offset_arr_ptr;

=== modified file 'storage/ndb/test/ndbapi/testDict.cpp'
--- a/storage/ndb/test/ndbapi/testDict.cpp	2009-10-16 07:15:21 +0000
+++ b/storage/ndb/test/ndbapi/testDict.cpp	2009-10-27 11:40:14 +0000
@@ -1977,7 +1977,7 @@ int runFailAddFragment(NDBT_Context* ctx
       int errval = acclst[j];
       if (errNo != 0 && errNo != errval)
         continue;
-      g_info << "insert error node=" << nodeId << " value=" << errval << endl;
+      g_err << "insert error node=" << nodeId << " value=" << errval << endl;
       CHECK(restarter.dumpStateAllNodes(&dump1, 1) == 0);
       CHECK2(restarter.insertErrorInNode(nodeId, errval) == 0,
              "failed to set error insert");
@@ -1996,7 +1996,7 @@ int runFailAddFragment(NDBT_Context* ctx
       int errval = tuplst[j];
       if (errNo != 0 && errNo != errval)
         continue;
-      g_info << "insert error node=" << nodeId << " value=" << errval << endl;
+      g_err << "insert error node=" << nodeId << " value=" << errval << endl;
       CHECK(restarter.dumpStateAllNodes(&dump1, 1) == 0);
       CHECK2(restarter.insertErrorInNode(nodeId, errval) == 0,
              "failed to set error insert");
@@ -2018,7 +2018,7 @@ int runFailAddFragment(NDBT_Context* ctx
       CHECK2(pDic->createTable(tab) == 0,
              pDic->getNdbError());
 
-      g_info << "insert error node=" << nodeId << " value=" << errval << endl;
+      g_err << "insert error node=" << nodeId << " value=" << errval << endl;
       CHECK(restarter.dumpStateAllNodes(&dump1, 1) == 0);
       CHECK2(restarter.insertErrorInNode(nodeId, errval) == 0,
              "failed to set error insert");
@@ -6761,7 +6761,7 @@ runFailAddPartition(NDBT_Context* ctx, N
       int errval = lst[j];
       if (errNo != 0 && errNo != errval)
         continue;
-      g_info << "insert error node=" << nodeId << " value=" << errval << endl;
+      g_err << "insert error node=" << nodeId << " value=" << errval << endl;
       CHECK(restarter.dumpStateAllNodes(&dump1, 1) == 0);
       CHECK2(restarter.insertErrorInNode(nodeId, errval) == 0,
              "failed to set error insert");
@@ -7247,6 +7247,15 @@ runBug46585(NDBT_Context* ctx, NDBT_Step
     {
       ndbout << pDic->getNdbError() << endl;
     }
+    if (pDic->getNdbError().code == 1224)
+    {
+      /**
+       * To many fragments is an acceptable error
+       *   depending on configuration used for test-case
+       */
+      result = NDBT_OK;
+      goto end;
+    }
     CHECK2(result == 0,
            "failed to alter");
 
@@ -7272,6 +7281,7 @@ runBug46585(NDBT_Context* ctx, NDBT_Step
       if (res.getNumDbNodes() > 1)
       {
         int nodeId = res.getNode(NdbRestarter::NS_RANDOM);
+        ndbout_c("performing node-restart of node %d", nodeId);
         CHECK2(res.restartOneDbNode(nodeId,
                                     false,
                                     true,
@@ -7285,6 +7295,7 @@ runBug46585(NDBT_Context* ctx, NDBT_Step
       }
     case 1:
     {
+      ndbout_c("performing system restart");
       CHECK2(res.restartAll(false, true, false) == 0,
              "restart all failed");
       CHECK2(res.waitClusterNoStart() == 0,


Attachment: [text/bzr-bundle] bzr/jonas@mysql.com-20091027121134-l89av9t0173veogl.bundle
Thread
bzr push into mysql-5.1-telco-7.1 branch (jonas:3117 to 3119)Jonas Oreland27 Oct