mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 10:14:19 +01:00
Merge perch.ndb.mysql.com:/home/jonas/src/50-work
into perch.ndb.mysql.com:/home/jonas/src/mysql-5.1-new-ndb storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp: Auto merged storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: Auto merged
This commit is contained in:
commit
e8c9d968f4
2 changed files with 28 additions and 14 deletions
|
@ -1411,7 +1411,7 @@ private:
|
|||
const UintR scanParallel,
|
||||
const UintR noOprecPerFrag);
|
||||
void initScanfragrec(Signal* signal);
|
||||
void releaseScanResources(ScanRecordPtr);
|
||||
void releaseScanResources(ScanRecordPtr, bool not_started = false);
|
||||
ScanRecordPtr seizeScanrec(Signal* signal);
|
||||
void sendScanFragReq(Signal*, ScanRecord*, ScanFragRec*);
|
||||
void sendScanTabConf(Signal* signal, ScanRecordPtr);
|
||||
|
@ -1558,7 +1558,8 @@ private:
|
|||
void signalErrorRefuseLab(Signal* signal);
|
||||
void abort080Lab(Signal* signal);
|
||||
void packKeyData000Lab(Signal* signal, BlockReference TBRef, Uint32 len);
|
||||
void abortScanLab(Signal* signal, ScanRecordPtr, Uint32 errCode);
|
||||
void abortScanLab(Signal* signal, ScanRecordPtr, Uint32 errCode,
|
||||
bool not_started = false);
|
||||
void sendAbortedAfterTimeout(Signal* signal, int Tcheck);
|
||||
void abort010Lab(Signal* signal);
|
||||
void abort015Lab(Signal* signal);
|
||||
|
|
|
@ -8845,17 +8845,17 @@ void Dbtc::scanAttrinfoLab(Signal* signal, UintR Tlen)
|
|||
|
||||
scanAttrinfo_attrbuf_error:
|
||||
jam();
|
||||
abortScanLab(signal, scanptr, ZGET_ATTRBUF_ERROR);
|
||||
abortScanLab(signal, scanptr, ZGET_ATTRBUF_ERROR, true);
|
||||
return;
|
||||
|
||||
scanAttrinfo_attrbuf2_error:
|
||||
jam();
|
||||
abortScanLab(signal, scanptr, ZGET_ATTRBUF_ERROR);
|
||||
abortScanLab(signal, scanptr, ZGET_ATTRBUF_ERROR, true);
|
||||
return;
|
||||
|
||||
scanAttrinfo_len_error:
|
||||
jam();
|
||||
abortScanLab(signal, scanptr, ZLENGTH_ERROR);
|
||||
abortScanLab(signal, scanptr, ZLENGTH_ERROR, true);
|
||||
return;
|
||||
}//Dbtc::scanAttrinfoLab()
|
||||
|
||||
|
@ -8871,7 +8871,8 @@ void Dbtc::diFcountReqLab(Signal* signal, ScanRecordPtr scanptr)
|
|||
;
|
||||
} else {
|
||||
abortScanLab(signal, scanptr,
|
||||
tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion));
|
||||
tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion),
|
||||
true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -8942,13 +8943,13 @@ void Dbtc::execDI_FCOUNTCONF(Signal* signal)
|
|||
ndbrequire(scanptr.p->scanState == ScanRecord::WAIT_FRAGMENT_COUNT);
|
||||
if (apiConnectptr.p->apiFailState == ZTRUE) {
|
||||
jam();
|
||||
releaseScanResources(scanptr);
|
||||
releaseScanResources(scanptr, true);
|
||||
handleApiFailState(signal, apiConnectptr.i);
|
||||
return;
|
||||
}//if
|
||||
if (tfragCount == 0) {
|
||||
jam();
|
||||
abortScanLab(signal, scanptr, ZNO_FRAGMENT_ERROR);
|
||||
abortScanLab(signal, scanptr, ZNO_FRAGMENT_ERROR, true);
|
||||
return;
|
||||
}//if
|
||||
|
||||
|
@ -8962,7 +8963,8 @@ void Dbtc::execDI_FCOUNTCONF(Signal* signal)
|
|||
;
|
||||
} else {
|
||||
abortScanLab(signal, scanptr,
|
||||
tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion));
|
||||
tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion),
|
||||
true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -9027,20 +9029,22 @@ void Dbtc::execDI_FCOUNTREF(Signal* signal)
|
|||
ndbrequire(scanptr.p->scanState == ScanRecord::WAIT_FRAGMENT_COUNT);
|
||||
if (apiConnectptr.p->apiFailState == ZTRUE) {
|
||||
jam();
|
||||
releaseScanResources(scanptr);
|
||||
releaseScanResources(scanptr, true);
|
||||
handleApiFailState(signal, apiConnectptr.i);
|
||||
return;
|
||||
}//if
|
||||
abortScanLab(signal, scanptr, errCode);
|
||||
abortScanLab(signal, scanptr, errCode, true);
|
||||
}//Dbtc::execDI_FCOUNTREF()
|
||||
|
||||
void Dbtc::abortScanLab(Signal* signal, ScanRecordPtr scanptr, Uint32 errCode)
|
||||
void Dbtc::abortScanLab(Signal* signal, ScanRecordPtr scanptr, Uint32 errCode,
|
||||
bool not_started)
|
||||
{
|
||||
scanTabRefLab(signal, errCode);
|
||||
releaseScanResources(scanptr);
|
||||
releaseScanResources(scanptr, not_started);
|
||||
}//Dbtc::abortScanLab()
|
||||
|
||||
void Dbtc::releaseScanResources(ScanRecordPtr scanPtr)
|
||||
void Dbtc::releaseScanResources(ScanRecordPtr scanPtr,
|
||||
bool not_started)
|
||||
{
|
||||
if (apiConnectptr.p->cachePtr != RNIL) {
|
||||
cachePtr.i = apiConnectptr.p->cachePtr;
|
||||
|
@ -9052,6 +9056,15 @@ void Dbtc::releaseScanResources(ScanRecordPtr scanPtr)
|
|||
ptrCheckGuard(tcConnectptr, ctcConnectFilesize, tcConnectRecord);
|
||||
releaseTcCon();
|
||||
|
||||
if (not_started)
|
||||
{
|
||||
jam();
|
||||
ScanFragList run(c_scan_frag_pool, scanPtr.p->m_running_scan_frags);
|
||||
ScanFragList queue(c_scan_frag_pool, scanPtr.p->m_queued_scan_frags);
|
||||
run.release();
|
||||
queue.release();
|
||||
}
|
||||
|
||||
ndbrequire(scanPtr.p->m_running_scan_frags.isEmpty());
|
||||
ndbrequire(scanPtr.p->m_queued_scan_frags.isEmpty());
|
||||
ndbrequire(scanPtr.p->m_delivered_scan_frags.isEmpty());
|
||||
|
|
Loading…
Add table
Reference in a new issue