mirror of
https://github.com/MariaDB/server.git
synced 2025-01-25 00:04:33 +01:00
Merge mysql.com:/home/jonas/src/mysql-4.1-fix
into mysql.com:/home/jonas/src/mysql-5.0-ndb ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: Auto merged ndb/src/ndbapi/NdbScanOperation.cpp: Auto merged
This commit is contained in:
commit
9fcc0dc73e
6 changed files with 20 additions and 12 deletions
|
@ -30,13 +30,14 @@ printSCANTABREQ(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiv
|
|||
fprintf(output, " apiConnectPtr: H\'%.8x",
|
||||
sig->apiConnectPtr);
|
||||
fprintf(output, " requestInfo: H\'%.8x:\n", requestInfo);
|
||||
fprintf(output, " Parallellism: %u, Batch: %u LockMode: %u, Keyinfo: %u Holdlock: %u, RangeScan: %u\n",
|
||||
fprintf(output, " Parallellism: %u, Batch: %u LockMode: %u, Keyinfo: %u Holdlock: %u, RangeScan: %u ReadCommitted: %u\n",
|
||||
sig->getParallelism(requestInfo),
|
||||
sig->getScanBatch(requestInfo),
|
||||
sig->getLockMode(requestInfo),
|
||||
sig->getKeyinfoFlag(requestInfo),
|
||||
sig->getHoldLockFlag(requestInfo),
|
||||
sig->getRangeScanFlag(requestInfo),
|
||||
sig->getKeyinfoFlag(requestInfo));
|
||||
sig->getReadCommittedFlag(requestInfo));
|
||||
|
||||
Uint32 keyLen = (sig->attrLenKeyLen >> 16);
|
||||
Uint32 attrLen = (sig->attrLenKeyLen & 0xFFFF);
|
||||
|
|
|
@ -9340,7 +9340,6 @@ void Dbtc::execSCAN_NEXTREQ(Signal* signal)
|
|||
/*********************************************************************
|
||||
* APPLICATION IS CLOSING THE SCAN.
|
||||
**********************************************************************/
|
||||
ndbrequire(len == 0);
|
||||
close_scan_req(signal, scanptr, true);
|
||||
return;
|
||||
}//if
|
||||
|
@ -9468,7 +9467,7 @@ Dbtc::close_scan_req(Signal* signal, ScanRecordPtr scanPtr, bool req_received){
|
|||
ndbrequire(curr.p->scanFragState == ScanFragRec::DELIVERED);
|
||||
delivered.remove(curr);
|
||||
|
||||
if(curr.p->m_ops > 0){
|
||||
if(curr.p->m_ops > 0 && curr.p->m_scan_frag_conf_status == 0){
|
||||
jam();
|
||||
running.add(curr);
|
||||
curr.p->scanFragState = ScanFragRec::LQH_ACTIVE;
|
||||
|
|
|
@ -57,12 +57,18 @@ NdbConnection::receiveSCAN_TABREF(NdbApiSignal* aSignal){
|
|||
|
||||
if(checkState_TransId(&ref->transId1)){
|
||||
theScanningOp->theError.code = ref->errorCode;
|
||||
theScanningOp->execCLOSE_SCAN_REP();
|
||||
if(!ref->closeNeeded){
|
||||
theScanningOp->execCLOSE_SCAN_REP();
|
||||
return 0;
|
||||
}
|
||||
assert(theScanningOp->m_sent_receivers_count);
|
||||
|
||||
/**
|
||||
* Setup so that close_impl will actually perform a close
|
||||
* and not "close scan"-optimze it away
|
||||
*/
|
||||
theScanningOp->m_conf_receivers_count++;
|
||||
theScanningOp->m_conf_receivers[0] = theScanningOp->m_receivers[0];
|
||||
theScanningOp->m_conf_receivers[0]->m_tcPtrI = ~0;
|
||||
return 0;
|
||||
} else {
|
||||
#ifdef NDB_NO_DROPPED_SIGNAL
|
||||
|
|
|
@ -561,21 +561,22 @@ NdbScanOperation::send_next_scan(Uint32 cnt, bool stopScanFlag){
|
|||
sent++;
|
||||
}
|
||||
}
|
||||
memcpy(&m_api_receivers[0], &m_api_receivers[cnt], cnt * sizeof(char*));
|
||||
memmove(m_api_receivers, m_api_receivers+cnt,
|
||||
(theParallelism-cnt) * sizeof(char*));
|
||||
|
||||
int ret = 0;
|
||||
if(sent)
|
||||
{
|
||||
Uint32 nodeId = theNdbCon->theDBnode;
|
||||
TransporterFacade * tp = TransporterFacade::instance();
|
||||
if(cnt > 21 && !stopScanFlag){
|
||||
if(cnt > 21){
|
||||
tSignal.setLength(4);
|
||||
LinearSectionPtr ptr[3];
|
||||
ptr[0].p = prep_array;
|
||||
ptr[0].sz = sent;
|
||||
ret = tp->sendSignal(&tSignal, nodeId, ptr, 1);
|
||||
} else {
|
||||
tSignal.setLength(4+(stopScanFlag ? 0 : sent));
|
||||
tSignal.setLength(4+sent);
|
||||
ret = tp->sendSignal(&tSignal, nodeId);
|
||||
}
|
||||
}
|
||||
|
@ -635,6 +636,7 @@ NdbScanOperation::execCLOSE_SCAN_REP(){
|
|||
m_api_receivers_count = 0;
|
||||
m_conf_receivers_count = 0;
|
||||
m_sent_receivers_count = 0;
|
||||
m_current_api_receiver = theParallelism;
|
||||
}
|
||||
|
||||
void NdbScanOperation::release()
|
||||
|
|
|
@ -839,9 +839,9 @@ void NDBT_TestSuite::execute(Ndb* ndb, const NdbDictionary::Table* pTab,
|
|||
continue;
|
||||
}
|
||||
pTab2 = pDict->getTable(pTab->getName());
|
||||
} else {
|
||||
} else if(!pTab2) {
|
||||
pTab2 = pTab;
|
||||
}
|
||||
}
|
||||
|
||||
ctx = new NDBT_Context();
|
||||
ctx->setTab(pTab2);
|
||||
|
|
|
@ -50,7 +50,7 @@ static struct my_option my_long_options[] =
|
|||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
|
||||
{ "parallelism", 'p', "parallelism",
|
||||
(gptr*) &_parallelism, (gptr*) &_parallelism, 0,
|
||||
GET_INT, REQUIRED_ARG, 240, 0, 0, 0, 0, 0 },
|
||||
GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
|
||||
{ "lock", 'l', "Read(0), Read-hold(1), Exclusive(2)",
|
||||
(gptr*) &_lock, (gptr*) &_lock, 0,
|
||||
GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
|
||||
|
|
Loading…
Add table
Reference in a new issue