List:Commits« Previous MessageNext Message »
From:pekka Date:January 26 2007 5:18pm
Subject:bk commit into 5.1 tree (pekka:1.2398)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of pekka. When pekka 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, 2007-01-26 17:18:31+01:00, pekka@stripped +10 -0
  ndb - wl#3600 sub-op feedback at parse
  avoids ugly special-case code at trigger parse

  storage/ndb/include/kernel/signaldata/CreateTrig.hpp@stripped, 2007-01-26 17:17:21+01:00,
pekka@stripped +2 -1
    wl#3600 sub-op feedback at parse

  storage/ndb/include/kernel/signaldata/CreateTrigImpl.hpp@stripped, 2007-01-26 17:17:21+01:00,
pekka@stripped +2 -1
    wl#3600 sub-op feedback at parse

  storage/ndb/include/kernel/signaldata/DropTrig.hpp@stripped, 2007-01-26 17:17:21+01:00,
pekka@stripped +2 -1
    wl#3600 sub-op feedback at parse

  storage/ndb/include/kernel/signaldata/DropTrigImpl.hpp@stripped, 2007-01-26 17:17:21+01:00,
pekka@stripped +2 -1
    wl#3600 sub-op feedback at parse

  storage/ndb/src/common/debugger/signaldata/CreateTrig.cpp@stripped, 2007-01-26
17:17:21+01:00, pekka@stripped +1 -0
    wl#3600 sub-op feedback at parse

  storage/ndb/src/common/debugger/signaldata/CreateTrigImpl.cpp@stripped, 2007-01-26
17:17:21+01:00, pekka@stripped +1 -0
    wl#3600 sub-op feedback at parse

  storage/ndb/src/common/debugger/signaldata/DropTrig.cpp@stripped, 2007-01-26 17:17:21+01:00,
pekka@stripped +1 -0
    wl#3600 sub-op feedback at parse

  storage/ndb/src/common/debugger/signaldata/DropTrigImpl.cpp@stripped, 2007-01-26
17:17:21+01:00, pekka@stripped +1 -0
    wl#3600 sub-op feedback at parse

  storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp@stripped, 2007-01-26 17:17:21+01:00,
pekka@stripped +143 -29
    wl#3600 sub-op feedback at parse

  storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp@stripped, 2007-01-26 17:17:21+01:00,
pekka@stripped +51 -1
    wl#3600 sub-op feedback at parse

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	pekka
# Host:	clam.(none)
# Root:	/export/space/pekka/ndb/version/my52-wl3600-b

--- 1.7/storage/ndb/include/kernel/signaldata/CreateTrig.hpp	2007-01-20 13:13:49 +01:00
+++ 1.8/storage/ndb/include/kernel/signaldata/CreateTrig.hpp	2007-01-26 17:17:21 +01:00
@@ -41,7 +41,7 @@
     CreateTriggerOffline = 2
   };
 
-  STATIC_CONST( SignalLength = 11 + MAXNROFATTRIBUTESINWORDS);
+  STATIC_CONST( SignalLength = 12 + MAXNROFATTRIBUTESINWORDS);
   SECTION( TRIGGER_NAME_SECTION = 0 );
   SECTION( ATTRIBUTE_MASK_SECTION = 1 );        // not yet in use
   enum xxxKeyValues {//wl3600_todo use DictTabInfo
@@ -57,6 +57,7 @@
   Uint32 tableVersion;
   Uint32 indexId;       // only for index trigger
   Uint32 indexVersion;
+  Uint32 triggerNo;     // only for index trigger
   Uint32 triggerInfo;   // type | timing | event | flags
   Uint32 receiverRef;   // receiver for subscription trigger
   AttributeMask attributeMask;

--- 1.3/storage/ndb/include/kernel/signaldata/DropTrig.hpp	2007-01-17 15:21:23 +01:00
+++ 1.4/storage/ndb/include/kernel/signaldata/DropTrig.hpp	2007-01-26 17:17:21 +01:00
@@ -33,7 +33,7 @@
     RT_TC = 5 << 8,
     RT_LQH = 6 << 8
   };
-  STATIC_CONST( SignalLength = 10 );
+  STATIC_CONST( SignalLength = 11 );
   SECTION( TRIGGER_NAME_SECTION = 0 ); // optional
   enum xxxKeyValues {//wl3600_todo use DictTabInfo
     TriggerNameKey = 0xa1
@@ -48,6 +48,7 @@
   Uint32 tableVersion;
   Uint32 indexId;
   Uint32 indexVersion;
+  Uint32 triggerNo;
   Uint32 triggerId;
 };
 

--- 1.5/storage/ndb/src/common/debugger/signaldata/CreateTrig.cpp	2007-01-16 12:39:53
+01:00
+++ 1.6/storage/ndb/src/common/debugger/signaldata/CreateTrig.cpp	2007-01-26 17:17:21
+01:00
@@ -43,6 +43,7 @@
   fprintf(output, " tableVersion: %x", sig->tableVersion);
   fprintf(output, " indexId: %x", sig->indexId);
   fprintf(output, " indexVersion: %x", sig->indexVersion);
+  fprintf(output, " triggerNo: %u", sig->triggerNo);
   fprintf(output, "\n");
   fprintf(output, " triggerInfo: %x", sig->triggerInfo);
   fprintf(output, "\n");

--- 1.3/storage/ndb/src/common/debugger/signaldata/DropTrig.cpp	2007-01-17 15:21:23 +01:00
+++ 1.4/storage/ndb/src/common/debugger/signaldata/DropTrig.cpp	2007-01-26 17:17:21 +01:00
@@ -30,6 +30,7 @@
   fprintf(output, " tableVersion: %x", sig->tableVersion);
   fprintf(output, " indexId: %x", sig->indexId);
   fprintf(output, " indexVersion: %x", sig->indexVersion);
+  fprintf(output, " triggerNo: %u", sig->triggerNo);
   fprintf(output, "\n");
   fprintf(output, " triggerId: %x", sig->triggerId);
   fprintf(output, "\n");

--- 1.140/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp	2007-01-25 16:20:19 +01:00
+++ 1.141/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp	2007-01-26 17:17:21 +01:00
@@ -1975,13 +1975,19 @@
   tablePtr.p->primaryTableId = RNIL;
   // volatile elements
   tablePtr.p->indexState = TableRecord::IS_UNDEFINED;
+  // wl3600_todo out
   tablePtr.p->insertTriggerId = RNIL;
   tablePtr.p->updateTriggerId = RNIL;
   tablePtr.p->deleteTriggerId = RNIL;
   tablePtr.p->customTriggerId = RNIL;
+  //
+  tablePtr.p->indexTriggerId[0] = RNIL;
+  tablePtr.p->indexTriggerId[1] = RNIL;
+  tablePtr.p->indexTriggerId[2] = RNIL;
+  tablePtr.p->indexTriggerCount = 0;
   tablePtr.p->buildTriggerId = RNIL;
   tablePtr.p->indexLocal = 0;
-}//Dbdict::initialiseTableRecord()
+}
 
 void Dbdict::initTriggerRecords()
 {
@@ -13268,7 +13274,7 @@
     setError(error, AlterIndxRef::NotAnIndex, __LINE__);
     return;
   }
