List:Commits« Previous MessageNext Message »
From:pekka Date:December 20 2006 2:02pm
Subject:bk commit into 5.1 tree (pekka:1.2371)
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, 2006-12-20 15:02:44+01:00, pekka@stripped +5 -0
  ndb - wl#3600

  storage/ndb/include/kernel/signaldata/SignalData.hpp@stripped, 2006-12-20 15:02:02+01:00, pekka@stripped +3 -0
    wl#3600 schema trans in NDBCNTR

  storage/ndb/src/common/debugger/signaldata/SignalDataPrint.cpp@stripped, 2006-12-20 15:02:02+01:00, pekka@stripped +3 -0
    wl#3600 schema trans in NDBCNTR

  storage/ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp@stripped, 2006-12-20 15:02:02+01:00, pekka@stripped +9 -0
    wl#3600 schema trans in NDBCNTR

  storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrInit.cpp@stripped, 2006-12-20 15:02:02+01:00, pekka@stripped +7 -0
    wl#3600 schema trans in NDBCNTR

  storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp@stripped, 2006-12-20 15:02:02+01:00, pekka@stripped +62 -3
    wl#3600 schema trans in NDBCNTR

# 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

--- 1.12/storage/ndb/include/kernel/signaldata/SignalData.hpp	2006-12-20 08:21:57 +01:00
+++ 1.13/storage/ndb/include/kernel/signaldata/SignalData.hpp	2006-12-20 15:02:02 +01:00
@@ -83,6 +83,9 @@
 GSN_PRINT_SIGNATURE(printPACKED_SIGNAL);
 GSN_PRINT_SIGNATURE(printPREPFAILREQREF);
 GSN_PRINT_SIGNATURE(printPREPFAILREQREF);
+GSN_PRINT_SIGNATURE(printCREATE_TABLE_REQ);
+GSN_PRINT_SIGNATURE(printCREATE_TABLE_CONF);
+GSN_PRINT_SIGNATURE(printCREATE_TABLE_REF);
 GSN_PRINT_SIGNATURE(printALTER_TABLE_REQ);
 GSN_PRINT_SIGNATURE(printALTER_TABLE_CONF);
 GSN_PRINT_SIGNATURE(printALTER_TABLE_REF);

--- 1.16/storage/ndb/src/common/debugger/signaldata/SignalDataPrint.cpp	2006-12-20 08:21:57 +01:00
+++ 1.17/storage/ndb/src/common/debugger/signaldata/SignalDataPrint.cpp	2006-12-20 15:02:02 +01:00
@@ -57,6 +57,9 @@
   { GSN_PACKED_SIGNAL, printPACKED_SIGNAL },
   { GSN_PREP_FAILREQ, printPREPFAILREQREF },
   { GSN_PREP_FAILREF, printPREPFAILREQREF },
+  { GSN_CREATE_TABLE_REQ, printCREATE_TABLE_REQ },
+  { GSN_CREATE_TABLE_CONF, printCREATE_TABLE_CONF },
+  { GSN_CREATE_TABLE_REF, printCREATE_TABLE_REF },
   { GSN_ALTER_TABLE_REQ, printALTER_TABLE_REQ },
   { GSN_ALTER_TABLE_CONF, printALTER_TABLE_CONF },
   { GSN_ALTER_TABLE_REF, printALTER_TABLE_REF },

--- 1.8/storage/ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp	2006-04-06 12:24:09 +02:00
+++ 1.9/storage/ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp	2006-12-20 15:02:02 +01:00
@@ -150,6 +150,9 @@
   // the system tables
   static const SysTable g_sysTable_SYSTAB_0;
   static const SysTable g_sysTable_NDBEVENTS_0;
+  // schema trans
+  Uint32 c_schemaTransId;
+  Uint32 c_schemaTransKey;
 
 public:
   Ndbcntr(Block_context&);
@@ -186,6 +189,10 @@
   void execGETGCICONF(Signal* signal);
   void execDIH_RESTARTCONF(Signal* signal);
   void execDIH_RESTARTREF(Signal* signal);
