Commit c992cc49 authored by unknown's avatar unknown
Browse files

ndb - more test of partitioning wrt scans & lock modes


ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
  Handle "fragment scan" (scan with distribution key) wrt committed read
ndb/test/ndbapi/testPartitioning.cpp:
  Extend test prg to try differnt lock modes / parallelism parameters
parent 6f041af1
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -9818,7 +9818,7 @@ void Dbtc::sendScanTabConf(Signal* signal, ScanRecordPtr scanPtr) {
    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;
  
  ScanTabConf * conf = (ScanTabConf*)&signal->theData[0];
@@ -9835,8 +9835,8 @@ void Dbtc::sendScanTabConf(Signal* signal, ScanRecordPtr scanPtr) {
      ScanFragRecPtr curr = ptr; // Remove while iterating...
      queued.next(ptr);
      
      bool done = curr.p->m_scan_frag_conf_status && (left == booked);
      if(curr.p->m_scan_frag_conf_status && (booked < left))
      bool done = curr.p->m_scan_frag_conf_status && (left <= (int)booked);
      if(curr.p->m_scan_frag_conf_status && ((int)booked < left))
	booked++;
      
      * ops++ = curr.p->m_apiPtr;
+49 −15
Original line number Diff line number Diff line
@@ -22,17 +22,6 @@

#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
@@ -238,10 +227,26 @@ run_tests(Ndb* p_ndb, HugoTransactions& hugoTrans, int records)
    return NDBT_FAILED;
  }

  if(hugoTrans.scanReadRecords(p_ndb, records) != 0)
  Uint32 abort = 23;
  for(Uint32 j = 0; j<5; j++){
    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)
  {
@@ -297,6 +302,26 @@ run_index_dk(NDBT_Context* ctx, NDBT_Step* step)
  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);
TESTCASE("pk_dk", 
@@ -332,6 +357,15 @@ TESTCASE("ordered_index_dk",
  INITIALIZER(run_create_pk_index_drop);
  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);

int main(int argc, const char** argv){