Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
ad8dad86
Commit
ad8dad86
authored
Nov 19, 2004
by
pekka@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ndb: do not crash on config mismatch if release compiled
parent
8bfa05f2
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
43 additions
and
4 deletions
+43
-4
ndb/src/kernel/blocks/ERROR_codes.txt
ndb/src/kernel/blocks/ERROR_codes.txt
+2
-1
ndb/src/kernel/blocks/dbacc/DbaccMain.cpp
ndb/src/kernel/blocks/dbacc/DbaccMain.cpp
+14
-0
ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp
ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp
+11
-0
ndb/test/ndbapi/testDict.cpp
ndb/test/ndbapi/testDict.cpp
+16
-3
No files found.
ndb/src/kernel/blocks/ERROR_codes.txt
View file @
ad8dad86
Next QMGR 1
Next NDBCNTR 1000
Next NDBFS 2000
Next DBACC 300
1
Next DBACC 300
2
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
...
...
ndb/src/kernel/blocks/dbacc/DbaccMain.cpp
View file @
ad8dad86
...
...
@@ -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
));
...
...
ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp
View file @
ad8dad86
...
...
@@ -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
();
...
...
ndb/test/ndbapi/testDict.cpp
View file @
ad8dad86
...
...
@@ -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
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment