mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 03:21:53 +01:00
Merge pnousiainen@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/space/pekka/ndb/version/my41
This commit is contained in:
commit
1a432513ee
4 changed files with 43 additions and 4 deletions
|
@ -1,7 +1,7 @@
|
|||
Next QMGR 1
|
||||
Next NDBCNTR 1000
|
||||
Next NDBFS 2000
|
||||
Next DBACC 3001
|
||||
Next DBACC 3002
|
||||
Next DBTUP 4013
|
||||
Next DBLQH 5042
|
||||
Next DBDICT 6006
|
||||
|
@ -393,6 +393,7 @@ Failed Create Table:
|
|||
--------------------
|
||||
7173: Create table failed due to not sufficient number of fragment or
|
||||
replica records.
|
||||
3001: Fail create 1st fragment
|
||||
4007 12001: Fail create 1st fragment
|
||||
4008 12002: Fail create 2nd fragment
|
||||
4009 12003: Fail create 1st attribute in 1st fragment
|
||||
|
|
|
@ -1062,7 +1062,21 @@ void Dbacc::execACCFRAGREQ(Signal* signal)
|
|||
{
|
||||
const AccFragReq * const req = (AccFragReq*)&signal->theData[0];
|
||||
jamEntry();
|
||||
if (ERROR_INSERTED(3001)) {
|
||||
jam();
|
||||
addFragRefuse(signal, 1);
|
||||
CLEAR_ERROR_INSERT_VALUE;
|
||||
return;
|
||||
}
|
||||
tabptr.i = req->tableId;
|
||||
#ifndef VM_TRACE
|
||||
// config mismatch - do not crash if release compiled
|
||||
if (tabptr.i >= ctablesize) {
|
||||
jam();
|
||||
addFragRefuse(signal, 800);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
ptrCheckGuard(tabptr, ctablesize, tabrec);
|
||||
ndbrequire((req->reqInfo & 0xF) == ZADDFRAG);
|
||||
ndbrequire(!getrootfragmentrec(signal, rootfragrecptr, req->fragId));
|
||||
|
|
|
@ -69,6 +69,17 @@ void Dbtup::execTUPFRAGREQ(Signal* signal)
|
|||
Uint32 noOfAttributeGroups = signal->theData[12];
|
||||
Uint32 globalCheckpointIdIndicator = signal->theData[13];
|
||||
|
||||
#ifndef VM_TRACE
|
||||
// config mismatch - do not crash if release compiled
|
||||
if (regTabPtr.i >= cnoOfTablerec) {
|
||||
ljam();
|
||||
signal->theData[0] = userptr;
|
||||
signal->theData[1] = 800;
|
||||
sendSignal(userblockref, GSN_TUPFRAGREF, signal, 2, JBB);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
ptrCheckGuard(regTabPtr, cnoOfTablerec, tablerec);
|
||||
if (cfirstfreeFragopr == RNIL) {
|
||||
ljam();
|
||||
|
|
|
@ -1480,8 +1480,10 @@ runTestDictionaryPerf(NDBT_Context* ctx, NDBT_Step* step){
|
|||
}
|
||||
|
||||
int runFailAddFragment(NDBT_Context* ctx, NDBT_Step* step){
|
||||
static int acclst[] = { 3001 };
|
||||
static int tuplst[] = { 4007, 4008, 4009, 4010, 4011, 4012 };
|
||||
static int tuxlst[] = { 12001, 12002, 12003, 12004, 12005, 12006 };
|
||||
static unsigned acccnt = sizeof(acclst)/sizeof(acclst[0]);
|
||||
static unsigned tupcnt = sizeof(tuplst)/sizeof(tuplst[0]);
|
||||
static unsigned tuxcnt = sizeof(tuxlst)/sizeof(tuxlst[0]);
|
||||
|
||||
|
@ -1509,6 +1511,19 @@ int runFailAddFragment(NDBT_Context* ctx, NDBT_Step* step){
|
|||
(void)pDic->dropTable(tab.getName());
|
||||
|
||||
for (int l = 0; l < loops; l++) {
|
||||
for (unsigned i0 = 0; i0 < acccnt; i0++) {
|
||||
unsigned j = (l == 0 ? i0 : myRandom48(acccnt));
|
||||
int errval = acclst[j];
|
||||
g_info << "insert error node=" << nodeId << " value=" << errval << endl;
|
||||
CHECK2(restarter.insertErrorInNode(nodeId, errval) == 0,
|
||||
"failed to set error insert");
|
||||
CHECK2(pDic->createTable(tab) != 0,
|
||||
"failed to fail after error insert " << errval);
|
||||
CHECK2(pDic->createTable(tab) == 0,
|
||||
pDic->getNdbError());
|
||||
CHECK2(pDic->dropTable(tab.getName()) == 0,
|
||||
pDic->getNdbError());
|
||||
}
|
||||
for (unsigned i1 = 0; i1 < tupcnt; i1++) {
|
||||
unsigned j = (l == 0 ? i1 : myRandom48(tupcnt));
|
||||
int errval = tuplst[j];
|
||||
|
@ -1638,7 +1653,7 @@ TESTCASE("DictionaryPerf",
|
|||
INITIALIZER(runTestDictionaryPerf);
|
||||
}
|
||||
TESTCASE("FailAddFragment",
|
||||
"Fail add fragment or attribute in TUP or TUX\n"){
|
||||
"Fail add fragment or attribute in ACC or TUP or TUX\n"){
|
||||
INITIALIZER(runFailAddFragment);
|
||||
}
|
||||
NDBT_TESTSUITE_END(testDict);
|
||||
|
@ -1650,5 +1665,3 @@ int main(int argc, const char** argv){
|
|||
myRandom48Init(NdbTick_CurrentMillisecond());
|
||||
return testDict.execute(argc, argv);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue