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 QMGR 1
|
||||||
Next NDBCNTR 1000
|
Next NDBCNTR 1000
|
||||||
Next NDBFS 2000
|
Next NDBFS 2000
|
||||||
Next DBACC 3001
|
Next DBACC 3002
|
||||||
Next DBTUP 4013
|
Next DBTUP 4013
|
||||||
Next DBLQH 5042
|
Next DBLQH 5042
|
||||||
Next DBDICT 6006
|
Next DBDICT 6006
|
||||||
|
@ -393,6 +393,7 @@ Failed Create Table:
|
||||||
--------------------
|
--------------------
|
||||||
7173: Create table failed due to not sufficient number of fragment or
|
7173: Create table failed due to not sufficient number of fragment or
|
||||||
replica records.
|
replica records.
|
||||||
|
3001: Fail create 1st fragment
|
||||||
4007 12001: Fail create 1st fragment
|
4007 12001: Fail create 1st fragment
|
||||||
4008 12002: Fail create 2nd fragment
|
4008 12002: Fail create 2nd fragment
|
||||||
4009 12003: Fail create 1st attribute in 1st 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];
|
const AccFragReq * const req = (AccFragReq*)&signal->theData[0];
|
||||||
jamEntry();
|
jamEntry();
|
||||||
|
if (ERROR_INSERTED(3001)) {
|
||||||
|
jam();
|
||||||
|
addFragRefuse(signal, 1);
|
||||||
|
CLEAR_ERROR_INSERT_VALUE;
|
||||||
|
return;
|
||||||
|
}
|
||||||
tabptr.i = req->tableId;
|
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);
|
ptrCheckGuard(tabptr, ctablesize, tabrec);
|
||||||
ndbrequire((req->reqInfo & 0xF) == ZADDFRAG);
|
ndbrequire((req->reqInfo & 0xF) == ZADDFRAG);
|
||||||
ndbrequire(!getrootfragmentrec(signal, rootfragrecptr, req->fragId));
|
ndbrequire(!getrootfragmentrec(signal, rootfragrecptr, req->fragId));
|
||||||
|
|
|
@ -69,6 +69,17 @@ void Dbtup::execTUPFRAGREQ(Signal* signal)
|
||||||
Uint32 noOfAttributeGroups = signal->theData[12];
|
Uint32 noOfAttributeGroups = signal->theData[12];
|
||||||
Uint32 globalCheckpointIdIndicator = signal->theData[13];
|
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);
|
ptrCheckGuard(regTabPtr, cnoOfTablerec, tablerec);
|
||||||
if (cfirstfreeFragopr == RNIL) {
|
if (cfirstfreeFragopr == RNIL) {
|
||||||
ljam();
|
ljam();
|
||||||
|
|
|
@ -1480,8 +1480,10 @@ runTestDictionaryPerf(NDBT_Context* ctx, NDBT_Step* step){
|
||||||
}
|
}
|
||||||
|
|
||||||
int runFailAddFragment(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 tuplst[] = { 4007, 4008, 4009, 4010, 4011, 4012 };
|
||||||
static int tuxlst[] = { 12001, 12002, 12003, 12004, 12005, 12006 };
|
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 tupcnt = sizeof(tuplst)/sizeof(tuplst[0]);
|
||||||
static unsigned tuxcnt = sizeof(tuxlst)/sizeof(tuxlst[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());
|
(void)pDic->dropTable(tab.getName());
|
||||||
|
|
||||||
for (int l = 0; l < loops; l++) {
|
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++) {
|
for (unsigned i1 = 0; i1 < tupcnt; i1++) {
|
||||||
unsigned j = (l == 0 ? i1 : myRandom48(tupcnt));
|
unsigned j = (l == 0 ? i1 : myRandom48(tupcnt));
|
||||||
int errval = tuplst[j];
|
int errval = tuplst[j];
|
||||||
|
@ -1638,7 +1653,7 @@ TESTCASE("DictionaryPerf",
|
||||||
INITIALIZER(runTestDictionaryPerf);
|
INITIALIZER(runTestDictionaryPerf);
|
||||||
}
|
}
|
||||||
TESTCASE("FailAddFragment",
|
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);
|
INITIALIZER(runFailAddFragment);
|
||||||
}
|
}
|
||||||
NDBT_TESTSUITE_END(testDict);
|
NDBT_TESTSUITE_END(testDict);
|
||||||
|
@ -1650,5 +1665,3 @@ int main(int argc, const char** argv){
|
||||||
myRandom48Init(NdbTick_CurrentMillisecond());
|
myRandom48Init(NdbTick_CurrentMillisecond());
|
||||||
return testDict.execute(argc, argv);
|
return testDict.execute(argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue