2789 Jonas Oreland 2009-01-13
ndb - bug#42084 - dont limit TUP scans to 11, introduce different queue for TUP scans, so that it can be handled correctly wrt ACC scans
modified:
storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp
storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
2788 Leonard Zhou 2009-01-13 [merge]
merge
modified:
sql/ha_ndbcluster.cc
=== modified file 'storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp'
--- a/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp 2008-12-08 12:35:55 +0000
+++ b/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp 2009-01-13 14:42:48 +0000
@@ -708,6 +708,7 @@ public:
ScanNumberMask m_scanNumberMask;
DLList<ScanRecord>::Head m_activeScans;
DLFifoList<ScanRecord>::Head m_queuedScans;
+ DLFifoList<ScanRecord>::Head m_queuedTupScans;
Uint16 srLqhLognode[4];
/**
=== modified file 'storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp 2008-12-08 12:35:55 +0000
+++ b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp 2009-01-13 14:42:48 +0000
@@ -9895,7 +9895,6 @@ Uint32 Dblqh::initScanrec(const ScanFrag
* !idx uses 1 - (MAX_PARALLEL_SCANS_PER_FRAG - 1) = 1-11
* idx uses from MAX_PARALLEL_SCANS_PER_FRAG - MAX = 12-42)
*/
- tupScan = 0; // Make sure that close tup scan does not start acc scan incorrectly
Uint32 start = (rangeScan || tupScan) ? MAX_PARALLEL_SCANS_PER_FRAG : 1 ;
Uint32 stop = (rangeScan || tupScan) ? MAX_PARALLEL_INDEX_SCANS_PER_FRAG :
MAX_PARALLEL_SCANS_PER_FRAG - 1;
@@ -9915,7 +9914,9 @@ Uint32 Dblqh::initScanrec(const ScanFrag
*/
scanptr.p->scanState = ScanRecord::IN_QUEUE;
LocalDLFifoList<ScanRecord> queue(c_scanRecordPool,
- fragptr.p->m_queuedScans);
+ tupScan == 0 ?
+ fragptr.p->m_queuedScans :
+ fragptr.p->m_queuedTupScans);
queue.add(scanptr);
return ZOK;
}
@@ -9993,8 +9994,11 @@ void Dblqh::finishScanrec(Signal* signal
{
release_acc_ptr_list(scanptr.p);
+ Uint32 tupScan = scanptr.p->tupScan;
LocalDLFifoList<ScanRecord> queue(c_scanRecordPool,
- fragptr.p->m_queuedScans);
+ tupScan == 0 ?
+ fragptr.p->m_queuedScans :
+ fragptr.p->m_queuedTupScans);
if(scanptr.p->scanState == ScanRecord::IN_QUEUE){
jam();
| Thread |
|---|
| • bzr push into mysql-5.1 branch (jonas:2788 to 2789) Bug#42084 | Jonas Oreland | 13 Jan |