=== modified file 'storage/ndb/include/kernel/signaldata/BuildIndxImpl.hpp' --- storage/ndb/include/kernel/signaldata/BuildIndxImpl.hpp 2010-01-13 13:28:03 +0000 +++ storage/ndb/include/kernel/signaldata/BuildIndxImpl.hpp 2010-10-29 14:17:00 +0000 @@ -22,6 +22,7 @@ struct BuildIndxImplReq { enum RequestFlag { RF_BUILD_OFFLINE = 1 << 8 + ,RF_NO_DISK = 1 << 9 /* Indexed columns are not on disk */ }; STATIC_CONST( SignalLength = 10 ); === modified file 'storage/ndb/include/kernel/signaldata/SumaImpl.hpp' --- storage/ndb/include/kernel/signaldata/SumaImpl.hpp 2010-08-26 12:33:33 +0000 +++ storage/ndb/include/kernel/signaldata/SumaImpl.hpp 2010-10-29 15:19:04 +0000 @@ -264,6 +264,7 @@ struct SubSyncReq { enum { LM_Exclusive = 0x1 ,Reorg = 0x2 + ,NoDisk = 0x4 }; SECTION( ATTRIBUTE_LIST = 0); // Used when doing SingelTableScan === modified file 'storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp' --- storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp 2010-09-21 07:36:08 +0000 +++ storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp 2010-10-29 14:18:04 +0000 @@ -13300,6 +13300,9 @@ Dbdict:: buildIndex_toLocalBuild(Signal* req->indexType = indexPtr.p->tableType; req->parallelism = impl_req->parallelism; + /* All indexed columns must be in memory currently */ + req->requestType |= BuildIndxImplReq::RF_NO_DISK; + Callback c = { safe_cast(&Dbdict::buildIndex_fromLocalBuild), op_ptr.p->op_key === modified file 'storage/ndb/src/kernel/blocks/suma/Suma.cpp' --- storage/ndb/src/kernel/blocks/suma/Suma.cpp 2010-09-06 08:20:33 +0000 +++ storage/ndb/src/kernel/blocks/suma/Suma.cpp 2010-10-29 15:19:37 +0000 @@ -2513,6 +2513,11 @@ Suma::SyncRecord::nextScan(Signal* signa ScanFragReq::setHoldLockFlag(req->requestInfo, 1); ScanFragReq::setKeyinfoFlag(req->requestInfo, 0); ScanFragReq::setAttrLen(req->requestInfo, attrLen); + if (m_requestInfo & SubSyncReq::NoDisk) + { + ScanFragReq::setNoDiskFlag(req->requestInfo, 1); + } + if (m_requestInfo & SubSyncReq::LM_Exclusive) { ScanFragReq::setLockMode(req->requestInfo, 1); === modified file 'storage/ndb/src/kernel/blocks/trix/Trix.cpp' --- storage/ndb/src/kernel/blocks/trix/Trix.cpp 2010-08-17 11:47:55 +0000 +++ storage/ndb/src/kernel/blocks/trix/Trix.cpp 2010-10-29 15:20:11 +0000 @@ -601,6 +601,11 @@ void Trix:: execBUILD_INDX_IMPL_REQ(Sign subRec->m_rows_processed = 0; subRec->m_flags = SubscriptionRecord::RF_WAIT_GCP; // Todo make configurable subRec->m_gci = 0; + if (buildIndxReq->requestType & BuildIndxImplReq::RF_NO_DISK) + { + subRec->m_flags |= SubscriptionRecord::RF_NO_DISK; + } + // Get column order segments Uint32 noOfSections = handle.m_cnt; if (noOfSections > 0) { @@ -947,6 +952,12 @@ void Trix::startTableScan(Signal* signal subSyncReq->requestInfo = 0; subSyncReq->fragCount = subRec->fragCount; + if (subRec->m_flags & SubscriptionRecord::RF_NO_DISK) + { + jam(); + subSyncReq->requestInfo |= SubSyncReq::NoDisk; + } + if (subRec->requestType == REORG_COPY) { jam(); === modified file 'storage/ndb/src/kernel/blocks/trix/Trix.hpp' --- storage/ndb/src/kernel/blocks/trix/Trix.hpp 2009-10-08 12:40:36 +0000 +++ storage/ndb/src/kernel/blocks/trix/Trix.hpp 2010-10-29 14:18:23 +0000 @@ -108,6 +108,7 @@ private: {} enum RequestFlags { RF_WAIT_GCP = 0x1 + ,RF_NO_DISK = 0x2 }; Uint32 m_flags; RequestType requestType;