Commit d82797ec authored by jonas@perch.ndb.mysql.com's avatar jonas@perch.ndb.mysql.com

Merge perch.ndb.mysql.com:/home/jonas/src/51-work

into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.1-new-ndb
parents f56e4579 61d7b5ca
......@@ -1892,7 +1892,8 @@ int ha_ndbcluster::peek_indexed_rows(const byte *record)
int res;
DBUG_ENTER("peek_indexed_rows");
NdbOperation::LockMode lm= NdbOperation::LM_Read;
NdbOperation::LockMode lm=
(NdbOperation::LockMode)get_ndb_lock_type(m_lock.type);
first= NULL;
if (table->s->primary_key != MAX_KEY)
{
......
......@@ -683,8 +683,8 @@ void getTextMemoryUsage(QQQQ) {
const int used = theData[3];
const int total = theData[4];
const int block = theData[5];
const int percent = (used*100)/total;
const int percent = total ? (used*100)/total : 0;
BaseString::snprintf(m_text, m_text_len,
"%s usage %s %d%s(%d %dK pages of total %d)",
(block==DBACC ? "Index" : (block == DBTUP ?"Data":"<unknown>")),
......
......@@ -42,6 +42,7 @@ void Dbacc::initData()
scanRec = 0;
tabrec = 0;
cnoOfAllocatedPages = cpagesize = 0;
// Records with constant sizes
}//Dbacc::initData()
......
......@@ -113,7 +113,7 @@ void Dbacc::execCONTINUEB(Signal* signal)
case ZREPORT_MEMORY_USAGE:{
jam();
static int c_currentMemUsed = 0;
int now = (cnoOfAllocatedPages * 100)/cpagesize;
int now = cpagesize ? (cnoOfAllocatedPages * 100)/cpagesize : 0;
const int thresholds[] = { 99, 90, 80, 0};
Uint32 i = 0;
......
......@@ -1295,6 +1295,7 @@ void Dbtc::execTCRELEASEREQ(Signal* signal)
apiConnectptr.p->firstTcConnect == RNIL))
{
jam(); /* JUST REPLY OK */
apiConnectptr.p->m_transaction_nodes.clear();
releaseApiCon(signal, apiConnectptr.i);
signal->theData[0] = tuserpointer;
sendSignal(tapiBlockref,
......
......@@ -352,7 +352,8 @@ void Dbtup::tupkeyErrorLab(Signal* signal)
tabPtr.i= fragPtr.p->fragTableId;
ptrCheckGuard(tabPtr, cnoOfTablerec, tablerec);
if (regOperPtr->m_undo_buffer_space)
if (regOperPtr->m_undo_buffer_space &&
(regOperPtr->is_first_operation() && regOperPtr->is_last_operation()))
{
c_lgman->free_log_space(fragPtr.p->m_logfile_group_id,
regOperPtr->m_undo_buffer_space);
......
......@@ -169,7 +169,8 @@ void Dbtup::execCONTINUEB(Signal* signal)
case ZREPORT_MEMORY_USAGE:{
ljam();
static int c_currentMemUsed = 0;
int now = (cnoOfAllocatedPages * 100)/c_page_pool.getSize();
Uint32 tmp = c_page_pool.getSize();
int now = tmp ? (cnoOfAllocatedPages * 100)/tmp : 0;
const int thresholds[] = { 100, 90, 80, 0 };
Uint32 i = 0;
......
......@@ -360,8 +360,15 @@ NdbTransaction::execute(ExecType aTypeOfExec,
ret = -1;
if(savedError.code==0)
savedError= theError;
/**
* If AO_IgnoreError, error codes arent always set on individual
* operations, making postExecute impossible
*/
if (abortOption == AO_IgnoreError)
DBUG_RETURN(-1);
}
#ifdef ndb_api_crash_on_complex_blob_abort
assert(theFirstOpInList == NULL && theLastOpInList == NULL);
#else
......@@ -1761,8 +1768,10 @@ from other transactions.
if (tCommitFlag == 1) {
theCommitStatus = Committed;
theGlobalCheckpointId = tGCI;
assert(tGCI);
*p_latest_trans_gci = tGCI;
if (tGCI) // Read(dirty) only transaction doesnt get GCI
{
*p_latest_trans_gci = tGCI;
}
} else if ((tNoComp >= tNoSent) &&
(theLastExecOpInList->theCommitIndicator == 1)){
......
......@@ -364,6 +364,9 @@ public:
// Table create tweaks
int createHook(Ndb*, NdbDictionary::Table&, int when);
Vector<BaseString> m_tables_in_test;
void setTemporaryTables(bool val);
bool getTemporaryTables() const;
private:
int executeOne(Ndb_cluster_connection&,
const char* _tabname, const char* testname = NULL);
......@@ -390,6 +393,7 @@ private:
bool runonce;
const char* tsname;
bool createAllTables;
bool temporaryTables;
};
......
......@@ -660,9 +660,11 @@ main(int argc, const char** argv){
Vector<int> tmp;
generate(tmp, 5);
NDBT_TestSuite ts("testOperations");
ts.setTemporaryTables(true);
for(Uint32 i = 0; i < 12; i++)
{
if(false && (i == 6 || i == 8 || i == 10))
......
......@@ -372,6 +372,8 @@ main(int argc, const char** argv){
ndb_init();
NDBT_TestSuite ts("testOperations");
ts.setTemporaryTables(true);
for(Uint32 i = 0; i<sizeof(matrix)/sizeof(matrix[0]); i++){
NDBT_TestCaseImpl1 *pt = new NDBT_TestCaseImpl1(&ts, matrix[i].name, "");
......
......@@ -1039,6 +1039,11 @@ loop:
j++;
}
j++;
if (tmpTab.getTemporary())
{
tmpIndx.setTemporary(true);
tmpIndx.setLogging(false);
}
if(pNdb->getDictionary()->createIndex(tmpIndx) != 0){
ndbout << pNdb->getDictionary()->getNdbError() << endl;
return NDBT_FAILED;
......
......@@ -770,6 +770,7 @@ NDBT_TestSuite::NDBT_TestSuite(const char* pname):name(pname){
diskbased = false;
tsname = NULL;
createAllTables = false;
temporaryTables = false;
}
......@@ -791,6 +792,14 @@ void NDBT_TestSuite::setCreateAllTables(bool _flag){
createAllTables = _flag;
}
void NDBT_TestSuite::setTemporaryTables(bool val){
temporaryTables = val;
}
bool NDBT_TestSuite::getTemporaryTables() const {
return temporaryTables;
}
bool NDBT_TestSuite::timerIsOn(){
return (timer != 0);
}
......@@ -805,6 +814,7 @@ static int
g_create_hook(Ndb* ndb, NdbDictionary::Table& tab, int when, void* arg)
{
NDBT_TestSuite* ts = (NDBT_TestSuite*)arg;
return ts->createHook(ndb, tab, when);
}
......@@ -942,14 +952,23 @@ int
NDBT_TestSuite::createHook(Ndb* ndb, NdbDictionary::Table& tab, int when)
{
if (when == 0) {
if (diskbased) {
for (int i = 0; i < tab.getNoOfColumns(); i++) {
if (diskbased)
{
for (int i = 0; i < tab.getNoOfColumns(); i++)
{
NdbDictionary::Column* col = tab.getColumn(i);
if (! col->getPrimaryKey()) {
if (! col->getPrimaryKey())
{
col->setStorageType(NdbDictionary::Column::StorageTypeDisk);
}
}
}
else if (temporaryTables)
{
tab.setTemporary(true);
tab.setLogging(false);
}
if (tsname != NULL) {
tab.setTablespace(tsname);
}
......
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