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
f12f98e2
Commit
f12f98e2
authored
Sep 17, 2005
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge perch.ndb.mysql.com:/home/jonas/src/mysql-4.1
into perch.ndb.mysql.com:/home/jonas/src/mysql-4.1-push
parents
d6afdcb7
d0eb3e28
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
374 additions
and
514 deletions
+374
-514
ndb/include/ndbapi/Ndb.hpp
ndb/include/ndbapi/Ndb.hpp
+13
-15
ndb/include/ndbapi/NdbBlob.hpp
ndb/include/ndbapi/NdbBlob.hpp
+5
-1
ndb/include/ndbapi/NdbConnection.hpp
ndb/include/ndbapi/NdbConnection.hpp
+6
-6
ndb/include/ndbapi/NdbIndexOperation.hpp
ndb/include/ndbapi/NdbIndexOperation.hpp
+1
-0
ndb/include/ndbapi/NdbIndexScanOperation.hpp
ndb/include/ndbapi/NdbIndexScanOperation.hpp
+2
-0
ndb/include/ndbapi/NdbOperation.hpp
ndb/include/ndbapi/NdbOperation.hpp
+5
-3
ndb/include/ndbapi/NdbRecAttr.hpp
ndb/include/ndbapi/NdbRecAttr.hpp
+5
-2
ndb/src/ndbapi/NdbApiSignal.cpp
ndb/src/ndbapi/NdbApiSignal.cpp
+19
-0
ndb/src/ndbapi/NdbApiSignal.hpp
ndb/src/ndbapi/NdbApiSignal.hpp
+2
-1
ndb/src/ndbapi/NdbBlob.cpp
ndb/src/ndbapi/NdbBlob.cpp
+1
-1
ndb/src/ndbapi/NdbImpl.hpp
ndb/src/ndbapi/NdbImpl.hpp
+119
-0
ndb/src/ndbapi/NdbRecAttr.cpp
ndb/src/ndbapi/NdbRecAttr.cpp
+2
-2
ndb/src/ndbapi/NdbUtil.cpp
ndb/src/ndbapi/NdbUtil.cpp
+6
-10
ndb/src/ndbapi/NdbUtil.hpp
ndb/src/ndbapi/NdbUtil.hpp
+23
-17
ndb/src/ndbapi/Ndbif.cpp
ndb/src/ndbapi/Ndbif.cpp
+0
-9
ndb/src/ndbapi/Ndbinit.cpp
ndb/src/ndbapi/Ndbinit.cpp
+0
-39
ndb/src/ndbapi/Ndblist.cpp
ndb/src/ndbapi/Ndblist.cpp
+138
-381
ndb/test/include/NDBT_Test.hpp
ndb/test/include/NDBT_Test.hpp
+1
-1
ndb/test/ndbapi/bank/BankLoad.cpp
ndb/test/ndbapi/bank/BankLoad.cpp
+2
-2
ndb/test/ndbapi/testOIBasic.cpp
ndb/test/ndbapi/testOIBasic.cpp
+3
-3
ndb/test/src/HugoCalculator.cpp
ndb/test/src/HugoCalculator.cpp
+3
-3
ndb/test/src/NDBT_Test.cpp
ndb/test/src/NDBT_Test.cpp
+1
-1
ndb/test/src/NdbBackup.cpp
ndb/test/src/NdbBackup.cpp
+1
-1
ndb/test/src/NdbRestarts.cpp
ndb/test/src/NdbRestarts.cpp
+15
-15
ndb/tools/restore/Restore.cpp
ndb/tools/restore/Restore.cpp
+1
-1
No files found.
ndb/include/ndbapi/Ndb.hpp
View file @
f12f98e2
...
...
@@ -882,10 +882,10 @@ class BaseString;
class
NdbEventOperation
;
class
NdbBlob
;
class
NdbReceiver
;
template
<
class
T
>
struct
Ndb_free_list_t
;
typedef
void
(
*
NdbEventCallback
)(
NdbEventOperation
*
,
Ndb
*
,
void
*
);
#if defined NDB_OSE
/**
* Default time to wait for response after request has been sent to
...
...
@@ -1386,8 +1386,20 @@ public:
*/
NdbConnection
*
hupp
(
NdbConnection
*
);
Uint32
getReference
()
const
{
return
theMyRef
;}
struct
Free_list_usage
{
const
char
*
m_name
;
Uint32
m_created
;
Uint32
m_free
;
Uint32
m_sizeof
;
};
Free_list_usage
*
get_free_list_usage
(
Free_list_usage
*
);
#endif
/*****************************************************************************
* These are service routines used by the other classes in the NDBAPI.
****************************************************************************/
...
...
@@ -1562,22 +1574,8 @@ private:
class
NdbDictionaryImpl
*
theDictionary
;
class
NdbGlobalEventBufferHandle
*
theGlobalEventBufferHandle
;
NdbConnection
*
theConIdleList
;
// First connection in idle list.
NdbOperation
*
theOpIdleList
;
// First operation in the idle list.
NdbIndexScanOperation
*
theScanOpIdleList
;
// First scan operation in the idle list.
NdbIndexOperation
*
theIndexOpIdleList
;
// First index operation in the idle list.
NdbConnection
*
theTransactionList
;
NdbConnection
**
theConnectionArray
;
NdbRecAttr
*
theRecAttrIdleList
;
NdbApiSignal
*
theSignalIdleList
;
// First signal in idlelist.
NdbLabel
*
theLabelList
;
// First label descriptor in list
NdbBranch
*
theBranchList
;
// First branch descriptor in list
NdbSubroutine
*
theSubroutineList
;
// First subroutine descriptor in
NdbCall
*
theCallList
;
// First call descriptor in list
NdbReceiver
*
theScanList
;
NdbBlob
*
theNdbBlobIdleList
;
Uint32
theMyRef
;
// My block reference
Uint32
theNode
;
// The node number of our node
...
...
ndb/include/ndbapi/NdbBlob.hpp
View file @
f12f98e2
...
...
@@ -262,7 +262,7 @@ private:
// for keeping in lists
NdbBlob
*
theNext
;
// initialization
NdbBlob
();
NdbBlob
(
Ndb
*
);
void
init
();
void
release
();
// classify operations
...
...
@@ -314,6 +314,10 @@ private:
int
getOperationType
()
const
;
friend
class
NdbOut
&
operator
<<
(
NdbOut
&
,
const
NdbBlob
&
);
#endif
void
next
(
NdbBlob
*
obj
)
{
theNext
=
obj
;}
NdbBlob
*
next
()
{
return
theNext
;}
friend
struct
Ndb_free_list_t
<
NdbBlob
>
;
};
#endif
ndb/include/ndbapi/NdbConnection.hpp
View file @
f12f98e2
...
...
@@ -18,8 +18,9 @@
#define NdbConnection_H
#include <ndb_types.h>
#include <NdbError.hpp>
#include <NdbDictionary.hpp>
#include "NdbError.hpp"
#include "NdbDictionary.hpp"
#include "Ndb.hpp"
class
NdbConnection
;
class
NdbOperation
;
...
...
@@ -465,10 +466,10 @@ private:
/**************************************************************************
* These are the create and delete methods of this class. *
**************************************************************************/
NdbConnection
(
Ndb
*
aNdb
);
~
NdbConnection
();
NdbConnection
*
next
();
// Returns the next pointer
void
next
(
NdbConnection
*
);
// Sets the next pointer
void
init
();
// Initialize connection object for new transaction
...
...
@@ -487,8 +488,6 @@ private:
int
getTC_ConnectPtr
();
// Gets TC Connect pointer
void
setBuddyConPtr
(
Uint32
);
// Sets Buddy Con Ptr
Uint32
getBuddyConPtr
();
// Gets Buddy Con Ptr
NdbConnection
*
next
();
// Returns the next pointer
void
next
(
NdbConnection
*
);
// Sets the next pointer
enum
ConStatusType
{
NotConnected
,
...
...
@@ -691,6 +690,7 @@ private:
void
define_scan_op
(
NdbIndexScanOperation
*
);
friend
class
HugoOperations
;
friend
struct
Ndb_free_list_t
<
NdbConnection
>
;
};
inline
...
...
ndb/include/ndbapi/NdbIndexOperation.hpp
View file @
f12f98e2
...
...
@@ -200,6 +200,7 @@ private:
Uint32
m_theIndexDefined
[
NDB_MAX_ATTRIBUTES_IN_INDEX
][
3
];
Uint32
m_theIndexLen
;
// Length of the index in words
Uint32
m_theNoOfIndexDefined
;
// The number of index attributes
friend
struct
Ndb_free_list_t
<
NdbIndexOperation
>
;
};
#endif
ndb/include/ndbapi/NdbIndexScanOperation.hpp
View file @
f12f98e2
...
...
@@ -132,6 +132,8 @@ private:
int
compare
(
Uint32
key
,
Uint32
cols
,
const
NdbReceiver
*
,
const
NdbReceiver
*
);
Uint32
m_sort_columns
;
friend
struct
Ndb_free_list_t
<
NdbIndexScanOperation
>
;
};
#endif
ndb/include/ndbapi/NdbOperation.hpp
View file @
f12f98e2
...
...
@@ -22,6 +22,7 @@
#include "NdbError.hpp"
#include "NdbReceiver.hpp"
#include "NdbDictionary.hpp"
#include "Ndb.hpp"
class
Ndb
;
class
NdbApiSignal
;
...
...
@@ -723,8 +724,6 @@ protected:
/******************************************************************************
* These are the methods used to create and delete the NdbOperation objects.
*****************************************************************************/
NdbOperation
(
Ndb
*
aNdb
);
virtual
~
NdbOperation
();
bool
needReply
();
/******************************************************************************
...
...
@@ -736,8 +735,9 @@ protected:
int
init
(
const
class
NdbTableImpl
*
,
NdbConnection
*
aCon
);
void
initInterpreter
();
NdbOperation
(
Ndb
*
aNdb
);
virtual
~
NdbOperation
();
void
next
(
NdbOperation
*
);
// Set next pointer
NdbOperation
*
next
();
// Get next pointer
enum
OperationStatus
{
...
...
@@ -925,6 +925,8 @@ protected:
* IgnoreError on connection level.
*/
Int8
m_abortOption
;
friend
struct
Ndb_free_list_t
<
NdbOperation
>
;
};
#ifdef NDB_NO_DROPPED_SIGNAL
...
...
ndb/include/ndbapi/NdbRecAttr.hpp
View file @
f12f98e2
...
...
@@ -17,7 +17,8 @@
#ifndef NdbRecAttr_H
#define NdbRecAttr_H
#include <NdbDictionary.hpp>
#include "NdbDictionary.hpp"
#include "Ndb.hpp"
class
NdbOperation
;
...
...
@@ -242,7 +243,6 @@ public:
*/
~
NdbRecAttr
();
private:
NdbRecAttr
();
Uint32
attrId
()
const
;
/* Get attribute id */
bool
setNULL
();
/* Set NULL indicator */
...
...
@@ -251,6 +251,7 @@ private:
void
release
();
/* Release memory if allocated */
void
init
();
/* Initialise object when allocated */
NdbRecAttr
(
Ndb
*
);
void
next
(
NdbRecAttr
*
aRecAttr
);
NdbRecAttr
*
next
()
const
;
...
...
@@ -273,6 +274,8 @@ private:
Uint32
theAttrSize
;
Uint32
theArraySize
;
const
NdbDictionary
::
Column
*
m_column
;
friend
struct
Ndb_free_list_t
<
NdbRecAttr
>
;
};
inline
...
...
ndb/src/ndbapi/NdbApiSignal.cpp
View file @
f12f98e2
...
...
@@ -62,6 +62,25 @@ NdbApiSignal::NdbApiSignal(BlockReference ref)
theNextSignal
=
0
;
}
NdbApiSignal
::
NdbApiSignal
(
Ndb
*
ndb
)
{
BlockReference
ref
=
ndb
->
theMyRef
;
theVerId_signalNumber
=
0
;
// 4 bit ver id - 16 bit gsn
theReceiversBlockNumber
=
0
;
// Only 16 bit blocknum
theSendersBlockRef
=
refToBlock
(
ref
);
theLength
=
0
;
theSendersSignalId
=
0
;
theSignalId
=
0
;
theTrace
=
0
;
m_noOfSections
=
0
;
m_fragmentInfo
=
0
;
for
(
int
i
=
0
;
i
<
25
;
i
++
)
theData
[
i
]
=
0x13579753
;
setDataPtr
(
&
theData
[
0
]);
theNextSignal
=
0
;
}
/**
* Copy constructor
*/
...
...
ndb/src/ndbapi/NdbApiSignal.hpp
View file @
f12f98e2
...
...
@@ -46,7 +46,8 @@
class
NdbApiSignal
:
public
SignalHeader
{
public:
NdbApiSignal
(
BlockReference
myRef
);
NdbApiSignal
(
Ndb
*
ndb
);
NdbApiSignal
(
BlockReference
ref
);
NdbApiSignal
(
const
NdbApiSignal
&
);
NdbApiSignal
(
const
SignalHeader
&
header
)
:
SignalHeader
(
header
),
theNextSignal
(
0
),
theRealData
(
0
)
{};
...
...
ndb/src/ndbapi/NdbBlob.cpp
View file @
f12f98e2
...
...
@@ -137,7 +137,7 @@ NdbBlob::getBlobTable(NdbTableImpl& bt, const NdbTableImpl* t, const NdbColumnIm
// initialization
NdbBlob
::
NdbBlob
()
NdbBlob
::
NdbBlob
(
Ndb
*
)
{
init
();
}
...
...
ndb/src/ndbapi/NdbImpl.hpp
View file @
f12f98e2
...
...
@@ -32,6 +32,21 @@
#include "NdbDictionaryImpl.hpp"
#include "ObjectMap.hpp"
template
<
class
T
>
struct
Ndb_free_list_t
{
Ndb_free_list_t
();
~
Ndb_free_list_t
();
void
fill
(
Ndb
*
,
Uint32
cnt
);
T
*
seize
(
Ndb
*
);
void
release
(
T
*
);
void
clear
();
Uint32
get_sizeof
()
const
{
return
sizeof
(
T
);
}
T
*
m_free_list
;
Uint32
m_alloc_cnt
,
m_free_cnt
;
};
/**
* Private parts of the Ndb object (corresponding to Ndb.hpp in public API)
*/
...
...
@@ -59,6 +74,23 @@ public:
NdbWaiter
theWaiter
;
int
m_optimized_node_selection
;
/**
* NOTE free lists must be _after_ theNdbObjectIdMap take
* assure that destructors are run in correct order
*/
Ndb_free_list_t
<
NdbConnection
>
theConIdleList
;
Ndb_free_list_t
<
NdbOperation
>
theOpIdleList
;
Ndb_free_list_t
<
NdbIndexScanOperation
>
theScanOpIdleList
;
Ndb_free_list_t
<
NdbIndexOperation
>
theIndexOpIdleList
;
Ndb_free_list_t
<
NdbRecAttr
>
theRecAttrIdleList
;
Ndb_free_list_t
<
NdbApiSignal
>
theSignalIdleList
;
Ndb_free_list_t
<
NdbLabel
>
theLabelList
;
Ndb_free_list_t
<
NdbBranch
>
theBranchList
;
Ndb_free_list_t
<
NdbSubroutine
>
theSubroutineList
;
Ndb_free_list_t
<
NdbCall
>
theCallList
;
Ndb_free_list_t
<
NdbBlob
>
theNdbBlobIdleList
;
Ndb_free_list_t
<
NdbReceiver
>
theScanList
;
};
#ifdef VM_TRACE
...
...
@@ -133,4 +165,91 @@ enum LockMode {
Delete
};
template
<
class
T
>
inline
Ndb_free_list_t
<
T
>::
Ndb_free_list_t
()
{
m_free_list
=
0
;
m_alloc_cnt
=
m_free_cnt
=
0
;
}
template
<
class
T
>
inline
Ndb_free_list_t
<
T
>::~
Ndb_free_list_t
()
{
clear
();
}
template
<
class
T
>
inline
void
Ndb_free_list_t
<
T
>::
fill
(
Ndb
*
ndb
,
Uint32
cnt
)
{
if
(
m_free_list
==
0
)
{
m_free_cnt
++
;
m_alloc_cnt
++
;
m_free_list
=
new
T
(
ndb
);
}
while
(
m_alloc_cnt
<
cnt
)
{
T
*
obj
=
new
T
(
ndb
);
if
(
obj
==
0
)
return
;
obj
->
next
(
m_free_list
);
m_free_cnt
++
;
m_alloc_cnt
++
;
m_free_list
=
obj
;
}
}
template
<
class
T
>
inline
T
*
Ndb_free_list_t
<
T
>::
seize
(
Ndb
*
ndb
)
{
T
*
tmp
=
m_free_list
;
if
(
tmp
)
{
m_free_list
=
(
T
*
)
tmp
->
next
();
tmp
->
next
(
NULL
);
m_free_cnt
--
;
return
tmp
;
}
if
((
tmp
=
new
T
(
ndb
)))
{
m_alloc_cnt
++
;
}
return
tmp
;
}
template
<
class
T
>
inline
void
Ndb_free_list_t
<
T
>::
release
(
T
*
obj
)
{
obj
->
next
(
m_free_list
);
m_free_list
=
obj
;
m_free_cnt
++
;
}
template
<
class
T
>
inline
void
Ndb_free_list_t
<
T
>::
clear
()
{
T
*
obj
=
m_free_list
;
while
(
obj
)
{
T
*
curr
=
obj
;
obj
=
(
T
*
)
obj
->
next
();
delete
curr
;
m_alloc_cnt
--
;
}
}
#endif
ndb/src/ndbapi/NdbRecAttr.cpp
View file @
f12f98e2
...
...
@@ -33,7 +33,7 @@ Adjust: 971206 UABRONM First version
#include "NdbDictionaryImpl.hpp"
#include <NdbTCP.h>
NdbRecAttr
::
NdbRecAttr
()
NdbRecAttr
::
NdbRecAttr
(
Ndb
*
)
{
init
();
}
...
...
@@ -109,7 +109,7 @@ NdbRecAttr::copyout()
NdbRecAttr
*
NdbRecAttr
::
clone
()
const
{
NdbRecAttr
*
ret
=
new
NdbRecAttr
();
NdbRecAttr
*
ret
=
new
NdbRecAttr
(
0
);
ret
->
theAttrId
=
theAttrId
;
ret
->
theNULLind
=
theNULLind
;
...
...
ndb/src/ndbapi/NdbUtil.cpp
View file @
f12f98e2
...
...
@@ -30,8 +30,7 @@ Comment:
#include "NdbUtil.hpp"
NdbLabel
::
NdbLabel
()
:
theNext
(
NULL
)
NdbLabel
::
NdbLabel
(
Ndb
*
)
{
}
...
...
@@ -39,8 +38,7 @@ NdbLabel::~NdbLabel()
{
}
NdbSubroutine
::
NdbSubroutine
()
:
theNext
(
NULL
)
NdbSubroutine
::
NdbSubroutine
(
Ndb
*
)
{
}
...
...
@@ -48,9 +46,8 @@ NdbSubroutine::~NdbSubroutine()
{
}
NdbBranch
::
NdbBranch
()
:
theSignal
(
NULL
),
theNext
(
NULL
)
NdbBranch
::
NdbBranch
(
Ndb
*
)
:
theSignal
(
NULL
)
{
}
...
...
@@ -58,9 +55,8 @@ NdbBranch::~NdbBranch()
{
}
NdbCall
::
NdbCall
()
:
theSignal
(
NULL
),
theNext
(
NULL
)
NdbCall
::
NdbCall
(
Ndb
*
)
:
theSignal
(
NULL
)
{
}
...
...
ndb/src/ndbapi/NdbUtil.hpp
View file @
f12f98e2
...
...
@@ -34,41 +34,49 @@ Comment:
class
NdbApiSignal
;
class
NdbOperation
;
class
NdbLabel
template
<
class
T
>
struct
Free_list_element
{
Free_list_element
()
{
theNext
=
0
;}
void
next
(
T
*
obj
)
{
theNext
=
obj
;}
T
*
next
()
{
return
theNext
;}
T
*
theNext
;
};
class
NdbLabel
:
public
Free_list_element
<
NdbLabel
>
{
friend
class
NdbOperation
;
friend
class
Ndb
;
private:
NdbLabel
();
public:
NdbLabel
(
Ndb
*
);
~
NdbLabel
();
NdbLabel
*
theNext
;
private:
Uint32
theSubroutine
[
16
];
Uint32
theLabelAddress
[
16
];
Uint32
theLabelNo
[
16
];
};
class
NdbSubroutine
class
NdbSubroutine
:
public
Free_list_element
<
NdbSubroutine
>
{
friend
class
NdbOperation
;
friend
class
Ndb
;
p
rivate
:
NdbSubroutine
();
p
ublic
:
NdbSubroutine
(
Ndb
*
);
~
NdbSubroutine
();
NdbSubroutine
*
theNext
;
Uint32
theSubroutineAddress
[
16
];
};
class
NdbBranch
class
NdbBranch
:
public
Free_list_element
<
NdbBranch
>
{
friend
class
NdbOperation
;
friend
class
Ndb
;
p
rivate
:
NdbBranch
();
p
ublic
:
NdbBranch
(
Ndb
*
);
~
NdbBranch
();
NdbApiSignal
*
theSignal
;
...
...
@@ -76,22 +84,20 @@ private:
Uint32
theBranchAddress
;
Uint32
theBranchLabel
;
Uint32
theSubroutine
;
NdbBranch
*
theNext
;
};
class
NdbCall
class
NdbCall
:
public
Free_list_element
<
NdbCall
>
{
friend
class
NdbOperation
;
friend
class
Ndb
;
p
rivate
:
NdbCall
();
p
ublic
:
NdbCall
(
Ndb
*
);
~
NdbCall
();
NdbApiSignal
*
theSignal
;
Uint32
theSignalAddress
;
Uint32
theSubroutine
;
NdbCall
*
theNext
;
};
#endif
ndb/src/ndbapi/Ndbif.cpp
View file @
f12f98e2
...
...
@@ -143,15 +143,6 @@ Ndb::init(int aMaxNoOfTransactions)
error_handler:
ndbout
<<
"error_handler"
<<
endl
;
releaseTransactionArrays
();
while
(
theConIdleList
!=
NULL
)
freeNdbCon
();
while
(
theSignalIdleList
!=
NULL
)
freeSignal
();
while
(
theRecAttrIdleList
!=
NULL
)
freeRecAttr
();
while
(
theOpIdleList
!=
NULL
)
freeOperation
();
delete
theDictionary
;
TransporterFacade
::
instance
()
->
close
(
theNdbBlockNumber
,
0
);
DBUG_RETURN
(
-
1
);
...
...
ndb/src/ndbapi/Ndbinit.cpp
View file @
f12f98e2
...
...
@@ -99,20 +99,8 @@ void Ndb::setup(Ndb_cluster_connection *ndb_cluster_connection,
theMaxNoOfTransactions
=
0
;
theMinNoOfEventsToWakeUp
=
0
;
prefixEnd
=
NULL
;
theConIdleList
=
NULL
;
theOpIdleList
=
NULL
;
theScanOpIdleList
=
NULL
;
theIndexOpIdleList
=
NULL
;
theTransactionList
=
NULL
;
theConnectionArray
=
NULL
;
theRecAttrIdleList
=
NULL
;
theSignalIdleList
=
NULL
;
theLabelList
=
NULL
;
theBranchList
=
NULL
;
theSubroutineList
=
NULL
;
theCallList
=
NULL
;
theScanList
=
NULL
;
theNdbBlobIdleList
=
NULL
;
the_last_check_time
=
0
;
theFirstTransId
=
0
;
theRestartGCI
=
0
;
...
...
@@ -204,33 +192,6 @@ Ndb::~Ndb()
TransporterFacade
::
instance
()
->
close
(
theNdbBlockNumber
,
theFirstTransId
);
}
// if (theSchemaConToNdbList != NULL)
// closeSchemaTransaction(theSchemaConToNdbList);
while
(
theConIdleList
!=
NULL
)
freeNdbCon
();
while
(
theOpIdleList
!=
NULL
)
freeOperation
();
while
(
theScanOpIdleList
!=
NULL
)
freeScanOperation
();
while
(
theIndexOpIdleList
!=
NULL
)
freeIndexOperation
();
while
(
theLabelList
!=
NULL
)
freeNdbLabel
();
while
(
theBranchList
!=
NULL
)
freeNdbBranch
();
while
(
theSubroutineList
!=
NULL
)
freeNdbSubroutine
();
while
(
theCallList
!=
NULL
)
freeNdbCall
();
while
(
theScanList
!=
NULL
)
freeNdbScanRec
();
while
(
theNdbBlobIdleList
!=
NULL
)
freeNdbBlob
();
while
(
theRecAttrIdleList
!=
NULL
)
freeRecAttr
();
while
(
theSignalIdleList
!=
NULL
)
freeSignal
();
releaseTransactionArrays
();
delete
[]
theConnectionArray
;
...
...
ndb/src/ndbapi/Ndblist.cpp
View file @
f12f98e2
...
...
@@ -76,25 +76,7 @@ Ndb::checkFailedNode()
int
Ndb
::
createConIdleList
(
int
aNrOfCon
)
{
for
(
int
i
=
0
;
i
<
aNrOfCon
;
i
++
)
{
NdbConnection
*
tNdbCon
=
new
NdbConnection
(
this
);
if
(
tNdbCon
==
NULL
)
{
return
-
1
;
}
if
(
theConIdleList
==
NULL
)
{
theConIdleList
=
tNdbCon
;
theConIdleList
->
next
(
NULL
);
}
else
{
tNdbCon
->
next
(
theConIdleList
);
theConIdleList
=
tNdbCon
;
}
tNdbCon
->
Status
(
NdbConnection
::
NotConnected
);
}
theNoOfAllocatedTransactions
=
aNrOfCon
;
theImpl
->
theConIdleList
.
fill
(
this
,
aNrOfCon
);
return
aNrOfCon
;
}
...
...
@@ -110,19 +92,7 @@ Ndb::createConIdleList(int aNrOfCon)
int
Ndb
::
createOpIdleList
(
int
aNrOfOp
)
{
for
(
int
i
=
0
;
i
<
aNrOfOp
;
i
++
){
NdbOperation
*
tOp
=
new
NdbOperation
(
this
);
if
(
tOp
==
NULL
){
return
-
1
;
}
if
(
theOpIdleList
==
NULL
){
theOpIdleList
=
tOp
;
theOpIdleList
->
next
(
NULL
);
}
else
{
tOp
->
next
(
theOpIdleList
);
theOpIdleList
=
tOp
;
}
}
theImpl
->
theOpIdleList
.
fill
(
this
,
aNrOfOp
);
return
aNrOfOp
;
}
...
...
@@ -136,22 +106,7 @@ Ndb::createOpIdleList(int aNrOfOp)
NdbBranch
*
Ndb
::
getNdbBranch
()
{
NdbBranch
*
tNdbBranch
;
if
(
theBranchList
==
NULL
)
{
tNdbBranch
=
new
NdbBranch
;
if
(
tNdbBranch
==
NULL
)
{
return
NULL
;
}
tNdbBranch
->
theNext
=
NULL
;
}
else
{
tNdbBranch
=
theBranchList
;
theBranchList
=
tNdbBranch
->
theNext
;
tNdbBranch
->
theNext
=
NULL
;
}
return
tNdbBranch
;
return
theImpl
->
theBranchList
.
seize
(
this
);
}
/***************************************************************************
...
...
@@ -164,22 +119,7 @@ Ndb::getNdbBranch()
NdbCall
*
Ndb
::
getNdbCall
()
{
NdbCall
*
tNdbCall
;
if
(
theCallList
==
NULL
)
{
tNdbCall
=
new
NdbCall
;
if
(
tNdbCall
==
NULL
)
{
return
NULL
;
}
tNdbCall
->
theNext
=
NULL
;
}
else
{
tNdbCall
=
theCallList
;
theCallList
=
tNdbCall
->
theNext
;
tNdbCall
->
theNext
=
NULL
;
}
return
tNdbCall
;
return
theImpl
->
theCallList
.
seize
(
this
);
}
/***************************************************************************
...
...
@@ -192,25 +132,14 @@ Ndb::getNdbCall()
NdbConnection
*
Ndb
::
getNdbCon
()
{
NdbConnection
*
tNdbCon
;
if
(
theConIdleList
==
NULL
)
{
if
(
theNoOfAllocatedTransactions
<
theMaxNoOfTransactions
)
{
tNdbCon
=
new
NdbConnection
(
this
);
if
(
tNdbCon
==
NULL
)
{
return
NULL
;
}
//if
theNoOfAllocatedTransactions
++
;
}
else
{
ndbout
<<
"theNoOfAllocatedTransactions = "
<<
theNoOfAllocatedTransactions
<<
" theMaxNoOfTransactions = "
<<
theMaxNoOfTransactions
<<
endl
;
return
NULL
;
}
//if
tNdbCon
->
next
(
NULL
);
}
else
NdbConnection
*
tNdbCon
=
theImpl
->
theConIdleList
.
seize
(
this
);
if
(
unlikely
(
theImpl
->
theConIdleList
.
m_alloc_cnt
>
theMaxNoOfTransactions
))
{
tNdbCon
=
theConIdleList
;
theConIdleList
=
tNdbCon
->
next
();
tNdbCon
->
next
(
NULL
);
}
theImpl
->
theConIdleList
.
release
(
tNdbCon
);
ndbout
<<
"theNoOfAllocatedTransactions = "
<<
theNoOfAllocatedTransactions
<<
" theMaxNoOfTransactions = "
<<
theMaxNoOfTransactions
<<
endl
;
return
NULL
;
}
//if
tNdbCon
->
theMagicNumber
=
0x37412619
;
return
tNdbCon
;
}
...
...
@@ -225,22 +154,7 @@ Ndb::getNdbCon()
NdbLabel
*
Ndb
::
getNdbLabel
()
{
NdbLabel
*
tNdbLabel
;
if
(
theLabelList
==
NULL
)
{
tNdbLabel
=
new
NdbLabel
;
if
(
tNdbLabel
==
NULL
)
{
return
NULL
;
}
tNdbLabel
->
theNext
=
NULL
;
}
else
{
tNdbLabel
=
theLabelList
;
theLabelList
=
tNdbLabel
->
theNext
;
tNdbLabel
->
theNext
=
NULL
;
}
return
tNdbLabel
;
return
theImpl
->
theLabelList
.
seize
(
this
);
}
/***************************************************************************
...
...
@@ -254,23 +168,7 @@ Ndb::getNdbLabel()
NdbReceiver
*
Ndb
::
getNdbScanRec
()
{
NdbReceiver
*
tNdbScanRec
;
if
(
theScanList
==
NULL
)
{
tNdbScanRec
=
new
NdbReceiver
(
this
);
if
(
tNdbScanRec
==
NULL
)
{
return
NULL
;
}
tNdbScanRec
->
next
(
NULL
);
}
else
{
tNdbScanRec
=
theScanList
;
theScanList
=
tNdbScanRec
->
next
();
tNdbScanRec
->
next
(
NULL
);
}
return
tNdbScanRec
;
return
theImpl
->
theScanList
.
seize
(
this
);
}
/***************************************************************************
...
...
@@ -283,22 +181,7 @@ Ndb::getNdbScanRec()
NdbSubroutine
*
Ndb
::
getNdbSubroutine
()
{
NdbSubroutine
*
tNdbSubroutine
;
if
(
theSubroutineList
==
NULL
)
{
tNdbSubroutine
=
new
NdbSubroutine
;
if
(
tNdbSubroutine
==
NULL
)
{
return
NULL
;
}
tNdbSubroutine
->
theNext
=
NULL
;
}
else
{
tNdbSubroutine
=
theSubroutineList
;
theSubroutineList
=
tNdbSubroutine
->
theNext
;
tNdbSubroutine
->
theNext
=
NULL
;
}
return
tNdbSubroutine
;
return
theImpl
->
theSubroutineList
.
seize
(
this
);
}
/***************************************************************************
...
...
@@ -311,18 +194,7 @@ Remark: Get an operation from theOpIdleList and return the object .
NdbOperation
*
Ndb
::
getOperation
()
{
NdbOperation
*
tOp
=
theOpIdleList
;
if
(
tOp
!=
NULL
)
{
NdbOperation
*
tOpNext
=
tOp
->
next
();
tOp
->
next
(
NULL
);
theOpIdleList
=
tOpNext
;
return
tOp
;
}
else
{
tOp
=
new
NdbOperation
(
this
);
if
(
tOp
!=
NULL
)
tOp
->
next
(
NULL
);
}
return
tOp
;
return
theImpl
->
theOpIdleList
.
seize
(
this
);
}
/***************************************************************************
...
...
@@ -335,18 +207,7 @@ Remark: Get an operation from theScanOpIdleList and return the object .
NdbIndexScanOperation
*
Ndb
::
getScanOperation
()
{
NdbIndexScanOperation
*
tOp
=
theScanOpIdleList
;
if
(
tOp
!=
NULL
)
{
NdbIndexScanOperation
*
tOpNext
=
(
NdbIndexScanOperation
*
)
tOp
->
next
();
tOp
->
next
(
NULL
);
theScanOpIdleList
=
tOpNext
;
return
tOp
;
}
else
{
tOp
=
new
NdbIndexScanOperation
(
this
);
if
(
tOp
!=
NULL
)
tOp
->
next
(
NULL
);
}
return
tOp
;
return
theImpl
->
theScanOpIdleList
.
seize
(
this
);
}
/***************************************************************************
...
...
@@ -359,18 +220,7 @@ Remark: Get an operation from theIndexOpIdleList and return the object .
NdbIndexOperation
*
Ndb
::
getIndexOperation
()
{
NdbIndexOperation
*
tOp
=
theIndexOpIdleList
;
if
(
tOp
!=
NULL
)
{
NdbIndexOperation
*
tOpNext
=
(
NdbIndexOperation
*
)
tOp
->
next
();
tOp
->
next
(
NULL
);
theIndexOpIdleList
=
tOpNext
;
return
tOp
;
}
else
{
tOp
=
new
NdbIndexOperation
(
this
);
if
(
tOp
!=
NULL
)
tOp
->
next
(
NULL
);
}
return
tOp
;
return
theImpl
->
theIndexOpIdleList
.
seize
(
this
);
}
/***************************************************************************
...
...
@@ -382,21 +232,14 @@ Return Value: Return a reference to a receive attribute object.
NdbRecAttr
*
Ndb
::
getRecAttr
()
{
NdbRecAttr
*
tRecAttr
;
tRecAttr
=
theRecAttrIdleList
;
if
(
tRecAttr
!=
NULL
)
{
NdbRecAttr
*
tRecAttrNext
=
tRecAttr
->
next
();
NdbRecAttr
*
tRecAttr
=
theImpl
->
theRecAttrIdleList
.
seize
(
this
);
if
(
tRecAttr
!=
NULL
)
{
tRecAttr
->
init
();
theRecAttrIdleList
=
tRecAttrNext
;
return
tRecAttr
;
}
else
{
tRecAttr
=
new
NdbRecAttr
;
if
(
tRecAttr
==
NULL
)
return
NULL
;
tRecAttr
->
next
(
NULL
);
}
//if
tRecAttr
->
init
();
return
tRecAttr
;
}
return
NULL
;
}
/***************************************************************************
...
...
@@ -408,34 +251,16 @@ Return Value: Return a reference to a signal object.
NdbApiSignal
*
Ndb
::
getSignal
()
{
NdbApiSignal
*
tSignal
=
theSignalIdleList
;
if
(
tSignal
!=
NULL
){
NdbApiSignal
*
tSignalNext
=
tSignal
->
next
();
tSignal
->
next
(
NULL
);
theSignalIdleList
=
tSignalNext
;
}
else
{
tSignal
=
new
NdbApiSignal
(
theMyRef
);
#ifdef POORMANSPURIFY
cnewSignals
++
;
#endif
if
(
tSignal
!=
NULL
)
tSignal
->
next
(
NULL
);
}
#ifdef POORMANSPURIFY
cgetSignals
++
;
#endif
return
tSignal
;
return
theImpl
->
theSignalIdleList
.
seize
(
this
);
}
NdbBlob
*
Ndb
::
getNdbBlob
()
{
NdbBlob
*
tBlob
=
the
NdbBlobIdleList
;
if
(
tBlob
!=
NULL
)
{
theNdbBlobIdleList
=
tBlob
->
theNext
;
NdbBlob
*
tBlob
=
the
Impl
->
theNdbBlobIdleList
.
seize
(
this
)
;
if
(
tBlob
)
{
tBlob
->
init
();
}
else
{
tBlob
=
new
NdbBlob
;
}
return
tBlob
;
}
...
...
@@ -449,8 +274,7 @@ Remark: Add a NdbBranch object into the Branch idlelist.
void
Ndb
::
releaseNdbBranch
(
NdbBranch
*
aNdbBranch
)
{
aNdbBranch
->
theNext
=
theBranchList
;
theBranchList
=
aNdbBranch
;
theImpl
->
theBranchList
.
release
(
aNdbBranch
);
}
/***************************************************************************
...
...
@@ -462,8 +286,7 @@ Remark: Add a NdbBranch object into the Branch idlelist.
void
Ndb
::
releaseNdbCall
(
NdbCall
*
aNdbCall
)
{
aNdbCall
->
theNext
=
theCallList
;
theCallList
=
aNdbCall
;
theImpl
->
theCallList
.
release
(
aNdbCall
);
}
/***************************************************************************
...
...
@@ -475,9 +298,8 @@ Remark: Add a Connection object into the signal idlelist.
void
Ndb
::
releaseNdbCon
(
NdbConnection
*
aNdbCon
)
{
aNdbCon
->
next
(
theConIdleList
);
aNdbCon
->
theMagicNumber
=
0xFE11DD
;
the
ConIdleList
=
aNdbCon
;
the
Impl
->
theConIdleList
.
release
(
aNdbCon
)
;
}
/***************************************************************************
...
...
@@ -489,8 +311,7 @@ Remark: Add a NdbLabel object into the Label idlelist.
void
Ndb
::
releaseNdbLabel
(
NdbLabel
*
aNdbLabel
)
{
aNdbLabel
->
theNext
=
theLabelList
;
theLabelList
=
aNdbLabel
;
theImpl
->
theLabelList
.
release
(
aNdbLabel
);
}
/***************************************************************************
...
...
@@ -502,8 +323,7 @@ Remark: Add a NdbScanReceiver object into the Scan idlelist.
void
Ndb
::
releaseNdbScanRec
(
NdbReceiver
*
aNdbScanRec
)
{
aNdbScanRec
->
next
(
theScanList
);
theScanList
=
aNdbScanRec
;
theImpl
->
theScanList
.
release
(
aNdbScanRec
);
}
/***************************************************************************
...
...
@@ -515,8 +335,7 @@ Remark: Add a NdbSubroutine object into theSubroutine idlelist.
void
Ndb
::
releaseNdbSubroutine
(
NdbSubroutine
*
aNdbSubroutine
)
{
aNdbSubroutine
->
theNext
=
theSubroutineList
;
theSubroutineList
=
aNdbSubroutine
;
theImpl
->
theSubroutineList
.
release
(
aNdbSubroutine
);
}
/***************************************************************************
...
...
@@ -529,16 +348,14 @@ void
Ndb
::
releaseOperation
(
NdbOperation
*
anOperation
)
{
if
(
anOperation
->
m_tcReqGSN
==
GSN_TCKEYREQ
){
anOperation
->
next
(
theOpIdleList
);
anOperation
->
theNdbCon
=
NULL
;
anOperation
->
theMagicNumber
=
0xFE11D0
;
the
OpIdleList
=
anOperation
;
the
Impl
->
theOpIdleList
.
release
(
anOperation
)
;
}
else
{
assert
(
anOperation
->
m_tcReqGSN
==
GSN_TCINDXREQ
);
anOperation
->
next
(
theIndexOpIdleList
);
anOperation
->
theNdbCon
=
NULL
;
anOperation
->
theMagicNumber
=
0xFE11D1
;
theI
ndexOpIdleList
=
(
NdbIndexOperation
*
)
anOperation
;
theI
mpl
->
theIndexOpIdleList
.
release
((
NdbIndexOperation
*
)
anOperation
)
;
}
}
...
...
@@ -551,10 +368,9 @@ Remark: Add a NdbScanOperation object into the signal idlelist.
void
Ndb
::
releaseScanOperation
(
NdbIndexScanOperation
*
aScanOperation
)
{
aScanOperation
->
next
(
theScanOpIdleList
);
aScanOperation
->
theNdbCon
=
NULL
;
aScanOperation
->
theMagicNumber
=
0xFE11D2
;
the
ScanOpIdleList
=
aScanOperation
;
the
Impl
->
theScanOpIdleList
.
release
(
aScanOperation
)
;
}
/***************************************************************************
...
...
@@ -567,8 +383,7 @@ void
Ndb
::
releaseRecAttr
(
NdbRecAttr
*
aRecAttr
)
{
aRecAttr
->
release
();
aRecAttr
->
next
(
theRecAttrIdleList
);
theRecAttrIdleList
=
aRecAttr
;
theImpl
->
theRecAttrIdleList
.
release
(
aRecAttr
);
}
/***************************************************************************
...
...
@@ -595,8 +410,7 @@ Ndb::releaseSignal(NdbApiSignal* aSignal)
#ifdef POORMANSPURIFY
creleaseSignals
++
;
#endif
aSignal
->
next
(
theSignalIdleList
);
theSignalIdleList
=
aSignal
;
theImpl
->
theSignalIdleList
.
release
(
aSignal
);
}
void
...
...
@@ -612,163 +426,7 @@ Ndb::releaseSignalsInList(NdbApiSignal** pList){
void
Ndb
::
releaseNdbBlob
(
NdbBlob
*
aBlob
)
{
aBlob
->
release
();
aBlob
->
theNext
=
theNdbBlobIdleList
;
theNdbBlobIdleList
=
aBlob
;
}
/***************************************************************************
void freeOperation();
Remark: Always release the first item in the free list
***************************************************************************/
void
Ndb
::
freeOperation
()
{
NdbOperation
*
tOp
=
theOpIdleList
;
theOpIdleList
=
theOpIdleList
->
next
();
delete
tOp
;
}
/***************************************************************************
void freeScanOperation();
Remark: Always release the first item in the free list
***************************************************************************/
void
Ndb
::
freeScanOperation
()
{
NdbIndexScanOperation
*
tOp
=
theScanOpIdleList
;
theScanOpIdleList
=
(
NdbIndexScanOperation
*
)
tOp
->
next
();
delete
tOp
;
}
/***************************************************************************
void freeIndexOperation();
Remark: Always release the first item in the free list
***************************************************************************/
void
Ndb
::
freeIndexOperation
()
{
NdbIndexOperation
*
tOp
=
theIndexOpIdleList
;
theIndexOpIdleList
=
(
NdbIndexOperation
*
)
theIndexOpIdleList
->
next
();
delete
tOp
;
}
/***************************************************************************
void freeNdbBranch();
Remark: Always release the first item in the free list
***************************************************************************/
void
Ndb
::
freeNdbBranch
()
{
NdbBranch
*
tNdbBranch
=
theBranchList
;
theBranchList
=
theBranchList
->
theNext
;
delete
tNdbBranch
;
}
/***************************************************************************
void freeNdbCall();
Remark: Always release the first item in the free list
***************************************************************************/
void
Ndb
::
freeNdbCall
()
{
NdbCall
*
tNdbCall
=
theCallList
;
theCallList
=
theCallList
->
theNext
;
delete
tNdbCall
;
}
/***************************************************************************
void freeNdbScanRec();
Remark: Always release the first item in the free list
***************************************************************************/
void
Ndb
::
freeNdbScanRec
()
{
NdbReceiver
*
tNdbScanRec
=
theScanList
;
theScanList
=
theScanList
->
next
();
delete
tNdbScanRec
;
}
/***************************************************************************
void freeNdbCon();
Remark: Always release the first item in the free list
***************************************************************************/
void
Ndb
::
freeNdbCon
()
{
NdbConnection
*
tNdbCon
=
theConIdleList
;
theConIdleList
=
theConIdleList
->
next
();
delete
tNdbCon
;
}
/***************************************************************************
void freeNdbLabel();
Remark: Always release the first item in the free list
***************************************************************************/
void
Ndb
::
freeNdbLabel
()
{
NdbLabel
*
tNdbLabel
=
theLabelList
;
theLabelList
=
theLabelList
->
theNext
;
delete
tNdbLabel
;
}
/***************************************************************************
void freeNdbSubroutine();
Remark: Always release the first item in the free list
***************************************************************************/
void
Ndb
::
freeNdbSubroutine
()
{
NdbSubroutine
*
tNdbSubroutine
=
theSubroutineList
;
theSubroutineList
=
theSubroutineList
->
theNext
;
delete
tNdbSubroutine
;
}
/***************************************************************************
void freeRecAttr();
Remark: Always release the first item in the free list
***************************************************************************/
void
Ndb
::
freeRecAttr
()
{
NdbRecAttr
*
tRecAttr
=
theRecAttrIdleList
;
theRecAttrIdleList
=
theRecAttrIdleList
->
next
();
delete
tRecAttr
;
}
/***************************************************************************
void freeSignal();
Remark: Delete a signal object from the signal idlelist.
***************************************************************************/
void
Ndb
::
freeSignal
()
{
NdbApiSignal
*
tSignal
=
theSignalIdleList
;
theSignalIdleList
=
tSignal
->
next
();
delete
tSignal
;
#ifdef POORMANSPURIFY
cfreeSignals
++
;
#endif
}
void
Ndb
::
freeNdbBlob
()
{
NdbBlob
*
tBlob
=
theNdbBlobIdleList
;
theNdbBlobIdleList
=
tBlob
->
theNext
;
delete
tBlob
;
theImpl
->
theNdbBlobIdleList
.
release
(
aBlob
);
}
/****************************************************************************
...
...
@@ -823,3 +481,102 @@ Ndb::releaseConnectToNdb(NdbConnection* a_con)
DBUG_VOID_RETURN
;
}
template
<
class
T
>
static
Ndb
::
Free_list_usage
*
update
(
Ndb
::
Free_list_usage
*
curr
,
Ndb_free_list_t
<
T
>
&
list
,
const
char
*
name
)
{
curr
->
m_name
=
name
;
curr
->
m_created
=
list
.
m_alloc_cnt
;
curr
->
m_free
=
list
.
m_free_cnt
;
curr
->
m_sizeof
=
sizeof
(
T
);
return
curr
;
}
Ndb
::
Free_list_usage
*
Ndb
::
get_free_list_usage
(
Ndb
::
Free_list_usage
*
curr
)
{
if
(
curr
==
0
)
{
return
0
;
}
if
(
curr
->
m_name
==
0
)
{
update
(
curr
,
theImpl
->
theConIdleList
,
"NdbTransaction"
);
}
else
if
(
!
strcmp
(
curr
->
m_name
,
"NdbTransaction"
))
{
update
(
curr
,
theImpl
->
theOpIdleList
,
"NdbOperation"
);
}
else
if
(
!
strcmp
(
curr
->
m_name
,
"NdbOperation"
))
{
update
(
curr
,
theImpl
->
theScanOpIdleList
,
"NdbIndexScanOperation"
);
}
else
if
(
!
strcmp
(
curr
->
m_name
,
"NdbIndexScanOperation"
))
{
update
(
curr
,
theImpl
->
theIndexOpIdleList
,
"NdbIndexOperation"
);
}
else
if
(
!
strcmp
(
curr
->
m_name
,
"NdbIndexOperation"
))
{
update
(
curr
,
theImpl
->
theRecAttrIdleList
,
"NdbRecAttr"
);
}
else
if
(
!
strcmp
(
curr
->
m_name
,
"NdbRecAttr"
))
{
update
(
curr
,
theImpl
->
theSignalIdleList
,
"NdbApiSignal"
);
}
else
if
(
!
strcmp
(
curr
->
m_name
,
"NdbApiSignal"
))
{
update
(
curr
,
theImpl
->
theLabelList
,
"NdbLabel"
);
}
else
if
(
!
strcmp
(
curr
->
m_name
,
"NdbLabel"
))
{
update
(
curr
,
theImpl
->
theBranchList
,
"NdbBranch"
);
}
else
if
(
!
strcmp
(
curr
->
m_name
,
"NdbBranch"
))
{
update
(
curr
,
theImpl
->
theSubroutineList
,
"NdbSubroutine"
);
}
else
if
(
!
strcmp
(
curr
->
m_name
,
"NdbSubroutine"
))
{
update
(
curr
,
theImpl
->
theCallList
,
"NdbCall"
);
}
else
if
(
!
strcmp
(
curr
->
m_name
,
"NdbCall"
))
{
update
(
curr
,
theImpl
->
theNdbBlobIdleList
,
"NdbBlob"
);
}
else
if
(
!
strcmp
(
curr
->
m_name
,
"NdbBlob"
))
{
update
(
curr
,
theImpl
->
theScanList
,
"NdbReceiver"
);
}
else
if
(
!
strcmp
(
curr
->
m_name
,
"NdbReceiver"
))
{
return
0
;
}
else
{
update
(
curr
,
theImpl
->
theConIdleList
,
"NdbTransaction"
);
}
return
curr
;
}
#define TI(T) \
template Ndb::Free_list_usage* \
update(Ndb::Free_list_usage*, Ndb_free_list_t<T> &, const char * name);\
template struct Ndb_free_list_t<T>
TI
(
NdbBlob
);
TI
(
NdbCall
);
TI
(
NdbLabel
);
TI
(
NdbBranch
);
TI
(
NdbSubroutine
);
TI
(
NdbApiSignal
);
TI
(
NdbRecAttr
);
TI
(
NdbOperation
);
TI
(
NdbReceiver
);
TI
(
NdbConnection
);
TI
(
NdbIndexOperation
);
TI
(
NdbIndexScanOperation
);
ndb/test/include/NDBT_Test.hpp
View file @
f12f98e2
...
...
@@ -426,7 +426,7 @@ C##suitname():NDBT_TestSuite(#suitname){ \
pt->addTable(tableName, false);
#define NDBT_TESTSUITE_END(suitname) \
} } ; C##suitname suitname
;
} } ; C##suitname suitname
// Helper functions for retrieving variables from NDBT_Step
#define GETNDB(ps) ((NDBT_NdbApiStep*)ps)->getNdb()
...
...
ndb/test/ndbapi/bank/BankLoad.cpp
View file @
f12f98e2
...
...
@@ -321,7 +321,7 @@ int Bank::loadGl(){
m_ndb
.
closeTransaction
(
pTrans
);
return
NDBT_OK
;
}
;
}
int
Bank
::
getBalanceForAccountType
(
const
Uint32
accountType
,
...
...
@@ -460,7 +460,7 @@ int Bank::loadAccountType(){
m_ndb
.
closeTransaction
(
pTrans
);
return
NDBT_OK
;
}
;
}
/**
* Load ACCOUNT table
...
...
ndb/test/ndbapi/testOIBasic.cpp
View file @
f12f98e2
...
...
@@ -2187,7 +2187,7 @@ pkinsert(Par par)
}
con
.
closeTransaction
();
return
0
;
}
;
}
static
int
pkupdate
(
Par
par
)
...
...
@@ -2250,7 +2250,7 @@ pkupdate(Par par)
}
con
.
closeTransaction
();
return
0
;
}
;
}
static
int
pkdelete
(
Par
par
)
...
...
@@ -2306,7 +2306,7 @@ pkdelete(Par par)
}
con
.
closeTransaction
();
return
0
;
}
;
}
static
int
pkread
(
Par
par
)
...
...
ndb/test/src/HugoCalculator.cpp
View file @
f12f98e2
...
...
@@ -51,7 +51,7 @@ HugoCalculator::HugoCalculator(const NdbDictionary::Table& tab) : m_tab(tab) {
#endif
// Check that idCol is not conflicting with updatesCol
assert
(
m_idCol
!=
m_updatesCol
&&
m_idCol
!=
-
1
&&
m_updatesCol
!=
-
1
);
}
;
}
Int32
HugoCalculator
::
calcValue
(
int
record
,
...
...
@@ -73,7 +73,7 @@ HugoCalculator::calcValue(int record,
else
val
=
record
+
attrib
+
updates
;
return
val
;
}
;
}
#if 0
HugoCalculator::U_Int32 calcValue(int record, int attrib, int updates) const;
HugoCalculator::U_Int64 calcValue(int record, int attrib, int updates) const;
...
...
@@ -123,7 +123,7 @@ HugoCalculator::calcValue(int record,
buf
[
len
]
=
0
;
}
return
buf
;
}
;
}
int
HugoCalculator
::
verifyRowValues
(
NDBT_ResultRow
*
const
pRow
)
const
{
...
...
ndb/test/src/NDBT_Test.cpp
View file @
f12f98e2
...
...
@@ -624,7 +624,7 @@ int NDBT_TestCase::execute(NDBT_Context* ctx){
<<
endl
;
}
return
res
;
}
;
}
void
NDBT_TestCase
::
startTimer
(
NDBT_Context
*
ctx
){
...
...
ndb/test/src/NdbBackup.cpp
View file @
f12f98e2
...
...
@@ -345,7 +345,7 @@ NdbBackup::NF(NdbRestarter& _restarter, int *NFDuringBackup_codes, const int sz,
}
return
NDBT_OK
;
}
;
}
int
FailS_codes
[]
=
{
...
...
ndb/test/src/NdbRestarts.cpp
View file @
f12f98e2
...
...
@@ -213,7 +213,7 @@ NdbRestarts::NdbRestart::NdbRestart(const char* _name,
m_restartFunc
=
_func
;
m_numRequiredNodes
=
_requiredNodes
;
// m_arg1 = arg1;
}
;
}
int
NdbRestarts
::
getNumRestarts
(){
...
...
@@ -367,7 +367,7 @@ int restartRandomNodeGraceful(NdbRestarter& _restarter,
"Could not restart node "
<<
nodeId
);
return
NDBT_OK
;
}
;
}
int
restartRandomNodeAbort
(
NdbRestarter
&
_restarter
,
const
NdbRestarts
::
NdbRestart
*
_restart
){
...
...
@@ -382,7 +382,7 @@ int restartRandomNodeAbort(NdbRestarter& _restarter,
"Could not restart node "
<<
nodeId
);
return
NDBT_OK
;
}
;
}
int
restartRandomNodeError
(
NdbRestarter
&
_restarter
,
const
NdbRestarts
::
NdbRestart
*
_restart
){
...
...
@@ -397,7 +397,7 @@ int restartRandomNodeError(NdbRestarter& _restarter,
"Could not restart node "
<<
nodeId
);
return
NDBT_OK
;
}
;
}
int
restartMasterNodeError
(
NdbRestarter
&
_restarter
,
const
NdbRestarts
::
NdbRestart
*
_restart
){
...
...
@@ -410,7 +410,7 @@ int restartMasterNodeError(NdbRestarter& _restarter,
"Could not restart node "
<<
nodeId
);
return
NDBT_OK
;
}
;
}
int
restartRandomNodeInitial
(
NdbRestarter
&
_restarter
,
const
NdbRestarts
::
NdbRestart
*
_restart
){
...
...
@@ -425,7 +425,7 @@ int restartRandomNodeInitial(NdbRestarter& _restarter,
"Could not restart node "
<<
nodeId
);
return
NDBT_OK
;
}
;
}
int
twoNodeFailure
(
NdbRestarter
&
_restarter
,
const
NdbRestarts
::
NdbRestart
*
_restart
){
...
...
@@ -453,7 +453,7 @@ int twoNodeFailure(NdbRestarter& _restarter,
"Could not restart node "
<<
nodeId
);
return
NDBT_OK
;
}
;
}
int
twoMasterNodeFailure
(
NdbRestarter
&
_restarter
,
const
NdbRestarts
::
NdbRestart
*
_restart
){
...
...
@@ -478,7 +478,7 @@ int twoMasterNodeFailure(NdbRestarter& _restarter,
"Could not restart node "
<<
nodeId
);
return
NDBT_OK
;
}
;
}
int
get50PercentOfNodes
(
NdbRestarter
&
restarter
,
int
*
_nodes
){
...
...
@@ -519,7 +519,7 @@ int fiftyPercentFail(NdbRestarter& _restarter,
"Could not start all nodes"
);
return
NDBT_OK
;
}
;
}
int
restartAllNodesGracfeul
(
NdbRestarter
&
_restarter
,
...
...
@@ -533,7 +533,7 @@ int restartAllNodesGracfeul(NdbRestarter& _restarter,
return
NDBT_OK
;
}
;
}
int
restartAllNodesAbort
(
NdbRestarter
&
_restarter
,
const
NdbRestarts
::
NdbRestart
*
_restart
){
...
...
@@ -545,7 +545,7 @@ int restartAllNodesAbort(NdbRestarter& _restarter,
"Could not restart all nodes"
);
return
NDBT_OK
;
}
;
}
int
restartAllNodesError9999
(
NdbRestarter
&
_restarter
,
const
NdbRestarts
::
NdbRestart
*
_restart
){
...
...
@@ -557,7 +557,7 @@ int restartAllNodesError9999(NdbRestarter& _restarter,
"Could not restart all nodes "
);
return
NDBT_OK
;
}
;
}
int
fiftyPercentStopAndWait
(
NdbRestarter
&
_restarter
,
const
NdbRestarts
::
NdbRestart
*
_restart
){
...
...
@@ -590,7 +590,7 @@ int fiftyPercentStopAndWait(NdbRestarter& _restarter,
g_info
<<
_restart
->
m_name
<<
endl
;
return
NDBT_OK
;
}
;
}
int
NFDuringNR_codes
[]
=
{
...
...
@@ -713,7 +713,7 @@ int restartNFDuringNR(NdbRestarter& _restarter,
}
return
NDBT_OK
;
}
;
}
int
NRDuringLCP_Master_codes
[]
=
{
...
...
@@ -864,7 +864,7 @@ int stopOnError(NdbRestarter& _restarter,
}
while
(
false
);
return
NDBT_OK
;
}
;
}
int
getRandomNodeId
(
NdbRestarter
&
_restarter
)
{
myRandom48Init
(
NdbTick_CurrentMillisecond
());
...
...
ndb/tools/restore/Restore.cpp
View file @
f12f98e2
...
...
@@ -869,7 +869,7 @@ operator<<(NdbOut& ndbout, const AttributeS& attr){
return
ndbout
;
}
NdbRecAttr
tmprec
;
NdbRecAttr
tmprec
(
0
)
;
tmprec
.
setup
(
desc
.
m_column
,
(
char
*
)
data
.
void_value
);
ndbout
<<
tmprec
;
...
...
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