📄 trix.cpp
字号:
sendSignal(reference(), GSN_BUILDINDXREQ, signal, BuildIndxReq::SignalLength, JBB, orderPtr, BuildIndxReq::NoOfSections); break; } case(302): { // ok // index -T; index -I -n1000; index -c -p // all dump 302 0 0 0 0 0 4 2 // select_count PNUMINDEX0000 BuildIndxReq * buildIndxReq = (BuildIndxReq *)signal->getDataPtrSend(); MEMCOPY_NO_WORDS(buildIndxReq, signal->theData + 1, BuildIndxReq::SignalLength); buildIndxReq->setUserRef(reference()); // return to me buildIndxReq->setParallelism(10); Uint32 indexColumns[3] = {0, 3, 5}; Uint32 keyColumns[1] = {0}; struct LinearSectionPtr orderPtr[2]; buildIndxReq->setColumnOrder(indexColumns, 3, keyColumns, 1, orderPtr); sendSignal(reference(), GSN_BUILDINDXREQ, signal, BuildIndxReq::SignalLength, JBB, orderPtr, BuildIndxReq::NoOfSections); break; } case(303): { // ok // index -T -2; index -I -2 -n1000; index -c -p // all dump 303 0 0 0 0 0 4 2 // select_count PNUMINDEX0000 BuildIndxReq * buildIndxReq = (BuildIndxReq *)signal->getDataPtrSend(); MEMCOPY_NO_WORDS(buildIndxReq, signal->theData + 1, BuildIndxReq::SignalLength); buildIndxReq->setUserRef(reference()); // return to me buildIndxReq->setParallelism(10); Uint32 indexColumns[3] = {0, 3, 5}; Uint32 keyColumns[2] = {0, 1}; struct LinearSectionPtr orderPtr[2]; buildIndxReq->setColumnOrder(indexColumns, 3, keyColumns, 2, orderPtr); sendSignal(reference(), GSN_BUILDINDXREQ, signal, BuildIndxReq::SignalLength, JBB, orderPtr, BuildIndxReq::NoOfSections); break; } case(304): { // ok // index -T -L; index -I -L -n1000; index -c -p // all dump 304 0 0 0 0 0 4 2 // select_count PNUMINDEX0000 BuildIndxReq * buildIndxReq = (BuildIndxReq *)signal->getDataPtrSend(); MEMCOPY_NO_WORDS(buildIndxReq, signal->theData + 1, BuildIndxReq::SignalLength); buildIndxReq->setUserRef(reference()); // return to me buildIndxReq->setParallelism(10); Uint32 indexColumns[3] = {0, 3, 5}; Uint32 keyColumns[1] = {0}; struct LinearSectionPtr orderPtr[2]; buildIndxReq->setColumnOrder(indexColumns, 3, keyColumns, 1, orderPtr); sendSignal(reference(), GSN_BUILDINDXREQ, signal, BuildIndxReq::SignalLength, JBB, orderPtr, BuildIndxReq::NoOfSections); break; } case(305): { // ok // index -T -2 -L; index -I -2 -L -n1000; index -c -p // all dump 305 0 0 0 0 0 4 2 // select_count PNUMINDEX0000 BuildIndxReq * buildIndxReq = (BuildIndxReq *)signal->getDataPtrSend(); MEMCOPY_NO_WORDS(buildIndxReq, signal->theData + 1, BuildIndxReq::SignalLength); buildIndxReq->setUserRef(reference()); // return to me buildIndxReq->setParallelism(10); Uint32 indexColumns[3] = {0, 3, 5}; Uint32 keyColumns[2] = {0, 1}; struct LinearSectionPtr orderPtr[2]; buildIndxReq->setColumnOrder(indexColumns, 3, keyColumns, 2, orderPtr); sendSignal(reference(), GSN_BUILDINDXREQ, signal, BuildIndxReq::SignalLength, JBB, orderPtr, BuildIndxReq::NoOfSections); break; } default: { // Ignore } }}// Build index/** * */void Trix:: execBUILDINDXREQ(Signal* signal){ jamEntry(); BuildIndxReq * buildIndxReq = (BuildIndxReq *)signal->getDataPtr(); // Seize a subscription record SubscriptionRecPtr subRecPtr; SubscriptionRecord* subRec; if (!c_theSubscriptions.seizeId(subRecPtr, buildIndxReq->getBuildId())) { // Failed to allocate subscription record BuildIndxRef * buildIndxRef = (BuildIndxRef *)signal->getDataPtrSend(); buildIndxRef->setErrorCode(BuildIndxRef::AllocationFailure); releaseSections(signal); sendSignal(buildIndxReq->getUserRef(), GSN_BUILDINDXREF, signal, BuildIndxRef::SignalLength, JBB); return; } subRec = subRecPtr.p; subRec->errorCode = BuildIndxRef::NoError; subRec->userReference = buildIndxReq->getUserRef(); subRec->connectionPtr = buildIndxReq->getConnectionPtr(); subRec->subscriptionId = buildIndxReq->getBuildId(); subRec->subscriptionKey = buildIndxReq->getBuildKey(); subRec->indexType = buildIndxReq->getIndexType(); subRec->sourceTableId = buildIndxReq->getTableId(); subRec->targetTableId = buildIndxReq->getIndexId(); subRec->parallelism = buildIndxReq->getParallelism(); subRec->expectedConf = 0; subRec->subscriptionCreated = false; subRec->pendingSubSyncContinueConf = false; subRec->prepareId = RNIL; // Get column order segments Uint32 noOfSections = signal->getNoOfSections(); if(noOfSections > 0) { SegmentedSectionPtr ptr; signal->getSection(ptr, BuildIndxReq::INDEX_COLUMNS); append(subRec->attributeOrder, ptr, getSectionSegmentPool()); subRec->noOfIndexColumns = ptr.sz; } if(noOfSections > 1) { SegmentedSectionPtr ptr; signal->getSection(ptr, BuildIndxReq::KEY_COLUMNS); append(subRec->attributeOrder, ptr, getSectionSegmentPool()); subRec->noOfKeyColumns = ptr.sz; }#if 0 // Debugging printf("Trix:: execBUILDINDXREQ: Attribute order:\n"); subRec->attributeOrder.print(stdout);#endif releaseSections(signal); prepareInsertTransactions(signal, subRecPtr);}void Trix:: execBUILDINDXCONF(Signal* signal){ printf("Trix:: execBUILDINDXCONF\n");}void Trix:: execBUILDINDXREF(Signal* signal){ printf("Trix:: execBUILDINDXREF\n");}void Trix::execUTIL_PREPARE_CONF(Signal* signal){ jamEntry(); UtilPrepareConf * utilPrepareConf = (UtilPrepareConf *)signal->getDataPtr(); SubscriptionRecPtr subRecPtr; SubscriptionRecord* subRec; subRecPtr.i = utilPrepareConf->senderData; if ((subRec = c_theSubscriptions.getPtr(subRecPtr.i)) == NULL) { printf("Trix::execUTIL_PREPARE_CONF: Failed to find subscription data %u\n", subRecPtr.i); return; } subRecPtr.p = subRec; subRec->prepareId = utilPrepareConf->prepareId; setupSubscription(signal, subRecPtr);}void Trix::execUTIL_PREPARE_REF(Signal* signal){ jamEntry(); UtilPrepareRef * utilPrepareRef = (UtilPrepareRef *)signal->getDataPtr(); SubscriptionRecPtr subRecPtr; SubscriptionRecord* subRec; subRecPtr.i = utilPrepareRef->senderData; if ((subRec = c_theSubscriptions.getPtr(subRecPtr.i)) == NULL) { printf("Trix::execUTIL_PREPARE_REF: Failed to find subscription data %u\n", subRecPtr.i); return; } subRecPtr.p = subRec; subRec->errorCode = BuildIndxRef::InternalError;}void Trix::execUTIL_EXECUTE_CONF(Signal* signal){ jamEntry(); UtilExecuteConf * utilExecuteConf = (UtilExecuteConf *)signal->getDataPtr(); SubscriptionRecPtr subRecPtr; SubscriptionRecord* subRec; subRecPtr.i = utilExecuteConf->senderData; if ((subRec = c_theSubscriptions.getPtr(subRecPtr.i)) == NULL) { printf("rix::execUTIL_EXECUTE_CONF: Failed to find subscription data %u\n", subRecPtr.i); return; } subRecPtr.p = subRec; subRec->expectedConf--; checkParallelism(signal, subRec); if (subRec->expectedConf == 0) buildComplete(signal, subRecPtr);}void Trix::execUTIL_EXECUTE_REF(Signal* signal){ jamEntry(); UtilExecuteRef * utilExecuteRef = (UtilExecuteRef *)signal->getDataPtr(); SubscriptionRecPtr subRecPtr; SubscriptionRecord* subRec; subRecPtr.i = utilExecuteRef->senderData; if ((subRec = c_theSubscriptions.getPtr(subRecPtr.i)) == NULL) { printf("Trix::execUTIL_EXECUTE_REF: Failed to find subscription data %u\n", subRecPtr.i); return; } subRecPtr.p = subRec; ndbrequire(utilExecuteRef->errorCode == UtilExecuteRef::TCError); if(utilExecuteRef->TCErrorCode == CONSTRAINT_VIOLATION) buildFailed(signal, subRecPtr, BuildIndxRef::IndexNotUnique); else buildFailed(signal, subRecPtr, BuildIndxRef::InternalError);}void Trix::execSUB_CREATE_CONF(Signal* signal){ jamEntry(); SubCreateConf * subCreateConf = (SubCreateConf *)signal->getDataPtr(); SubscriptionRecPtr subRecPtr; SubscriptionRecord* subRec; subRecPtr.i = subCreateConf->subscriberData; if ((subRec = c_theSubscriptions.getPtr(subRecPtr.i)) == NULL) { printf("Trix::execSUB_CREATE_CONF: Failed to find subscription data %u\n", subRecPtr.i); return; } ndbrequire(subRec->subscriptionId == subCreateConf->subscriptionId); ndbrequire(subRec->subscriptionKey == subCreateConf->subscriptionKey); subRec->subscriptionCreated = true; subRecPtr.p = subRec; setupTableScan(signal, subRecPtr);}void Trix::execSUB_CREATE_REF(Signal* signal){ jamEntry(); // THIS SIGNAL IS NEVER SENT FROM SUMA? /* SubCreateRef * subCreateRef = (SubCreateRef *)signal->getDataPtr(); SubscriptionRecPtr subRecPtr; SubscriptionRecord* subRec; subRecPtr.i = subCreateRef->subscriberData; if ((subRec = c_theSubscriptions.getPtr(subRecPtr.i)) == NULL) { printf("Trix::execSUB_CREATE_REF: Failed to find subscription data %u\n", subRecPtr.i); return; } subRecPtr.p = subRec; buildFailed(signal, subRecPtr, BuildIndxRef::InternalError); */}void Trix::execSUB_SYNC_CONF(Signal* signal){ jamEntry(); SubSyncConf * subSyncConf = (SubSyncConf *)signal->getDataPtr(); SubscriptionRecPtr subRecPtr; SubscriptionRecord* subRec; subRecPtr.i = subSyncConf->subscriberData; if ((subRec = c_theSubscriptions.getPtr(subRecPtr.i)) == NULL) { printf("Trix::execSUB_SYNC_CONF: Failed to find subscription data %u\n", subRecPtr.i); return; } ndbrequire(subRec->subscriptionId == subSyncConf->subscriptionId); ndbrequire(subRec->subscriptionKey == subSyncConf->subscriptionKey); subRecPtr.p = subRec; if(subSyncConf->part == SubscriptionData::MetaData) startTableScan(signal, subRecPtr); else { subRec->expectedConf--; checkParallelism(signal, subRec); if (subRec->expectedConf == 0) buildComplete(signal, subRecPtr); }}void Trix::execSUB_SYNC_REF(Signal* signal){ jamEntry(); SubSyncRef * subSyncRef = (SubSyncRef *)signal->getDataPtr(); SubscriptionRecPtr subRecPtr; SubscriptionRecord* subRec; subRecPtr.i = subSyncRef->subscriberData; if ((subRec = c_theSubscriptions.getPtr(subRecPtr.i)) == NULL) { printf("Trix::execSUB_SYNC_REF: Failed to find subscription data %u\n", subRecPtr.i); return; } subRecPtr.p = subRec;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -