Commit 4c02417f authored by unknown's avatar unknown

ndb - wl#2455 cont'd


ndb/src/kernel/blocks/dbtup/DbtupScan.cpp:
  tup scan: testOIBasic + fix
ndb/test/ndbapi/testOIBasic.cpp:
  tup scan: testOIBasic + fix
parent f6961bda
...@@ -161,6 +161,7 @@ Dbtup::execACC_CHECK_SCAN(Signal* signal) ...@@ -161,6 +161,7 @@ Dbtup::execACC_CHECK_SCAN(Signal* signal)
jam(); jam();
const PagePos& pos = scan.m_scanPos; const PagePos& pos = scan.m_scanPos;
NextScanConf* const conf = (NextScanConf*)signal->getDataPtrSend(); NextScanConf* const conf = (NextScanConf*)signal->getDataPtrSend();
conf->scanPtr = scan.m_userPtr;
conf->accOperationPtr = (Uint32)-1; // no lock returned conf->accOperationPtr = (Uint32)-1; // no lock returned
conf->fragId = frag.fragmentId | pos.m_fragBit; conf->fragId = frag.fragmentId | pos.m_fragBit;
conf->localKey[0] = (pos.m_pageId << MAX_TUPLES_BITS) | conf->localKey[0] = (pos.m_pageId << MAX_TUPLES_BITS) |
......
...@@ -257,7 +257,8 @@ struct Par : public Opt { ...@@ -257,7 +257,8 @@ struct Par : public Opt {
// deadlock possible // deadlock possible
bool m_deadlock; bool m_deadlock;
NdbOperation::LockMode m_lockmode; NdbOperation::LockMode m_lockmode;
// ordered range scan // scan options
bool m_tupscan;
bool m_ordered; bool m_ordered;
bool m_descending; bool m_descending;
// timer location // timer location
...@@ -279,6 +280,7 @@ struct Par : public Opt { ...@@ -279,6 +280,7 @@ struct Par : public Opt {
m_verify(false), m_verify(false),
m_deadlock(false), m_deadlock(false),
m_lockmode(NdbOperation::LM_Read), m_lockmode(NdbOperation::LM_Read),
m_tupscan(false),
m_ordered(false), m_ordered(false),
m_descending(false) { m_descending(false) {
} }
...@@ -1370,7 +1372,10 @@ int ...@@ -1370,7 +1372,10 @@ int
Con::readTuples(Par par) Con::readTuples(Par par)
{ {
assert(m_tx != 0 && m_scanop != 0); assert(m_tx != 0 && m_scanop != 0);
CHKCON(m_scanop->readTuples(par.m_lockmode, 0, par.m_scanpar) == 0, *this); int scan_flags = 0;
if (par.m_tupscan)
scan_flags |= NdbScanOperation::SF_TupScan;
CHKCON(m_scanop->readTuples(par.m_lockmode, scan_flags, par.m_scanpar) == 0, *this);
return 0; return 0;
} }
...@@ -3554,7 +3559,7 @@ scanreadtable(Par par) ...@@ -3554,7 +3559,7 @@ scanreadtable(Par par)
const Set& set = par.set(); const Set& set = par.set();
// expected // expected
const Set& set1 = set; const Set& set1 = set;
LL3("scanread " << tab.m_name << " lockmode=" << par.m_lockmode << " expect=" << set1.count() << " verify=" << par.m_verify); LL3("scanread " << tab.m_name << " lockmode=" << par.m_lockmode << " tupscan=" << par.m_tupscan << " expect=" << set1.count() << " verify=" << par.m_verify);
Set set2(tab, set.m_rows); Set set2(tab, set.m_rows);
CHK(con.startTransaction() == 0); CHK(con.startTransaction() == 0);
CHK(con.getNdbScanOperation(tab) == 0); CHK(con.getNdbScanOperation(tab) == 0);
...@@ -4108,6 +4113,9 @@ readverifyfull(Par par) ...@@ -4108,6 +4113,9 @@ readverifyfull(Par par)
if (par.m_no == 0) { if (par.m_no == 0) {
// thread 0 scans table // thread 0 scans table
CHK(scanreadtable(par) == 0); CHK(scanreadtable(par) == 0);
// once more via tup scan
par.m_tupscan = true;
CHK(scanreadtable(par) == 0);
} }
// each thread scans different indexes // each thread scans different indexes
for (unsigned i = 0; i < tab.m_itabs; i++) { for (unsigned i = 0; i < tab.m_itabs; i++) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment