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-04-29 11:59:48+02:00, pekka@stripped +2 -0
ndb - wl#3600 table ops cleanups
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp@stripped, 2007-04-29 11:58:53+02:00, pekka@stripped +56 -511
wl#3600 table ops cleanups
storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp@stripped, 2007-04-29 11:58:53+02:00, pekka@stripped +14 -31
wl#3600 table ops cleanups
# 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-a
--- 1.168/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp 2007-03-28 23:50:22 +02:00
+++ 1.169/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp 2007-04-29 11:58:53 +02:00
@@ -2534,29 +2534,6 @@
signal->theData[0] = reference();
sendSignal(c_restartRecord.returnBlockRef, GSN_DICTSTARTCONF,
signal, 1, JBB);
-
-#if wl3600_todo //remove
- if (c_restartType == NodeState::ST_SYSTEM_RESTART) {
- if (c_masterNodeId != getOwnNodeId())
- continue;
- // from file index state is not defined currently
- req->setRequestType(AlterIndxReq::RT_SYSTEMRESTART);
- req->addRequestFlag((Uint32)RequestFlag::RF_NOBUILD);
- }
- else if (
- c_restartType == NodeState::ST_NODE_RESTART ||
- c_restartType == NodeState::ST_INITIAL_NODE_RESTART) {
- // from master index must be online
- if (tablePtr.p->indexState != TableRecord::IS_ONLINE)
- continue;
- req->setRequestType(AlterIndxReq::RT_NODERESTART);
- // activate locally, rebuild not needed
- req->addRequestFlag((Uint32)RequestFlag::RF_LOCAL);
- req->addRequestFlag((Uint32)RequestFlag::RF_NOBUILD);
- } else {
- ndbrequire(false);
- }
-#endif
}
void
@@ -3429,7 +3406,6 @@
//createTabPtr.p->m_errorCode = 0; // wl3600_todo out
impl_req->tableId = tableId;
- createTabPtr.p->m_coordinatorRef = reference();
//createTabPtr.p->m_senderRef = 0; // wl3600_todo out
//createTabPtr.p->m_senderData = RNIL; // wl3600_todo out
//createTabPtr.p->m_tabInfoPtrI = RNIL; // wl3600_todo out
@@ -3668,12 +3644,14 @@
findSchemaOp(op_ptr, createTabPtr, callbackData);
ndbrequire(!op_ptr.isNull());
- if(createTabPtr.p->m_errorCode)
+ if (hasError(op_ptr.p->m_error))
{
char buf[100];
- BaseString::snprintf(buf, sizeof(buf), "Failed to create table during"
- " restart, Error: %u",
- createTabPtr.p->m_errorCode);
+ BaseString::snprintf(buf, sizeof(buf), "Failed to create table %u during"
+ " restart, error: %u line: %u",
+ createTabPtr.p->m_request.tableId,
+ op_ptr.p->m_error.errorCode,
+ op_ptr.p->m_error.errorLine);
progError(__LINE__, NDBD_EXIT_RESOURCE_ALLOC_ERROR, buf);
}
@@ -4313,10 +4291,6 @@
impl_req->tableId = tabPtr.i;
impl_req->tableVersion = tabPtr.p->tableVersion;
- // wl3600_todo remove or move to op level
- createTabPtr.p->m_errorCode = 0;
- createTabPtr.p->m_coordinatorRef = reference();
-
// create fragmentation via DIH (no changes in DIH)
CreateFragmentationReq* frag_req =
@@ -4429,9 +4403,7 @@
// wl3600_todo parse the rewritten DictTabInfo in master too
if (!trans_ptr.p->m_isMaster) {
jam();
- createTabPtr.p->m_errorCode = 0;
createTabPtr.p->m_request.tableId = tableId;
- createTabPtr.p->m_coordinatorRef = impl_req->senderRef;
ParseDictTabInfoRecord parseRecord;
parseRecord.requestType = DictTabInfo::AddTableFromDict;
@@ -4484,7 +4456,7 @@
tabEntry.m_info_words = tabInfoPtr.sz;
tabEntry.m_transKey = trans_ptr.p->trans_key;
tabEntry.zero_unused();
- D(V(tableVersion));
+ D("createTable_parse" << V(tableVersion));
bool savetodisk = false;
updateSchemaState(signal, tableId, &tabEntry, (Callback*)0, savetodisk);
@@ -4569,7 +4541,7 @@
tabEntry.m_gcp = tabPtr.p->gciTableCreated;
tabEntry.m_info_words = tabPtr.p->packedSize;
tabEntry.m_transKey = trans_ptr.p->trans_key;
- memset(tabEntry.m_unused, 0, sizeof(tabEntry.m_unused));
+ tabEntry.zero_unused();
D("createTable_prepare" << V(tabEntry.m_tableVersion));
Callback callback;
@@ -4582,15 +4554,15 @@
}
void
-Dbdict::createTab_writeSchemaConf1(Signal* signal,
- Uint32 callbackData,
- Uint32 returnCode)
+Dbdict::createTab_writeSchemaConf1(Signal* signal,
+ Uint32 op_key,
+ Uint32 ret)
{
jam();
SchemaOpPtr op_ptr;
CreateTableDataPtr createTabPtr;
- findSchemaOp(op_ptr, createTabPtr, callbackData);
+ findSchemaOp(op_ptr, createTabPtr, op_key);
ndbrequire(!op_ptr.isNull());
Callback callback;
@@ -4603,8 +4575,6 @@
bool savetodisk = !(tabPtr.p->m_bits & TableRecord::TR_Temporary);
if (savetodisk)
{
- //SegmentedSectionPtr tabInfoPtr;
- //getSection(tabInfoPtr, createTabPtr.p->m_tabInfoPtrI);
const OpSection& tabInfoSec =
getOpSection(op_ptr, CreateTabReq::DICT_TAB_INFO);
writeTableFile(signal, createTabPtr.p->m_request.tableId,
@@ -4614,34 +4584,25 @@
{
execute(signal, callback, 0);
}
-#if 0
- createTabPtr.p->m_tabInfoPtrI = RNIL;
- signal->setSection(tabInfoPtr, 0);
- releaseSections(signal);
-#endif
}
void
Dbdict::createTab_writeTableConf(Signal* signal,
- Uint32 callbackData,
- Uint32 returnCode)
+ Uint32 op_key,
+ Uint32 ret)
{
jam();
SchemaOpPtr op_ptr;
CreateTableDataPtr createTabPtr;
- findSchemaOp(op_ptr, createTabPtr, callbackData);
+ findSchemaOp(op_ptr, createTabPtr, op_key);
ndbrequire(!op_ptr.isNull());
-#if wl3600_todo//remove
- SegmentedSectionPtr fragDataPtr;
- getSection(fragDataPtr, createTabPtr.p->m_fragmentsPtrI);
-#endif
const OpSection& fragSec =
getOpSection(op_ptr, CreateTabReq::FRAGMENTATION);
ndbrequire(getSize(fragSec) != 0);
Callback callback;
- callback.m_callbackData = callbackData;
+ callback.m_callbackData = op_ptr.p->op_key;
callback.m_callbackFunction =
safe_cast(&Dbdict::createTab_dihComplete);
@@ -4677,17 +4638,7 @@
req->primaryTableId = tabPtr.p->primaryTableId;
req->temporaryTable = !!(tabPtr.p->m_bits & TableRecord::TR_Temporary);
-/*
-*/
-#if wl3600_todo //replace
- if(!fragDataPtr.isNull()){
- signal->setSection(fragDataPtr, DiAddTabReq::FRAGMENTATION);
- }
-
- sendSignal(DBDIH_REF, GSN_DIADDTABREQ, signal,
- DiAddTabReq::SignalLength, JBB);
-#endif
+ // fragmentation in long signal section
{
Uint32 page[1024];
LinearSectionPtr ptr[3];
@@ -4695,6 +4646,7 @@
const Uint32 size = getSize(fragSec);
+ // wl3600_todo add ndbrequire on SR, NR
if (size != 0) {
jam();
bool ok = copyOut(fragSec, page, 1024);
@@ -4897,7 +4849,7 @@
findSchemaOp(op_ptr, createTabPtr, ref->senderData);
ndbrequire(!op_ptr.isNull());
- createTabPtr.p->setErrorCode(ref->errorCode);
+ setError(op_ptr.p->m_error, ref->errorCode, __LINE__);
{
AddFragRef * const ref = (AddFragRef*)signal->getDataPtr();
@@ -4991,7 +4943,7 @@
findSchemaOp(op_ptr, createTabPtr, ref->senderData);
ndbrequire(!op_ptr.isNull());
- createTabPtr.p->setErrorCode(ref->errorCode);
+ setError(op_ptr.p->m_error, ref->errorCode, __LINE__);
{
AddFragRef * const ref = (AddFragRef*)signal->getDataPtr();
@@ -5047,7 +4999,7 @@
findSchemaOp(op_ptr, createTabPtr, ref->senderData);
ndbrequire(!op_ptr.isNull());
- createTabPtr.p->setErrorCode(ref->errorCode);
+ setError(op_ptr.p->m_error, ref->errorCode, __LINE__);
execute(signal, createTabPtr.p->m_callback, 0);
}
@@ -5096,14 +5048,14 @@
void
Dbdict::createTab_dihComplete(Signal* signal,
- Uint32 callbackData,
- Uint32 returnCode)
+ Uint32 op_key,
+ Uint32 ret)
{
jam();
SchemaOpPtr op_ptr;
CreateTableDataPtr createTabPtr;
- findSchemaOp(op_ptr, createTabPtr, callbackData);
+ findSchemaOp(op_ptr, createTabPtr, op_key);
ndbrequire(!op_ptr.isNull());
SchemaTransPtr trans_ptr = op_ptr.p->m_trans_ptr;
const CreateTabReq* impl_req = &createTabPtr.p->m_request;
@@ -5113,39 +5065,18 @@
if (ERROR_INSERTED(6113)) {
jam();
CLEAR_ERROR_INSERT_VALUE;
- createTabPtr.p->m_errorCode = 9999;
+ setError(op_ptr.p->m_error, 9999, __LINE__);
}
- if (createTabPtr.p->m_errorCode == 0) {
+ if (!hasError(op_ptr.p->m_error)) {
jam();
// prepare done
schemaTrans_sendConf(signal, op_ptr.p->m_trans_ptr);
-
-#if wl3600_todo //remove
- CreateTabConf * const conf = (CreateTabConf*)signal->getDataPtr();
- conf->senderRef = reference();
- conf->senderData = op_ptr.p->op_key;
- sendSignal(createTabPtr.p->m_coordinatorRef, GSN_CREATE_TAB_CONF,
- signal, CreateTabConf::SignalLength, JBB);
-#endif
return;
}
- setError(trans_ptr.p->m_error, createTabPtr.p->m_errorCode, __LINE__);
+ setError(trans_ptr.p->m_error, op_ptr.p->m_error);
schemaTrans_sendRef(signal, trans_ptr);
-
-#if wl3600_todo //remove
- CreateTabRef * const ref = (CreateTabRef*)signal->getDataPtr();
- ref->senderRef = reference();
- ref->senderData = op_ptr.p->op_key;
- ref->errorCode = createTabPtr.p->m_errorCode;
- ref->errorLine = 0;
- ref->errorKey = 0;
- ref->errorStatus = 0;
-
- sendSignal(createTabPtr.p->m_coordinatorRef, GSN_CREATE_TAB_REF,
- signal, CreateTabRef::SignalLength, JBB);
-#endif
}
// CreateTable COMMIT
@@ -5203,7 +5134,8 @@
tabEntry.m_gcp = tabPtr.p->gciTableCreated;
tabEntry.m_info_words = tabPtr.p->packedSize;
tabEntry.m_transKey = 0; // no tx any more
- memset(tabEntry.m_unused, 0, sizeof(tabEntry.m_unused));
+ tabEntry.zero_unused();
+
D("createTable_commit" << V(tabEntry.m_tableVersion));
Callback callback;
@@ -5239,53 +5171,37 @@
void
Dbdict::createTab_startLcpMutex_locked(Signal* signal,
- Uint32 callbackData,
- Uint32 retValue)
+ Uint32 op_key,
+ Uint32 ret)
{
jamEntry();
D("createTab_startLcpMutex_locked");
- ndbrequire(retValue == 0);
+ ndbrequire(ret == 0);
SchemaOpPtr op_ptr;
CreateTableDataPtr createTabPtr;
- findSchemaOp(op_ptr, createTabPtr, callbackData);
+ findSchemaOp(op_ptr, createTabPtr, op_key);
ndbrequire(!op_ptr.isNull());
Uint32 itFlags = SchemaTransImplReq::IT_REPEAT;
schemaTrans_sendConf(signal, op_ptr.p->m_trans_ptr, itFlags);
-
-#if wl3600_todo // remove
- NodeReceiverGroup rg(DBDICT, c_aliveNodes);
- createTabPtr.p->m_coordinatorData.m_gsn = GSN_CREATE_TAB_REQ;
- createTabPtr.p->m_coordinatorData.m_requestType = CreateTabReq::CreateTableCommit;
- SafeCounter tmp(c_counterMgr, createTabPtr.p->m_coordinatorData.m_counter);
- tmp.init<CreateTabRef>(rg, GSN_CREATE_TAB_REF, createTabPtr.p->key);
-
- CreateTabReq * const req = (CreateTabReq*)signal->getDataPtrSend();
- req->senderRef = reference();
- req->senderData = createTabPtr.p->key;
- req->requestType = CreateTabReq::CreateTableCommit;
-
- sendSignal(rg, GSN_CREATE_TAB_REQ, signal,
- CreateTabReq::SignalLength, JBB);
-#endif
}
void
Dbdict::createTab_writeSchemaConf2(Signal* signal,
- Uint32 callbackData,
- Uint32 returnCode)
+ Uint32 op_key,
+ Uint32 ret)
{
jam();
SchemaOpPtr op_ptr;
CreateTableDataPtr createTabPtr;
- findSchemaOp(op_ptr, createTabPtr, callbackData);
+ findSchemaOp(op_ptr, createTabPtr, op_key);
ndbrequire(!op_ptr.isNull());
Callback c;
- c.m_callbackData = callbackData;
+ c.m_callbackData = op_ptr.p->op_key;
c.m_callbackFunction = safe_cast(&Dbdict::createTab_alterComplete);
alterTab_activate(signal, op_ptr, &c);
}
@@ -5319,18 +5235,19 @@
void
Dbdict::createTab_alterComplete(Signal* signal,
- Uint32 callbackData,
- Uint32 returnCode)
+ Uint32 op_key,
+ Uint32 ret)
{
jam();
SchemaOpPtr op_ptr;
CreateTableDataPtr createTabPtr;
- findSchemaOp(op_ptr, createTabPtr, callbackData);
+ findSchemaOp(op_ptr, createTabPtr, op_key);
ndbrequire(!op_ptr.isNull());
+ const CreateTabReq* impl_req = &createTabPtr.p->m_request;
TableRecordPtr tabPtr;
- c_tableRecordPool.getPtr(tabPtr, createTabPtr.p->m_request.tableId);
+ c_tableRecordPool.getPtr(tabPtr, impl_req->tableId);
tabPtr.p->tabState = TableRecord::DEFINED;
D("createTab_alterComplete" << *op_ptr.p);
@@ -5338,12 +5255,11 @@
//@todo check error
//@todo check master failed
- CreateTabConf * const conf = (CreateTabConf*)signal->getDataPtr();
- conf->senderRef = reference();
- conf->senderData = op_ptr.p->op_key;
+ // inform SUMA
{
- CreateTabConf tmp= *conf;
- conf->senderData = createTabPtr.p->m_request.tableId;
+ CreateTabConf* conf = (CreateTabConf*)signal->getDataPtrSend();
+ conf->senderRef = reference();
+ conf->senderData = impl_req->tableId; // special usage
#if 0
signal->header.m_noOfSections = 1;
SegmentedSectionPtr tabInfoPtr;
@@ -5351,8 +5267,7 @@
signal->setSection(tabInfoPtr, 0);
#endif
sendSignal(SUMA_REF, GSN_CREATE_TAB_CONF, signal,
- CreateTabConf::SignalLength, JBB);
- *conf= tmp;
+ CreateTabConf::SignalLength, JBB);
#if 0
signal->header.m_noOfSections = 0;
#endif
@@ -5360,54 +5275,26 @@
Uint32 itFlags = SchemaTransImplReq::IT_REPEAT;
schemaTrans_sendConf(signal, op_ptr.p->m_trans_ptr, itFlags);
-
-#if wl3600_todo //remove
- sendSignal(createTabPtr.p->m_coordinatorRef, GSN_CREATE_TAB_CONF,
- signal, CreateTabConf::SignalLength, JBB);
-
- if(createTabPtr.p->m_coordinatorRef != reference()){
- jam();
- releaseCreateTableOp(signal,createTabPtr);
- }
-#endif
}
void
Dbdict::createTab_startLcpMutex_unlocked(Signal* signal,
- Uint32 callbackData,
- Uint32 retValue)
+ Uint32 op_key,
+ Uint32 ret)
{
jamEntry();
D("createTab_startLcpMutex_unlocked");
- ndbrequire(retValue == 0);
+ ndbrequire(ret == 0);
SchemaOpPtr op_ptr;
CreateTableDataPtr createTabPtr;
- findSchemaOp(op_ptr, createTabPtr, callbackData);
+ findSchemaOp(op_ptr, createTabPtr, op_key);
ndbrequire(!op_ptr.isNull());
createTabPtr.p->m_startLcpMutex.release(c_mutexMgr);
schemaTrans_sendConf(signal, op_ptr.p->m_trans_ptr);
-
-#if wl3600_todo // remove
- TableRecordPtr tabPtr;
- c_tableRecordPool.getPtr(tabPtr, createTabPtr.p->m_tablePtrI);
-
- CreateTableConf * const conf = (CreateTableConf*)signal->getDataPtr();
- conf->senderRef = reference();
- conf->clientData = createTabPtr.p->m_senderData;
- conf->tableId = createTabPtr.p->m_tablePtrI;
- conf->tableVersion = tabPtr.p->tableVersion;
-
- //@todo check api failed
- sendSignal(createTabPtr.p->m_senderRef, GSN_CREATE_TABLE_CONF, signal,
- CreateTableConf::SignalLength, JBB);
- releaseCreateTableOp(signal,createTabPtr);
- c_blockState = BS_IDLE;
- return;
-#endif
}
// CreateTable ABORT
@@ -5469,8 +5356,6 @@
D("createTable_abortPrepare" << *op_ptr.p);
- // from old createTab_drop
-
TableRecordPtr tabPtr;
c_tableRecordPool.getPtr(tabPtr, impl_req->tableId);
tabPtr.p->tabState = TableRecord::DROPPING;
@@ -5622,366 +5507,26 @@
void
Dbdict::execCREATE_TAB_REF(Signal* signal)
{
+ // no longer received
ndbrequire(false);
-#if wl3600_todo
- jamEntry();
-
- CreateTabRef * const ref = (CreateTabRef*)signal->getDataPtr();
-
- CreateTableDataPtr createTabPtr;
- ndbrequire(c_opCreateTable.find(createTabPtr, ref->senderData));
-
- ndbrequire(createTabPtr.p->m_coordinatorRef == reference());
- ndbrequire(createTabPtr.p->m_coordinatorData.m_gsn == GSN_CREATE_TAB_REQ);
-
- if(ref->errorCode != CreateTabRef::NF_FakeErrorREF){
- createTabPtr.p->setErrorCode(ref->errorCode);
- }
- createTab_reply(signal, createTabPtr, refToNode(ref->senderRef));
-#endif
}
void
Dbdict::execCREATE_TAB_CONF(Signal* signal)
{
+ // no longer received
ndbrequire(false);
-#if wl3600_todo
- jamEntry();
-
- ndbrequire(signal->getNoOfSections() == 0);
-
- CreateTabConf * const conf = (CreateTabConf*)signal->getDataPtr();
-
- CreateTableDataPtr createTabPtr;
- ndbrequire(c_opCreateTable.find(createTabPtr, conf->senderData));
-
- ndbrequire(createTabPtr.p->m_coordinatorRef == reference());
- ndbrequire(createTabPtr.p->m_coordinatorData.m_gsn == GSN_CREATE_TAB_REQ);
-
- createTab_reply(signal, createTabPtr, refToNode(conf->senderRef));
-#endif
}
void
-Dbdict::createTab_reply(Signal* signal,
- CreateTableDataPtr createTabPtr,
- Uint32 nodeId)
+Dbdict::execCREATE_TAB_REQ(Signal* signal)
{
+ // no longer received
ndbrequire(false);
-#if wl3600_todo
-
- SafeCounter tmp(c_counterMgr, createTabPtr.p->m_coordinatorData.m_counter);
- if(!tmp.clearWaitingFor(nodeId)){
- jam();
- return;
- }
-
- switch(createTabPtr.p->m_coordinatorData.m_requestType){
- case CreateTabReq::CreateTablePrepare:{
-
- if(createTabPtr.p->m_errorCode != 0){
- jam();
- /**
- * Failed to prepare on atleast one node -> abort on all
- */
- NodeReceiverGroup rg(DBDICT, c_aliveNodes);
- createTabPtr.p->m_coordinatorData.m_gsn = GSN_CREATE_TAB_REQ;
- createTabPtr.p->m_coordinatorData.m_requestType = CreateTabReq::CreateTableDrop;
- ndbrequire(tmp.init<CreateTabRef>(rg, createTabPtr.p->key));
-
- CreateTabReq * const req = (CreateTabReq*)signal->getDataPtrSend();
- req->senderRef = reference();
- req->senderData = createTabPtr.p->key;
- req->requestType = CreateTabReq::CreateTableDrop;
-
- sendSignal(rg, GSN_CREATE_TAB_REQ, signal,
- CreateTabReq::SignalLength, JBB);
- return;
- }
-
- /**
- * Lock mutex before commiting table
- */
- Mutex mutex(signal, c_mutexMgr, createTabPtr.p->m_startLcpMutex);
- Callback c = { safe_cast(&Dbdict::createTab_startLcpMutex_locked),
- createTabPtr.p->key};
-
- ndbrequire(mutex.lock(c));
- return;
- }
- case CreateTabReq::CreateTableCommit:{
- jam();
- ndbrequire(createTabPtr.p->m_errorCode == 0);
-
- /**
- * Unlock mutex before commiting table
- */
- Mutex mutex(signal, c_mutexMgr, createTabPtr.p->m_startLcpMutex);
- Callback c = { safe_cast(&Dbdict::createTab_startLcpMutex_unlocked),
- createTabPtr.p->key};
- mutex.unlock(c);
- return;
- }
- case CreateTabReq::CreateTableDrop:{
- jam();
- CreateTableRef * const ref = (CreateTableRef*)signal->getDataPtr();
- ref->senderRef = reference();
- ref->clientData = createTabPtr.p->m_senderData;
- ref->errorCode = createTabPtr.p->m_errorCode;
- ref->masterNodeId = c_masterNodeId;
- ref->status = 0;
- ref->errorKey = 0;
- ref->errorLine = 0;
-
- //@todo check api failed
- sendSignal(createTabPtr.p->m_senderRef, GSN_CREATE_TABLE_REF, signal,
- CreateTableRef::SignalLength, JBB);
- releaseCreateTableOp(signal,createTabPtr);
- c_blockState = BS_IDLE;
- return;
- }
- }
- ndbrequire(false);
-#endif
-}
-
-/***********************************************************
- * CreateTable participant code
- **********************************************************/
-void
-Dbdict::execCREATE_TAB_REQ(Signal* signal){
- jamEntry();
-
- if(!assembleFragments(signal)){
- jam();
- return;
- }
-
- CreateTabReq * const req = (CreateTabReq*)signal->getDataPtr();
-
- CreateTabReq::RequestType rt =
- (CreateTabReq::RequestType)DictSignal::getRequestType(req->requestInfo);
- switch(rt){
- case CreateTabReq::CreateTablePrepare:
- CRASH_INSERTION2(6003, getOwnNodeId() != c_masterNodeId);
- createTab_prepare(signal, req);
- return;
- case CreateTabReq::CreateTableCommit:
- CRASH_INSERTION2(6004, getOwnNodeId() != c_masterNodeId);
- createTab_commit(signal, req);
- return;
- case CreateTabReq::CreateTableDrop:
- CRASH_INSERTION2(6005, getOwnNodeId() != c_masterNodeId);
- createTab_drop(signal, req);
- return;
- }
- ndbrequire(false);
-}
-
-void
-Dbdict::createTab_prepare(Signal* signal, CreateTabReq * req)
-{
- ndbrequire(false);
-#if wl3600_todo //to createTable_parseCommon
-
- const Uint32 gci = req->gci;
- const Uint32 tableId = req->tableId;
- const Uint32 tableVersion = req->tableVersion;
-
- SegmentedSectionPtr tabInfoPtr;
- signal->getSection(tabInfoPtr, CreateTabReq::DICT_TAB_INFO);
-
- CreateTableDataPtr createTabPtr;
- if(req->senderRef == reference()){
- jam();
- ndbrequire(c_opCreateTable.find(createTabPtr, req->senderData));
- } else {
- jam();
- c_opCreateTable.seize(createTabPtr);
-
- ndbrequire(!createTabPtr.isNull());
-
- createTabPtr.p->key = req->senderData;
- c_opCreateTable.add(createTabPtr);
- createTabPtr.p->m_errorCode = 0;
- createTabPtr.p->m_tablePtrI = tableId;
- createTabPtr.p->m_coordinatorRef = req->senderRef;
- createTabPtr.p->m_senderRef = req->clientRef;
- createTabPtr.p->m_senderData = req->clientData;
- createTabPtr.p->m_dihAddFragPtr = RNIL;
-
- /**
- * Put data into table record
- */
- ParseDictTabInfoRecord parseRecord;
- parseRecord.requestType = DictTabInfo::AddTableFromDict;
- parseRecord.errorCode = 0;
-
- SimplePropertiesSectionReader r(tabInfoPtr, getSectionSegmentPool());
-
- handleTabInfoInit(r, &parseRecord);
-
- ndbrequire(parseRecord.errorCode == 0);
- }
-
- ndbrequire(!createTabPtr.isNull());
-
- SegmentedSectionPtr fragPtr;
- signal->getSection(fragPtr, CreateTabReq::FRAGMENTATION);
-
- createTabPtr.p->m_tabInfoPtrI = tabInfoPtr.i;
- createTabPtr.p->m_fragmentsPtrI = fragPtr.i;
-
- signal->header.m_noOfSections = 0;
-
- TableRecordPtr tabPtr;
- c_tableRecordPool.getPtr(tabPtr, tableId);
- tabPtr.p->packedSize = tabInfoPtr.sz;
- tabPtr.p->tableVersion = tableVersion;
- tabPtr.p->gciTableCreated = gci;
-
- SchemaFile::TableEntry tabEntry;
- tabEntry.m_tableVersion = tableVersion;
- tabEntry.m_tableType = tabPtr.p->tableType;
- tabEntry.m_tableState = SchemaFile::ADD_STARTED;
- tabEntry.m_gcp = gci;
- tabEntry.m_info_words = tabInfoPtr.sz;
- tabEntry.m_transKey = 0;
- tabEntry.zero_unused();
-
- Callback callback;
- callback.m_callbackData = createTabPtr.p->key;
- callback.m_callbackFunction =
- safe_cast(&Dbdict::createTab_writeSchemaConf1);
-
- bool savetodisk = !(tabPtr.p->m_bits & TableRecord::TR_Temporary);
- updateSchemaState(signal, tableId, &tabEntry, &callback, savetodisk);
-#endif
}
void getSection(SegmentedSectionPtr & ptr, Uint32 i);
-void
-Dbdict::createTab_commit(Signal * signal, CreateTabReq * req)
-{
- ndbrequire(false);
-#if wl3600_todo //to createTable_commit
- jam();
-
- CreateTableDataPtr createTabPtr;
- ndbrequire(c_opCreateTable.find(createTabPtr, req->senderData));
-
- TableRecordPtr tabPtr;
- c_tableRecordPool.getPtr(tabPtr, createTabPtr.p->m_tablePtrI);
- bool savetodisk = !(tabPtr.p->m_bits & TableRecord::TR_Temporary);
-
- SchemaFile::TableEntry tabEntry;
- tabEntry.m_tableVersion = tabPtr.p->tableVersion;
- tabEntry.m_tableType = tabPtr.p->tableType;
- if (savetodisk)
- tabEntry.m_tableState = SchemaFile::TABLE_ADD_COMMITTED;
- else
- tabEntry.m_tableState = SchemaFile::TEMPORARY_TABLE_COMMITTED;
-
- tabEntry.m_gcp = tabPtr.p->gciTableCreated;
- tabEntry.m_info_words = tabPtr.p->packedSize;
- tabEntry.m_transKey = 0;
- tabEntry.zero_unused();
-
- Callback callback;
- callback.m_callbackData = createTabPtr.p->key;
- callback.m_callbackFunction =
- safe_cast(&Dbdict::createTab_writeSchemaConf2);
-
- updateSchemaState(signal, tabPtr.i, &tabEntry, &callback, savetodisk);
-#endif
-}
-
-void
-Dbdict::createTab_drop(Signal* signal, CreateTabReq * req)
-{
- ndbrequire(false);
-#if wl3600_todo
- jam();
-
- const Uint32 key = req->senderData;
-
- CreateTableDataPtr createTabPtr;
- ndbrequire(c_opCreateTable.find(createTabPtr, key));
-
- TableRecordPtr tabPtr;
- c_tableRecordPool.getPtr(tabPtr, createTabPtr.p->m_tablePtrI);
- tabPtr.p->tabState = TableRecord::DROPPING;
-
- DropTableRecordPtr dropTabPtr;
- ndbrequire(c_opDropTable.seize(dropTabPtr));
-
- dropTabPtr.p->key = key;
- c_opDropTable.add(dropTabPtr);
-
- dropTabPtr.p->m_errorCode = 0;
- dropTabPtr.p->m_request.tableId = createTabPtr.p->m_tablePtrI;
- dropTabPtr.p->m_requestType = DropTabReq::CreateTabDrop;
- dropTabPtr.p->m_coordinatorRef = createTabPtr.p->m_coordinatorRef;
- dropTabPtr.p->m_participantData.m_gsn = GSN_DROP_TAB_REQ;
-
- dropTabPtr.p->m_participantData.m_block = 0;
- dropTabPtr.p->m_participantData.m_callback.m_callbackData = req->senderData;
- dropTabPtr.p->m_participantData.m_callback.m_callbackFunction =
- safe_cast(&Dbdict::createTab_dropComplete);
- dropTab_nextStep(signal, dropTabPtr);
-
- if (tabPtr.p->m_tablespace_id != RNIL)
- {
- FilegroupPtr ptr;
- ndbrequire(c_filegroup_hash.find(ptr, tabPtr.p->m_tablespace_id));
- decrease_ref_count(ptr.p->m_obj_ptr_i);
- }
-#endif
-}
-
-void
-Dbdict::createTab_dropComplete(Signal* signal,
- Uint32 callbackData,
- Uint32 returnCode)
-{
- ndbrequire(false);
-#if wl3600_todo
- jam();
-
- CreateTableDataPtr createTabPtr;
- ndbrequire(c_opCreateTable.find(createTabPtr, callbackData));
-
- DropTableRecordPtr dropTabPtr;
- ndbrequire(c_opDropTable.find(dropTabPtr, callbackData));
-
- TableRecordPtr tabPtr;
- c_tableRecordPool.getPtr(tabPtr, createTabPtr.p->m_tablePtrI);
-
- releaseTableObject(tabPtr.i);
-
- XSchemaFile * xsf = &c_schemaFile[c_schemaRecord.schemaPage != 0];
- SchemaFile::TableEntry * tableEntry = getTableEntry(xsf, tabPtr.i);
- tableEntry->m_tableState = SchemaFile::DROP_TABLE_COMMITTED;
-
- //@todo check error
- //@todo check master failed
-
- CreateTabConf * const conf = (CreateTabConf*)signal->getDataPtr();
- conf->senderRef = reference();
- conf->senderData = createTabPtr.p->key;
- sendSignal(createTabPtr.p->m_coordinatorRef, GSN_CREATE_TAB_CONF,
- signal, CreateTabConf::SignalLength, JBB);
-
- if(createTabPtr.p->m_coordinatorRef != reference()){
- jam();
- releaseCreateTableOp(signal,createTabPtr);
- }
-
- c_opDropTable.release(dropTabPtr);
-#endif
-}
-
#define tabRequire(cond, error) \
if (!(cond)) { \
jam(); \
@@ -7201,7 +6746,7 @@
releaseSections(signal);
}
- // older set to notify wl3600_todo disable to find SUMA problems
+ // older way to notify wl3600_todo disable to find SUMA problems
{
ApiBroadcastRep* api= (ApiBroadcastRep*)signal->getDataPtrSend();
api->gsn = GSN_ALTER_TABLE_REP;
--- 1.91/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp 2007-03-28 23:50:23 +02:00
+++ 1.92/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp 2007-04-29 11:58:53 +02:00
@@ -1418,6 +1418,9 @@
// flag if this op has been aborted in RT_PREPARE phase
bool m_abortPrepareDone;
+ // not yet handled error
+ ErrorInfo m_error;
+
// magic is on when record is seized
enum { DICT_MAGIC = 0xd1c70001 };
Uint32 m_magic;
@@ -1984,6 +1987,9 @@
Uint32 m_dihAddFragPtr;
Uint32 m_lqhFragPtr;
+ // who is using local create tab
+ Callback m_callback;
+
CreateTableData() :
OpData(g_opInfo, (Uint32*)&m_request) {
memset(&m_request, 0, sizeof(m_request));
@@ -1993,19 +1999,6 @@
m_dihAddFragPtr = RNIL;
m_lqhFragPtr = RNIL;
}
-
- Uint32 m_coordinatorRef;//
-
- Uint32 m_errorCode;//
- void setErrorCode(Uint32 c){ if(m_errorCode == 0) m_errorCode = c;}//
-
- Callback m_callback; // Who's using local create tab
-
- struct CoordinatorData {
- Uint32 m_gsn;
- SafeCounterHandle m_counter;
- CreateTabReq::RequestType m_requestType;
- } m_coordinatorData;
#ifdef VM_TRACE
void print(NdbOut&) const;
@@ -2030,18 +2023,17 @@
void createTable_abortPrepare(Signal*, SchemaOpPtr);
// prepare
- void createTab_writeSchemaConf1(Signal* signal, Uint32 callback, Uint32);
- void createTab_writeTableConf(Signal* signal, Uint32 callbackData, Uint32);
- void createTab_dih(Signal*, SchemaOpPtr,
- OpSection fragSection, Callback*);
- void createTab_dihComplete(Signal* signal, Uint32 callbackData, Uint32);
+ void createTab_writeSchemaConf1(Signal*, Uint32 op_key, Uint32 ret);
+ void createTab_writeTableConf(Signal*, Uint32 op_key, Uint32 ret);
+ void createTab_dih(Signal*, SchemaOpPtr, OpSection fragSec, Callback*);
+ void createTab_dihComplete(Signal*, Uint32 op_key, Uint32 ret);
// commit
- void createTab_startLcpMutex_locked(Signal* signal, Uint32, Uint32);
- void createTab_writeSchemaConf2(Signal* signal, Uint32 callbackData, Uint32);
+ void createTab_startLcpMutex_locked(Signal*, Uint32 op_key, Uint32 ret);
+ void createTab_writeSchemaConf2(Signal*, Uint32 op_key, Uint32 ret);
void alterTab_activate(Signal*, SchemaOpPtr, Callback*);
- void createTab_alterComplete(Signal*, Uint32 callbackData, Uint32);
- void createTab_startLcpMutex_unlocked(Signal* signal, Uint32, Uint32);
+ void createTab_alterComplete(Signal*, Uint32 op_key, Uint32 ret);
+ void createTab_startLcpMutex_unlocked(Signal*, Uint32 op_key, Uint32 ret);
// abort prepare
void createTable_abortLocalConf(Signal*, Uint32 aux_op_key, Uint32 ret);
@@ -3242,15 +3234,6 @@
Uint32 tableId,
AlterTableData * regAlterTabPtr);
- void createTab_prepare(Signal* signal, CreateTabReq * req);
-
- void createTab_commit(Signal* signal, CreateTabReq * req);
-
- void createTab_drop(Signal* signal, CreateTabReq * req);
- void createTab_dropComplete(Signal* signal, Uint32 callbackData, Uint32);
-
- void createTab_reply(Signal* signal, CreateTableDataPtr, Uint32 nodeId);
-
void restartCreateTab(Signal*, Uint32,
const SchemaFile::TableEntry *,
const SchemaFile::TableEntry *, bool);
| Thread |
|---|
| • bk commit into 5.1 tree (pekka:1.2426) | pekka | 29 Apr |