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) | pekka | 20 Dec |