-  alterIndexPtr.p->m_triggerNo = 0; // also in ctor
+  alterIndexPtr.p->m_triggerIndex = 0; // also in ctor
 
   if (reference() == impl_req->senderRef) {
     impl_req->indexType = indexPtr.p->tableType;
@@ -13330,12 +13336,14 @@
   const AlterIndxImplReq* impl_req = &alterIndexPtr.p->m_request;
 
   // ops to create or drop triggers
-  if (alterIndexPtr.p->m_triggerNo < alterIndexPtr.p->m_triggerCount) {
+  if (alterIndexPtr.p->m_triggerIndex < alterIndexPtr.p->m_triggerCount) {
     jam();
     switch (impl_req->requestType) {
     case AlterIndxImplReq::AlterIndexOnline:
       jam();
       {
+        alterIndexPtr.p->m_triggerNo =
+          alterIndexPtr.p->m_triggerIndex;
         Callback c = {
           safe_cast(&Dbdict::alterIndex_fromCreateTrigger),
           op_ptr.p->op_key
@@ -13347,6 +13355,9 @@
     case AlterIndxImplReq::AlterIndexOffline:
       jam();
       {
+        alterIndexPtr.p->m_triggerNo =
+          alterIndexPtr.p->m_triggerCount - 1 -
+          alterIndexPtr.p->m_triggerIndex;
         Callback c = {
           safe_cast(&Dbdict::alterIndex_fromDropTrigger),
           op_ptr.p->op_key
@@ -13361,6 +13372,8 @@
     }
     return true;
   }
+  ndbrequire(alterIndexPtr.p->m_triggerIndex ==
+             alterIndexPtr.p->m_triggerCount);
 
   if (impl_req->requestType == AlterIndxImplReq::AlterIndexOnline &&
       !alterIndexPtr.p->m_sub_build_index) {
@@ -13374,7 +13387,6 @@
     return true;
   }
 
-  ndbrequire(alterIndexPtr.p->m_triggerNo == alterIndexPtr.p->m_triggerCount);
   return false;
 }
 
@@ -13393,15 +13405,20 @@
 
   CreateTrigReq* req = (CreateTrigReq*)signal->getDataPtrSend();
 
+  Uint32 requestInfo = 0;
+  setRequestType(requestInfo, CreateTrigReq::CreateTriggerOnline);
+  setFeedbackId(requestInfo, AlterIndex_atCreateTrigger);
+
   req->clientRef = reference();
   req->clientData = op_ptr.p->op_key;
   req->transId = trans_ptr.p->m_transId;
   req->transKey = trans_ptr.p->trans_key;
-  req->requestType = CreateTrigReq::CreateTriggerOnline;
+  req->requestType = requestInfo;
   req->tableId = impl_req->tableId;
   req->tableVersion = impl_req->tableVersion;
   req->indexId = impl_req->indexId;
   req->indexVersion = impl_req->indexVersion;
+  req->triggerNo = triggerNo;
 
   TriggerInfo::setTriggerInfo(req->triggerInfo, triggerTmpl.triggerStruct);
 
@@ -13425,6 +13442,37 @@
 }
 
 void
+Dbdict::alterIndex_atCreateTrigger(Signal* signal, SchemaOpPtr op_ptr)
+{
+  /*
+   * Index trigger req has been parsed on this participant.
+   * Connect the index and the trigger on this node.  Trigger
+   * number comes in the signal because we have no access to
+   * trigger counter in coordinator.  There is a counter under
+   * index record but it is better to use it for verification.
+   */
+  CreateTriggerDataPtr createTriggerPtr;
+  getOpData(op_ptr, createTriggerPtr);
+  const CreateTrigImplReq* impl_req = &createTriggerPtr.p->m_request;
+
+  TriggerRecordPtr triggerPtr;
+  c_triggerRecordPool.getPtr(triggerPtr, impl_req->triggerId);
+
+  TableRecordPtr indexPtr;
+  c_tableRecordPool.getPtr(indexPtr, impl_req->indexId);
+
+  const Uint32 triggerNo = impl_req->triggerNo;
+
+  D("alterIndex_atCreateTrigger" << V(triggerNo) << *op_ptr.p);
+
+  triggerPtr.p->indexId = impl_req->indexId;
+
+  ndbrequire(indexPtr.p->indexTriggerCount == triggerNo);
+  indexPtr.p->indexTriggerId[triggerNo] = impl_req->triggerId;
+  indexPtr.p->indexTriggerCount = triggerNo + 1;
+}
+
+void
 Dbdict::alterIndex_fromCreateTrigger(Signal* signal, Uint32 op_key, Uint32 ret)
 {
   D("alterIndex_fromCreateTrigger" << hex << V(op_key) << dec <<
V(ret));
@@ -13448,16 +13496,9 @@
 
     ndbrequire(conf->transId == trans_ptr.p->m_transId);
 
-    const Uint32 triggerNo = alterIndexPtr.p->m_triggerNo;
-    ndbrequire(triggerNo < alterIndexPtr.p->m_triggerCount);
-
-    // connect trigger id to index
-    TriggerRecordPtr triggerPtr;
-    c_triggerRecordPool.getPtr(triggerPtr, conf->triggerId);
-    indexPtr.p->indexTriggerId[triggerNo] = conf->triggerId;
-    triggerPtr.p->indexId = impl_req->indexId;
-
-    alterIndexPtr.p->m_triggerNo = triggerNo + 1;
+    ndbrequire(alterIndexPtr.p->m_triggerIndex <
+               alterIndexPtr.p->m_triggerCount);
+    alterIndexPtr.p->m_triggerIndex += 1;
   } else {
     ndbrequire(false);//TODO
     jam();
@@ -13485,27 +13526,56 @@
   TableRecordPtr indexPtr;
   c_tableRecordPool.getPtr(indexPtr, impl_req->indexId);
 
-  // drop order is same as create order
   const Uint32 triggerNo = alterIndexPtr.p->m_triggerNo;
   const TriggerTmpl& triggerTmpl = alterIndexPtr.p->m_triggerTmpl[triggerNo];
 
   DropTrigReq* req = (DropTrigReq*)signal->getDataPtrSend();
 
+  Uint32 requestInfo = 0;
+  setRequestType(requestInfo, 0);
+  setFeedbackId(requestInfo, AlterIndex_atDropTrigger);
+
   req->clientRef = reference();
   req->clientData = op_ptr.p->op_key;
   req->transId = trans_ptr.p->m_transId;
   req->transKey = trans_ptr.p->trans_key;
-  req->requestType = 0;
+  req->requestType = requestInfo;
   req->tableId = impl_req->tableId;
   req->tableVersion = impl_req->tableVersion;
   req->indexId = impl_req->indexId;
   req->indexVersion = impl_req->indexVersion;
+  req->triggerNo = triggerNo;
   req->triggerId = indexPtr.p->indexTriggerId[triggerNo];
 
   sendSignal(reference(), GSN_DROP_TRIG_REQ, signal,
              DropTrigReq::SignalLength, JBB);
 }
 
+// wl3600_todo invoke this at commit when support for it exists
+void
+Dbdict::alterIndex_atDropTrigger(Signal* signal, SchemaOpPtr op_ptr)
+{
+  DropTriggerDataPtr dropTriggerPtr;
+  getOpData(op_ptr, dropTriggerPtr);
+  const DropTrigImplReq* impl_req = &dropTriggerPtr.p->m_request;
+
+  TriggerRecordPtr triggerPtr;
+  c_triggerRecordPool.getPtr(triggerPtr, impl_req->triggerId);
+
+  TableRecordPtr indexPtr;
+  c_tableRecordPool.getPtr(indexPtr, impl_req->indexId);
+
+  const Uint32 triggerNo = impl_req->triggerNo;
+
+  D("alterIndex_atDropTrigger" << V(triggerNo) << *op_ptr.p);
+
+  triggerPtr.p->indexId = RNIL;
+
+  ndbrequire(indexPtr.p->indexTriggerCount == triggerNo + 1);
+  indexPtr.p->indexTriggerId[triggerNo] = RNIL;
+  indexPtr.p->indexTriggerCount = triggerNo;
+}
+
 void
 Dbdict::alterIndex_fromDropTrigger(Signal* signal, Uint32 op_key, Uint32 ret)
 {
@@ -13530,13 +13600,9 @@
 
     ndbrequire(conf->transId == trans_ptr.p->m_transId);
 
-    const Uint32 triggerNo = alterIndexPtr.p->m_triggerNo;
-    ndbrequire(triggerNo < alterIndexPtr.p->m_triggerCount);
-
-    // disconnect trigger id from index
-    indexPtr.p->indexTriggerId[triggerNo] = RNIL;
-
-    alterIndexPtr.p->m_triggerNo = triggerNo + 1;
+    ndbrequire(alterIndexPtr.p->m_triggerIndex <
+               alterIndexPtr.p->m_triggerCount);
+    alterIndexPtr.p->m_triggerIndex += 1;
   } else {
     ndbrequire(false);//TODO
     jam();
@@ -15540,6 +15606,7 @@
     impl_req->tableVersion = req->tableVersion;
     impl_req->indexId = req->indexId;
     impl_req->indexVersion = req->indexVersion;
+    impl_req->triggerNo = req->triggerNo;
     impl_req->triggerId = ILLEGAL_TRIGGER_ID;
     impl_req->triggerInfo = req->triggerInfo;
     impl_req->receiverRef = req->receiverRef;
@@ -15814,7 +15881,7 @@
   // fill in trigger data
   triggerPtr.p->triggerId = impl_req->triggerId;
   triggerPtr.p->tableId = impl_req->tableId;
-  triggerPtr.p->indexId = RNIL; // caller connects to index
+  triggerPtr.p->indexId = RNIL; // feedback method connects to index
   triggerPtr.p->triggerInfo = impl_req->triggerInfo;
   triggerPtr.p->receiverRef = impl_req->receiverRef;
   triggerPtr.p->attributeMask = impl_req->attributeMask;
@@ -15838,6 +15905,17 @@
     triggerPtr.p->m_obj_ptr_i = obj_ptr.i;
   }
 
+  // execute feedback method, if any
+  {
+    const Uint32 id = getFeedbackId(impl_req->requestType);
+    if (id != 0) {
+      const FeedbackEntry* e = findFeedbackEntry(id);
+      ndbrequire(e != 0);
+      (this->*(e->m_method))(signal, op_ptr);
+    }
+  }
+
+#if wl3600_todo //out
   // wl3600_todo XXX this is the worst solution (sub-op fix for parent)
   Uint32 triggerType = TriggerInfo::getTriggerType(impl_req->triggerInfo);
   Uint32 triggerEvent = TriggerInfo::getTriggerEvent(impl_req->triggerInfo);
@@ -15859,6 +15937,7 @@
       indexPtr.p->indexTriggerId[0] = triggerPtr.p->triggerId;
     triggerPtr.p->indexId = impl_req->indexId;
   }
+#endif
 }
 
 bool
@@ -16497,6 +16576,7 @@
     impl_req->tableVersion = req->tableVersion;
     impl_req->indexId = req->indexId;
     impl_req->indexVersion = req->indexVersion;
+    impl_req->triggerNo = req->triggerNo;
     impl_req->triggerId = req->triggerId;
     impl_req->triggerInfo = ~(Uint32)0;
 
@@ -16752,6 +16832,16 @@
 
   // check the table wl3600_todo
   // check the index if any wl3600_todo
+
+  // execute feedback method, if any
+  {
+    const Uint32 id = getFeedbackId(impl_req->requestType);
+    if (id != 0) {
+      const FeedbackEntry* e = findFeedbackEntry(id);
+      ndbrequire(e != 0);
+      (this->*(e->m_method))(signal, op_ptr);
+    }
+  }
 }
 
 bool
@@ -20986,17 +21076,41 @@
   0
 };
 
-
 const Dbdict::OpInfo*
 Dbdict::findOpInfo(Uint32 gsn)
 {
   Uint32 i = 0;
   while (g_opInfoList[i] != 0) {
     if (g_opInfoList[i]->m_impl_req_gsn == gsn)
-      break;
+      return g_opInfoList[i];
+    i++;
+  }
+  return 0;
+}
+
+// FeedbackTable
+
+Dbdict::FeedbackEntry
+Dbdict::g_feedbackTable[] = {
+  { AlterIndex_atCreateTrigger,
+    &Dbdict::alterIndex_atCreateTrigger
+  },
+  { AlterIndex_atDropTrigger,
+    &Dbdict::alterIndex_atDropTrigger
+  },
+  { 0, 0 }
+};
+
+const Dbdict::FeedbackEntry*
+Dbdict::findFeedbackEntry(Uint32 id)
+{
+  Uint32 i = 0;
+  while (g_feedbackTable[i].m_id != 0) {
+    if (g_feedbackTable[i].m_id == id)
+      return &g_feedbackTable[i];
     i++;
   }
-  return g_opInfoList[i];
+  return 0;
 }
 
 // OpData
@@ -21510,7 +21624,7 @@
     masternode.set(getOwnNodeId());
     nodes.bitAND(masternode);
   }
-  ndbrequire(!nodes.isclear());
+  ndbrequire(!nodes.isclear());//wl3600_todo got crash here after NF
 
   NodeReceiverGroup rg(DBDICT, nodes);
   {

--- 1.67/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp	2007-01-25 13:30:51 +01:00
+++ 1.68/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp	2007-01-26 17:17:21 +01:00
@@ -376,6 +376,7 @@
     Uint32 buildTriggerId;      // temp during build
     // wl3600_todo replace by array
     Uint32 indexTriggerId[3];
+    Uint32 indexTriggerCount;
 
     /**  Index state in other blocks on this node */
     enum IndexLocal {
@@ -1296,6 +1297,51 @@
   static const OpInfo* g_opInfoList[];
   const OpInfo* findOpInfo(Uint32 gsn);
 
+  // Feedback is PARSE phase sub-op callback on all nodes
+
+  enum FeedbackId {
+    AlterIndex_atCreateTrigger = 1,
+    AlterIndex_atDropTrigger = 2 //wl3600_todo better done at COMMIT
+  };
+
+  struct FeedbackEntry {
+    Uint32 m_id;
+    void (Dbdict::*m_method)(Signal*, SchemaOpPtr);
+  };
+
+  static FeedbackEntry g_feedbackTable[];
+  static Uint32 g_feedbackTableSize;
+
+  const FeedbackEntry* findFeedbackEntry(Uint32 id);
+
+  // DICT signals include requestInfo (even if unused)
+
+  // byte 0: requestType (enum or bitmask)
+  inline
+  Uint32 getRequestType(const Uint32& info)
+  {
+    return BitmaskImpl::getField(1, &info, 0, 8);
+  }
+  inline
+  void setRequestType(Uint32& info, Uint32 val)
+  {
+    ndbrequire(val < (1 << 8));
+    BitmaskImpl::setField(1, &info, 0, 8, val);
+  }
+
+  // byte 1: id in sub-op feedback table
+  inline
+  Uint32 getFeedbackId(const Uint32& info)
+  {
+    return BitmaskImpl::getField(1, &info, 8, 8);
+  }
+  inline
+  void setFeedbackId(Uint32& info, Uint32 val)
+  {
+    ndbrequire(findFeedbackEntry(val) != 0);
+    BitmaskImpl::setField(1, &info, 8, 8, val);
+  }
+
   // OpData
 
   struct OpData {
@@ -2316,7 +2362,8 @@
     // sub-operation counters
     const TriggerTmpl* m_triggerTmpl;
     Uint32 m_triggerCount;      // 3 or 1
-    Uint32 m_triggerNo;
+    Uint32 m_triggerIndex;      // 0 1 2
+    Uint32 m_triggerNo;         // 0 1 2 or 2 1 0 on drop
     bool m_sub_build_index;
 
     AlterIndexData() :
@@ -2326,6 +2373,7 @@
       m_attrMask.clear();
       m_triggerTmpl = 0;
       m_triggerCount = 0;
+      m_triggerIndex = 0;
       m_triggerNo = 0;
       m_sub_build_index = false;
     }
@@ -2480,8 +2528,10 @@
 
   // sub-ops
   void alterIndex_toCreateTrigger(Signal*, SchemaOpPtr);
+  void alterIndex_atCreateTrigger(Signal*, SchemaOpPtr);
   void alterIndex_fromCreateTrigger(Signal*, Uint32 op_key, Uint32 ret);
   void alterIndex_toDropTrigger(Signal*, SchemaOpPtr);
+  void alterIndex_atDropTrigger(Signal*, SchemaOpPtr);
   void alterIndex_fromDropTrigger(Signal*, Uint32 op_key, Uint32 ret);
   void alterIndex_toBuildIndex(Signal*, SchemaOpPtr);
   void alterIndex_fromBuildIndex(Signal*, Uint32 op_key, Uint32 ret);

--- 1.2/storage/ndb/include/kernel/signaldata/CreateTrigImpl.hpp	2007-01-16 12:39:53
+01:00
+++ 1.3/storage/ndb/include/kernel/signaldata/CreateTrigImpl.hpp	2007-01-26 17:17:21
+01:00
@@ -29,7 +29,7 @@
     CreateTriggerOffline = 2
   };
 
-  STATIC_CONST( SignalLength = 10 + MAXNROFATTRIBUTESINWORDS);
+  STATIC_CONST( SignalLength = 11 + MAXNROFATTRIBUTESINWORDS);
   SECTION( TRIGGER_NAME_SECTION = 0 );
   SECTION( ATTRIBUTE_MASK_SECTION = 1 );        // not yet in use
   enum xxxKeyValues {//wl3600_todo use DictTabInfo
@@ -45,6 +45,7 @@
   Uint32 tableVersion;
   Uint32 indexId;
   Uint32 indexVersion;
+  Uint32 triggerNo;
   Uint32 triggerId;
   Uint32 triggerInfo;
   Uint32 receiverRef;

--- 1.2/storage/ndb/include/kernel/signaldata/DropTrigImpl.hpp	2007-01-17 15:21:23 +01:00
+++ 1.3/storage/ndb/include/kernel/signaldata/DropTrigImpl.hpp	2007-01-26 17:17:21 +01:00
@@ -22,7 +22,7 @@
 struct DropTrigImplReq {
   friend bool printDROP_TRIG_IMPL_REQ(FILE*, const Uint32*, Uint32, Uint16);
 
-  STATIC_CONST( SignalLength = 9 );
+  STATIC_CONST( SignalLength = 10 );
   SECTION( TRIGGER_NAME_SECTION = 0 ); // optional
   enum xxxKeyValues {//wl3600_todo use DictTabInfo
     TriggerNameKey = 0xa1
@@ -35,6 +35,7 @@
   Uint32 tableVersion;
   Uint32 indexId;
   Uint32 indexVersion;
+  Uint32 triggerNo;
   Uint32 triggerId;
   Uint32 triggerInfo;
 };

--- 1.2/storage/ndb/src/common/debugger/signaldata/CreateTrigImpl.cpp	2007-01-16 12:39:53
+01:00
+++ 1.3/storage/ndb/src/common/debugger/signaldata/CreateTrigImpl.cpp	2007-01-26 17:17:21
+01:00
@@ -29,6 +29,7 @@
   fprintf(output, " tableVersion: %x", sig->tableVersion);
   fprintf(output, " indexId: %x", sig->indexId);
   fprintf(output, " indexVersion: %x", sig->indexVersion);
+  fprintf(output, " triggerNo: %u", sig->triggerNo);
   fprintf(output, "\n");  
   fprintf(output, " triggerId: %x", sig->triggerId);
   fprintf(output, " triggerInfo: %x", sig->triggerInfo);

--- 1.2/storage/ndb/src/common/debugger/signaldata/DropTrigImpl.cpp	2007-01-17 15:21:23
+01:00
+++ 1.3/storage/ndb/src/common/debugger/signaldata/DropTrigImpl.cpp	2007-01-26 17:17:21
+01:00
@@ -28,6 +28,7 @@
   fprintf(output, " tableVersion: %x", sig->tableVersion);
   fprintf(output, " indexId: %x", sig->indexId);
   fprintf(output, " indexVersion: %x", sig->indexVersion);
+  fprintf(output, " triggerNo: %u", sig->triggerNo);
   fprintf(output, "\n");
   fprintf(output, " triggerId: %x", sig->triggerId);
   fprintf(output, " triggerInfo: %x", sig->triggerInfo);
Thread
bk commit into 5.1 tree (pekka:1.2398)pekka26 Jan