+  void execSCHEMA_TRANS_BEGIN_CONF(Signal* signal);
+  void execSCHEMA_TRANS_BEGIN_REF(Signal* signal);
+  void execSCHEMA_TRANS_END_CONF(Signal* signal);
+  void execSCHEMA_TRANS_END_REF(Signal* signal);
   void execCREATE_TABLE_REF(Signal* signal);
   void execCREATE_TABLE_CONF(Signal* signal);
   void execNDB_STTORRY(Signal* signal);
@@ -213,6 +220,8 @@
   void execABORT_ALL_CONF(Signal* signal);
 
   // Statement blocks
+  void beginSchemaTransLab(Signal* signal);
+  void endSchemaTransLab(Signal* signal);
   void sendCreateTabReq(Signal* signal, const char* buffer, Uint32 bufLen);
   void startInsertTransactions(Signal* signal);
   void initData(Signal* signal);

--- 1.12/storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrInit.cpp	2006-04-25 10:57:28 +02:00
+++ 1.13/storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrInit.cpp	2006-12-20 15:02:02 +01:00
@@ -31,6 +31,9 @@
   cnoWaitrep = 0;
   // Records with constant sizes
   ndbBlocksRec = new NdbBlocksRec[ZSIZE_NDB_BLOCKS_REC];
+  // schema trans
+  c_schemaTransId = 0;
+  c_schemaTransKey = RNIL;
 }//Ndbcntr::initData()
 
 void Ndbcntr::initRecords() 
@@ -76,6 +79,10 @@
   addRecSignal(GSN_GETGCICONF, &Ndbcntr::execGETGCICONF);
   addRecSignal(GSN_DIH_RESTARTCONF, &Ndbcntr::execDIH_RESTARTCONF);
   addRecSignal(GSN_DIH_RESTARTREF, &Ndbcntr::execDIH_RESTARTREF);
+  addRecSignal(GSN_SCHEMA_TRANS_BEGIN_CONF, &Ndbcntr::execSCHEMA_TRANS_BEGIN_CONF);
+  addRecSignal(GSN_SCHEMA_TRANS_BEGIN_REF, &Ndbcntr::execSCHEMA_TRANS_BEGIN_REF);
+  addRecSignal(GSN_SCHEMA_TRANS_END_CONF, &Ndbcntr::execSCHEMA_TRANS_END_CONF);
+  addRecSignal(GSN_SCHEMA_TRANS_END_REF, &Ndbcntr::execSCHEMA_TRANS_END_REF);
   addRecSignal(GSN_CREATE_TABLE_REF, &Ndbcntr::execCREATE_TABLE_REF);
   addRecSignal(GSN_CREATE_TABLE_CONF, &Ndbcntr::execCREATE_TABLE_CONF);
   addRecSignal(GSN_NDB_STTORRY, &Ndbcntr::execNDB_STTORRY);

--- 1.42/storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp	2006-12-20 13:30:20 +01:00
+++ 1.43/storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp	2006-12-20 15:02:02 +01:00
@@ -21,6 +21,7 @@
 #include <ndb_version.h>
 #include <SimpleProperties.hpp>
 #include <signaldata/DictTabInfo.hpp>
+#include <signaldata/SchemaTrans.hpp>
 #include <signaldata/CreateTable.hpp>
 #include <signaldata/ReadNodesConf.hpp>
 #include <signaldata/NodeFailRep.hpp>
@@ -1117,7 +1118,7 @@
       /* MASTER CNTR IS RESPONSIBLE FOR       */
       /* CREATING SYSTEM TABLES               */
       /*--------------------------------------*/
-      createSystableLab(signal, 0);
+      beginSchemaTransLab(signal);
       return;
     case NodeState::ST_SYSTEM_RESTART:
       jam();
@@ -1660,11 +1661,63 @@
 /*       |  :  |   :             |                   v                       */
 /*       | 2048|   0             |                   v                       */
 /*---------------------------------------------------------------------------*/
+
+void Ndbcntr::beginSchemaTransLab(Signal* signal)
+{
+  c_schemaTransId = reference();
+
+  SchemaTransBeginReq* req =
+    (SchemaTransBeginReq*)signal->getDataPtrSend();
+  req->clientRef = reference();
+  req->transId = c_schemaTransId;
+  sendSignal(DBDICT_REF, GSN_SCHEMA_TRANS_BEGIN_REQ, signal,
+      SchemaTransBeginReq::SignalLength, JBB);
+}
+
+void Ndbcntr::execSCHEMA_TRANS_BEGIN_CONF(Signal* signal)
+{
+  const SchemaTransBeginConf* conf =
+    (SchemaTransBeginConf*)signal->getDataPtr();
+  ndbrequire(conf->transId == c_schemaTransId);
+  c_schemaTransKey = conf->transKey;
+
+  createSystableLab(signal, 0);
+}
+
+void Ndbcntr::execSCHEMA_TRANS_BEGIN_REF(Signal* signal)
+{
+  ndbrequire(false);
+}
+
+void Ndbcntr::endSchemaTransLab(Signal* signal)
+{
+  SchemaTransEndReq* req =
+    (SchemaTransEndReq*)signal->getDataPtrSend();
+  req->clientRef = reference();
+  req->transId = c_schemaTransId;
+  req->transKey = c_schemaTransKey;
+  req->commitFlag = true;
+  sendSignal(DBDICT_REF, GSN_SCHEMA_TRANS_END_REQ, signal,
+      SchemaTransEndReq::SignalLength, JBB);
+}
+
+void Ndbcntr::execSCHEMA_TRANS_END_CONF(Signal* signal)
+{
+  c_schemaTransId = 0;
+  c_schemaTransKey = RNIL;
+  startInsertTransactions(signal);
+}
+
+void Ndbcntr::execSCHEMA_TRANS_END_REF(Signal* signal)
+{
+  ndbrequire(false);
+}
+
 void Ndbcntr::createSystableLab(Signal* signal, unsigned index)
 {
   if (index >= g_sysTableCount) {
     ndbassert(index == g_sysTableCount);
-    startInsertTransactions(signal);
+    endSchemaTransLab(signal);
     return;
   }
   const SysTable& table = *g_sysTableList[index];
@@ -1712,6 +1765,8 @@
   CreateTableReq* const req = (CreateTableReq*)signal->getDataPtrSend();
   req->clientRef = reference();
   req->clientData = index;
+  req->transId = c_schemaTransId;
+  req->transKey = c_schemaTransKey;
   sendSignal(DBDICT_REF, GSN_CREATE_TABLE_REQ, signal,
 	     CreateTableReq::SignalLength, JBB, ptr, 1);
   return;
@@ -1720,6 +1775,7 @@
 void Ndbcntr::execCREATE_TABLE_REF(Signal* signal) 
 {
   jamEntry();
+  const CreateTableRef* ref = (const CreateTableRef*)signal->getDataPtr();
   progError(__LINE__,NDBD_EXIT_NDBREQUIRE, "CREATE_TABLE_REF");
   return;
 }//Ndbcntr::execDICTTABREF()
@@ -1727,8 +1783,11 @@
 void Ndbcntr::execCREATE_TABLE_CONF(Signal* signal) 
 {
   jamEntry();
-  CreateTableConf * const conf = (CreateTableConf*)signal->getDataPtrSend();
+  const CreateTableConf* conf = (const CreateTableConf*)signal->getDataPtr();
   //csystabId = conf->tableId;
+#if wl3600_todo
+  ndbrequire(conf->transId == c_schemaTransId);
+#endif
   ndbrequire(conf->clientData < g_sysTableCount);
   const SysTable& table = *g_sysTableList[conf->clientData];
   table.tableId = conf->tableId;
Thread
bk commit into 5.1 tree (pekka:1.2371)pekka20 Dec