Commit f70e030f authored by joreland@mysql.com's avatar joreland@mysql.com

ndb - more test of partitioning wrt scans & lock modes

parent f0834007
...@@ -9818,7 +9818,7 @@ void Dbtc::sendScanTabConf(Signal* signal, ScanRecordPtr scanPtr) { ...@@ -9818,7 +9818,7 @@ void Dbtc::sendScanTabConf(Signal* signal, ScanRecordPtr scanPtr) {
ops += 21; ops += 21;
} }
Uint32 left = scanPtr.p->scanNoFrag - scanPtr.p->scanNextFragId; int left = scanPtr.p->scanNoFrag - scanPtr.p->scanNextFragId;
Uint32 booked = scanPtr.p->m_booked_fragments_count; Uint32 booked = scanPtr.p->m_booked_fragments_count;
ScanTabConf * conf = (ScanTabConf*)&signal->theData[0]; ScanTabConf * conf = (ScanTabConf*)&signal->theData[0];
...@@ -9835,8 +9835,8 @@ void Dbtc::sendScanTabConf(Signal* signal, ScanRecordPtr scanPtr) { ...@@ -9835,8 +9835,8 @@ void Dbtc::sendScanTabConf(Signal* signal, ScanRecordPtr scanPtr) {
ScanFragRecPtr curr = ptr; // Remove while iterating... ScanFragRecPtr curr = ptr; // Remove while iterating...
queued.next(ptr); queued.next(ptr);
bool done = curr.p->m_scan_frag_conf_status && (left == booked); bool done = curr.p->m_scan_frag_conf_status && (left <= (int)booked);
if(curr.p->m_scan_frag_conf_status && (booked < left)) if(curr.p->m_scan_frag_conf_status && ((int)booked < left))
booked++; booked++;
* ops++ = curr.p->m_apiPtr; * ops++ = curr.p->m_apiPtr;
......
...@@ -22,17 +22,6 @@ ...@@ -22,17 +22,6 @@
#define GETNDB(ps) ((NDBT_NdbApiStep*)ps)->getNdb() #define GETNDB(ps) ((NDBT_NdbApiStep*)ps)->getNdb()
static
int runLoadTable(NDBT_Context* ctx, NDBT_Step* step)
{
int records = ctx->getNumRecords();
HugoTransactions hugoTrans(*ctx->getTab());
if (hugoTrans.loadTable(GETNDB(step), records) != 0){
return NDBT_FAILED;
}
return NDBT_OK;
}
static Uint32 max_dks = 0; static Uint32 max_dks = 0;
static static
...@@ -238,11 +227,27 @@ run_tests(Ndb* p_ndb, HugoTransactions& hugoTrans, int records) ...@@ -238,11 +227,27 @@ run_tests(Ndb* p_ndb, HugoTransactions& hugoTrans, int records)
return NDBT_FAILED; return NDBT_FAILED;
} }
if(hugoTrans.scanReadRecords(p_ndb, records) != 0) Uint32 abort = 23;
{ for(Uint32 j = 0; j<5; j++){
return NDBT_FAILED; Uint32 parallelism = (j == 1 ? 1 : j * 3);
ndbout_c("parallelism: %d", parallelism);
if (hugoTrans.scanReadRecords(p_ndb, records, abort, parallelism,
NdbOperation::LM_Read) != 0)
{
return NDBT_FAILED;
}
if (hugoTrans.scanReadRecords(p_ndb, records, abort, parallelism,
NdbOperation::LM_Exclusive) != 0)
{
return NDBT_FAILED;
}
if (hugoTrans.scanReadRecords(p_ndb, records, abort, parallelism,
NdbOperation::LM_CommittedRead) != 0)
{
return NDBT_FAILED;
}
} }
if(hugoTrans.clearTable(p_ndb, records) != 0) if(hugoTrans.clearTable(p_ndb, records) != 0)
{ {
return NDBT_FAILED; return NDBT_FAILED;
...@@ -297,6 +302,26 @@ run_index_dk(NDBT_Context* ctx, NDBT_Step* step) ...@@ -297,6 +302,26 @@ run_index_dk(NDBT_Context* ctx, NDBT_Step* step)
return run_tests(p_ndb, hugoTrans, records); return run_tests(p_ndb, hugoTrans, records);
} }
static int
run_startHint(NDBT_Context* ctx, NDBT_Step* step)
{
Ndb* p_ndb = GETNDB(step);
int records = ctx->getNumRecords();
const NdbDictionary::Table *tab =
p_ndb->getDictionary()->getTable(ctx->getTab()->getName());
if(!tab)
return NDBT_OK;
HugoTransactions hugoTrans(*tab);
if (hugoTrans.loadTable(p_ndb, records) != 0)
{
return NDBT_FAILED;
}
return NDBT_OK;
}
NDBT_TESTSUITE(testPartitioning); NDBT_TESTSUITE(testPartitioning);
TESTCASE("pk_dk", TESTCASE("pk_dk",
...@@ -332,6 +357,15 @@ TESTCASE("ordered_index_dk", ...@@ -332,6 +357,15 @@ TESTCASE("ordered_index_dk",
INITIALIZER(run_create_pk_index_drop); INITIALIZER(run_create_pk_index_drop);
INITIALIZER(run_drop_table); INITIALIZER(run_drop_table);
} }
TESTCASE("startTransactionHint",
"Test startTransactionHint")
{
TC_PROPERTY("distributionkey", ~0);
INITIALIZER(run_drop_table);
INITIALIZER(run_create_table);
INITIALIZER(run_startHint);
INITIALIZER(run_drop_table);
}
NDBT_TESTSUITE_END(testPartitioning); NDBT_TESTSUITE_END(testPartitioning);
int main(int argc, const char** argv){ int main(int argc, const char** argv){
......
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