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
2119a88a
Commit
2119a88a
authored
Sep 20, 2005
by
jonas@perch.ndb.mysql.com
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-5.0
parents
e813de68
668a192c
Changes
24
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
409 additions
and
480 deletions
+409
-480
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/NdbIndexOperation.hpp
ndb/include/ndbapi/NdbIndexOperation.hpp
+1
-0
ndb/include/ndbapi/NdbIndexScanOperation.hpp
ndb/include/ndbapi/NdbIndexScanOperation.hpp
+2
-1
ndb/include/ndbapi/NdbOperation.hpp
ndb/include/ndbapi/NdbOperation.hpp
+5
-2
ndb/include/ndbapi/NdbRecAttr.hpp
ndb/include/ndbapi/NdbRecAttr.hpp
+5
-2
ndb/include/ndbapi/NdbTransaction.hpp
ndb/include/ndbapi/NdbTransaction.hpp
+4
-4
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
+118
-1
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
-373
ndb/tools/restore/Restore.cpp
ndb/tools/restore/Restore.cpp
+1
-1
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+46
-0
sql/ha_ndbcluster.h
sql/ha_ndbcluster.h
+2
-0
sql/mysqld.cc
sql/mysqld.cc
+1
-0
sql/sql_lex.h
sql/sql_lex.h
+1
-1
sql/sql_parse.cc
sql/sql_parse.cc
+11
-0
sql/sql_yacc.yy
sql/sql_yacc.yy
+3
-0
No files found.
ndb/include/ndbapi/Ndb.hpp
View file @
2119a88a
...
...
@@ -984,10 +984,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
...
...
@@ -1457,8 +1457,20 @@ public:
*/
NdbTransaction
*
hupp
(
NdbTransaction
*
);
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.
****************************************************************************/
...
...
@@ -1630,22 +1642,8 @@ private:
class
NdbDictionaryImpl
*
theDictionary
;
class
NdbGlobalEventBufferHandle
*
theGlobalEventBufferHandle
;
NdbTransaction
*
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.
NdbTransaction
*
theTransactionList
;
NdbTransaction
**
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 @
2119a88a
...
...
@@ -277,7 +277,7 @@ private:
// for keeping in lists
NdbBlob
*
theNext
;
// initialization
NdbBlob
();
NdbBlob
(
Ndb
*
);
void
init
();
void
release
();
// classify operations
...
...
@@ -329,6 +329,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/NdbIndexOperation.hpp
View file @
2119a88a
...
...
@@ -181,6 +181,7 @@ private:
// Private attributes
const
NdbIndexImpl
*
m_theIndex
;
friend
struct
Ndb_free_list_t
<
NdbIndexOperation
>
;
};
#endif
ndb/include/ndbapi/NdbIndexScanOperation.hpp
View file @
2119a88a
...
...
@@ -165,9 +165,10 @@ private:
int
compare
(
Uint32
key
,
Uint32
cols
,
const
NdbReceiver
*
,
const
NdbReceiver
*
);
Uint32
m_sort_columns
;
Uint32
m_this_bound_start
;
Uint32
*
m_first_bound_word
;
friend
struct
Ndb_free_list_t
<
NdbIndexScanOperation
>
;
};
#endif
ndb/include/ndbapi/NdbOperation.hpp
View file @
2119a88a
...
...
@@ -22,6 +22,7 @@
#include "NdbError.hpp"
#include "NdbReceiver.hpp"
#include "NdbDictionary.hpp"
#include "Ndb.hpp"
class
Ndb
;
class
NdbApiSignal
;
...
...
@@ -756,8 +757,6 @@ protected:
/******************************************************************************
* These are the methods used to create and delete the NdbOperation objects.
*****************************************************************************/
NdbOperation
(
Ndb
*
aNdb
);
virtual
~
NdbOperation
();
bool
needReply
();
/******************************************************************************
...
...
@@ -769,6 +768,8 @@ protected:
int
init
(
const
class
NdbTableImpl
*
,
NdbTransaction
*
aCon
);
void
initInterpreter
();
NdbOperation
(
Ndb
*
aNdb
);
virtual
~
NdbOperation
();
void
next
(
NdbOperation
*
);
// Set next pointer
NdbOperation
*
next
();
// Get next pointer
public:
...
...
@@ -965,6 +966,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 @
2119a88a
...
...
@@ -17,7 +17,8 @@
#ifndef NdbRecAttr_H
#define NdbRecAttr_H
#include <NdbDictionary.hpp>
#include "NdbDictionary.hpp"
#include "Ndb.hpp"
class
NdbOperation
;
...
...
@@ -248,7 +249,6 @@ public:
const
NdbRecAttr
*
next
()
const
;
#endif
private:
NdbRecAttr
();
Uint32
attrId
()
const
;
/* Get attribute id */
bool
setNULL
();
/* Set NULL indicator */
...
...
@@ -258,6 +258,7 @@ private:
void
release
();
/* Release memory if allocated */
void
init
();
/* Initialise object when allocated */
NdbRecAttr
(
Ndb
*
);
void
next
(
NdbRecAttr
*
aRecAttr
);
NdbRecAttr
*
next
();
...
...
@@ -280,6 +281,8 @@ private:
Uint32
theAttrSize
;
Uint32
theArraySize
;
const
NdbDictionary
::
Column
*
m_column
;
friend
struct
Ndb_free_list_t
<
NdbRecAttr
>
;
};
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
...
...
ndb/include/ndbapi/NdbTransaction.hpp
View file @
2119a88a
...
...
@@ -18,8 +18,9 @@
#define NdbTransaction_H
#include <ndb_types.h>
#include <NdbError.hpp>
#include <NdbDictionary.hpp>
#include "NdbError.hpp"
#include "NdbDictionary.hpp"
#include "Ndb.hpp"
class
NdbTransaction
;
class
NdbOperation
;
...
...
@@ -581,9 +582,7 @@ private:
/**************************************************************************
* These are the create and delete methods of this class. *
**************************************************************************/
NdbTransaction
(
Ndb
*
aNdb
);
~
NdbTransaction
();
void
init
();
// Initialize connection object for new transaction
...
...
@@ -807,6 +806,7 @@ private:
void
define_scan_op
(
NdbIndexScanOperation
*
);
friend
class
HugoOperations
;
friend
struct
Ndb_free_list_t
<
NdbConnection
>
;
};
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
...
...
ndb/src/ndbapi/NdbApiSignal.cpp
View file @
2119a88a
...
...
@@ -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 @
2119a88a
...
...
@@ -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 @
2119a88a
...
...
@@ -111,7 +111,7 @@ NdbBlob::getBlobTable(NdbTableImpl& bt, const NdbTableImpl* t, const NdbColumnIm
// initialization
NdbBlob
::
NdbBlob
()
NdbBlob
::
NdbBlob
(
Ndb
*
)
{
init
();
}
...
...
ndb/src/ndbapi/NdbImpl.hpp
View file @
2119a88a
...
...
@@ -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)
*/
...
...
@@ -60,7 +75,6 @@ public:
int
m_optimized_node_selection
;
BaseString
m_dbname
;
// Database name
BaseString
m_schemaname
;
// Schema name
...
...
@@ -72,6 +86,22 @@ public:
m_schemaname
.
c_str
(),
table_name_separator
);
}
/**
* NOTE free lists must be _after_ theNdbObjectIdMap take
* assure that destructors are run in correct order
*/
Ndb_free_list_t
<
NdbTransaction
>
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
...
...
@@ -146,4 +176,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 @
2119a88a
...
...
@@ -22,7 +22,7 @@
#include "NdbDictionaryImpl.hpp"
#include <NdbTCP.h>
NdbRecAttr
::
NdbRecAttr
()
NdbRecAttr
::
NdbRecAttr
(
Ndb
*
)
{
init
();
}
...
...
@@ -98,7 +98,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 @
2119a88a
...
...
@@ -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 @
2119a88a
...
...
@@ -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 @
2119a88a
...
...
@@ -141,15 +141,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 @
2119a88a
...
...
@@ -62,20 +62,8 @@ void Ndb::setup(Ndb_cluster_connection *ndb_cluster_connection,
theRemainingStartTransactions
=
0
;
theMaxNoOfTransactions
=
0
;
theMinNoOfEventsToWakeUp
=
0
;
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
;
...
...
@@ -150,33 +138,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 @
2119a88a
This diff is collapsed.
Click to expand it.
ndb/tools/restore/Restore.cpp
View file @
2119a88a
...
...
@@ -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
;
...
...
sql/ha_ndbcluster.cc
View file @
2119a88a
...
...
@@ -7392,4 +7392,50 @@ ha_ndbcluster::generate_scan_filter(Ndb_cond_stack *ndb_cond_stack,
DBUG_RETURN
(
0
);
}
int
ndbcluster_show_status
(
THD
*
thd
)
{
Protocol
*
protocol
=
thd
->
protocol
;
DBUG_ENTER
(
"ndbcluster_show_status"
);
if
(
have_ndbcluster
!=
SHOW_OPTION_YES
)
{
my_message
(
ER_NOT_SUPPORTED_YET
,
"Cannot call SHOW NDBCLUSTER STATUS because skip-ndbcluster is defined"
,
MYF
(
0
));
DBUG_RETURN
(
TRUE
);
}
List
<
Item
>
field_list
;
field_list
.
push_back
(
new
Item_empty_string
(
"free_list"
,
255
));
field_list
.
push_back
(
new
Item_return_int
(
"created"
,
10
,
MYSQL_TYPE_LONG
));
field_list
.
push_back
(
new
Item_return_int
(
"free"
,
10
,
MYSQL_TYPE_LONG
));
field_list
.
push_back
(
new
Item_return_int
(
"sizeof"
,
10
,
MYSQL_TYPE_LONG
));
if
(
protocol
->
send_fields
(
&
field_list
,
1
))
DBUG_RETURN
(
TRUE
);
if
(
thd
->
transaction
.
thd_ndb
&&
((
Thd_ndb
*
)
thd
->
transaction
.
thd_ndb
)
->
ndb
)
{
Ndb
*
ndb
=
((
Thd_ndb
*
)
thd
->
transaction
.
thd_ndb
)
->
ndb
;
Ndb
::
Free_list_usage
tmp
;
tmp
.
m_name
=
0
;
while
(
ndb
->
get_free_list_usage
(
&
tmp
))
{
protocol
->
prepare_for_resend
();
protocol
->
store
(
tmp
.
m_name
,
&
my_charset_bin
);
protocol
->
store
((
uint
)
tmp
.
m_created
);
protocol
->
store
((
uint
)
tmp
.
m_free
);
protocol
->
store
((
uint
)
tmp
.
m_sizeof
);
if
(
protocol
->
write
())
DBUG_RETURN
(
TRUE
);
}
}
send_eof
(
thd
);
DBUG_RETURN
(
FALSE
);
}
#endif
/* HAVE_NDBCLUSTER_DB */
sql/ha_ndbcluster.h
View file @
2119a88a
...
...
@@ -728,3 +728,5 @@ int ndbcluster_table_exists_in_engine(THD* thd,
int
ndbcluster_drop_database
(
const
char
*
path
);
void
ndbcluster_print_error
(
int
error
,
const
NdbOperation
*
error_op
);
int
ndbcluster_show_status
(
THD
*
);
sql/mysqld.cc
View file @
2119a88a
...
...
@@ -5818,6 +5818,7 @@ struct show_var_st status_vars[]= {
{
"Com_show_fields"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stat
[(
uint
)
SQLCOM_SHOW_FIELDS
]),
SHOW_LONG_STATUS
},
{
"Com_show_grants"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stat
[(
uint
)
SQLCOM_SHOW_GRANTS
]),
SHOW_LONG_STATUS
},
{
"Com_show_innodb_status"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stat
[(
uint
)
SQLCOM_SHOW_INNODB_STATUS
]),
SHOW_LONG_STATUS
},
{
"Com_show_ndb_status"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stat
[(
uint
)
SQLCOM_SHOW_NDBCLUSTER_STATUS
]),
SHOW_LONG_STATUS
},
{
"Com_show_keys"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stat
[(
uint
)
SQLCOM_SHOW_KEYS
]),
SHOW_LONG_STATUS
},
{
"Com_show_logs"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stat
[(
uint
)
SQLCOM_SHOW_LOGS
]),
SHOW_LONG_STATUS
},
{
"Com_show_master_status"
,
(
char
*
)
offsetof
(
STATUS_VAR
,
com_stat
[(
uint
)
SQLCOM_SHOW_MASTER_STAT
]),
SHOW_LONG_STATUS
},
...
...
sql/sql_lex.h
View file @
2119a88a
...
...
@@ -53,7 +53,7 @@ enum enum_sql_command {
SQLCOM_SHOW_DATABASES
,
SQLCOM_SHOW_TABLES
,
SQLCOM_SHOW_FIELDS
,
SQLCOM_SHOW_KEYS
,
SQLCOM_SHOW_VARIABLES
,
SQLCOM_SHOW_LOGS
,
SQLCOM_SHOW_STATUS
,
SQLCOM_SHOW_INNODB_STATUS
,
SQLCOM_SHOW_MUTEX_STATUS
,
SQLCOM_SHOW_INNODB_STATUS
,
SQLCOM_SHOW_
NDBCLUSTER_STATUS
,
SQLCOM_SHOW_
MUTEX_STATUS
,
SQLCOM_SHOW_PROCESSLIST
,
SQLCOM_SHOW_MASTER_STAT
,
SQLCOM_SHOW_SLAVE_STAT
,
SQLCOM_SHOW_GRANTS
,
SQLCOM_SHOW_CREATE
,
SQLCOM_SHOW_CHARSETS
,
SQLCOM_SHOW_COLLATIONS
,
SQLCOM_SHOW_CREATE_DB
,
SQLCOM_SHOW_TABLE_STATUS
,
...
...
sql/sql_parse.cc
View file @
2119a88a
...
...
@@ -25,6 +25,10 @@
#include "ha_innodb.h"
#endif
#ifdef HAVE_NDBCLUSTER_DB
#include "ha_ndbcluster.h"
#endif
#include "sp_head.h"
#include "sp.h"
#include "sp_cache.h"
...
...
@@ -2669,6 +2673,13 @@ mysql_execute_command(THD *thd)
res
=
load_master_data
(
thd
);
break
;
#endif
/* HAVE_REPLICATION */
#ifdef HAVE_NDBCLUSTER_DB
case
SQLCOM_SHOW_NDBCLUSTER_STATUS
:
{
res
=
ndbcluster_show_status
(
thd
);
break
;
}
#endif
#ifdef HAVE_INNOBASE_DB
case
SQLCOM_SHOW_INNODB_STATUS
:
{
...
...
sql/sql_yacc.yy
View file @
2119a88a
...
...
@@ -6648,6 +6648,9 @@ show_engine_param:
STATUS_SYM
{
switch (Lex->create_info.db_type) {
case DB_TYPE_NDBCLUSTER:
Lex->sql_command = SQLCOM_SHOW_NDBCLUSTER_STATUS;
break;
case DB_TYPE_INNODB:
Lex->sql_command = SQLCOM_SHOW_INNODB_STATUS;
break;
...
...
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