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
bc07ccf8
Commit
bc07ccf8
authored
Feb 12, 2014
by
Rich Prohaska
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#182 fix dbt array memory leak
parent
d06d7363
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
30 additions
and
18 deletions
+30
-18
storage/tokudb/ha_tokudb.cc
storage/tokudb/ha_tokudb.cc
+16
-8
storage/tokudb/hatoku_defines.h
storage/tokudb/hatoku_defines.h
+14
-10
No files found.
storage/tokudb/ha_tokudb.cc
View file @
bc07ccf8
...
@@ -1197,9 +1197,8 @@ static int generate_row_for_put(
...
@@ -1197,9 +1197,8 @@ static int generate_row_for_put(
);
);
}
}
ha_tokudb
::
ha_tokudb
(
handlerton
*
hton
,
TABLE_SHARE
*
table_arg
)
:
handler
(
hton
,
table_arg
)
ha_tokudb
::
ha_tokudb
(
handlerton
*
hton
,
TABLE_SHARE
*
table_arg
)
:
handler
(
hton
,
table_arg
)
{
// flags defined in sql\handler.h
TOKUDB_HANDLER_DBUG_ENTER
(
""
);
{
share
=
NULL
;
share
=
NULL
;
int_table_flags
=
HA_REC_NOT_IN_SEQ
|
HA_NULL_IN_KEY
|
HA_CAN_INDEX_BLOBS
|
HA_PRIMARY_KEY_IN_READ_INDEX
|
HA_PRIMARY_KEY_REQUIRED_FOR_POSITION
|
int_table_flags
=
HA_REC_NOT_IN_SEQ
|
HA_NULL_IN_KEY
|
HA_CAN_INDEX_BLOBS
|
HA_PRIMARY_KEY_IN_READ_INDEX
|
HA_PRIMARY_KEY_REQUIRED_FOR_POSITION
|
HA_FILE_BASED
|
HA_AUTO_PART_KEY
|
HA_TABLE_SCAN_ON_INDEX
|
HA_CAN_WRITE_DURING_OPTIMIZE
;
HA_FILE_BASED
|
HA_AUTO_PART_KEY
|
HA_TABLE_SCAN_ON_INDEX
|
HA_CAN_WRITE_DURING_OPTIMIZE
;
...
@@ -1256,9 +1255,18 @@ ha_tokudb::ha_tokudb(handlerton * hton, TABLE_SHARE * table_arg):handler(hton, t
...
@@ -1256,9 +1255,18 @@ ha_tokudb::ha_tokudb(handlerton * hton, TABLE_SHARE * table_arg):handler(hton, t
tokudb_active_index
=
MAX_KEY
;
tokudb_active_index
=
MAX_KEY
;
invalidate_icp
();
invalidate_icp
();
trx_handler_list
.
data
=
this
;
trx_handler_list
.
data
=
this
;
TOKUDB_HANDLER_DBUG_VOID_RETURN
;
}
}
ha_tokudb
::~
ha_tokudb
()
{
ha_tokudb
::~
ha_tokudb
()
{
TOKUDB_HANDLER_DBUG_ENTER
(
""
);
for
(
uint32_t
i
=
0
;
i
<
sizeof
(
mult_key_dbt_array
)
/
sizeof
(
mult_key_dbt_array
[
0
]);
i
++
)
{
toku_dbt_array_destroy
(
&
mult_key_dbt_array
[
i
]);
}
for
(
uint32_t
i
=
0
;
i
<
sizeof
(
mult_rec_dbt_array
)
/
sizeof
(
mult_rec_dbt_array
[
0
]);
i
++
)
{
toku_dbt_array_destroy
(
&
mult_rec_dbt_array
[
i
]);
}
TOKUDB_HANDLER_DBUG_VOID_RETURN
;
}
}
//
//
...
@@ -3010,7 +3018,7 @@ void ha_tokudb::init_hidden_prim_key_info() {
...
@@ -3010,7 +3018,7 @@ void ha_tokudb::init_hidden_prim_key_info() {
share
->
status
|=
STATUS_PRIMARY_KEY_INIT
;
share
->
status
|=
STATUS_PRIMARY_KEY_INIT
;
}
}
tokudb_pthread_mutex_unlock
(
&
share
->
mutex
);
tokudb_pthread_mutex_unlock
(
&
share
->
mutex
);
DBUG_VOID_RETURN
;
TOKUDB_HANDLER_
DBUG_VOID_RETURN
;
}
}
...
@@ -3293,7 +3301,7 @@ void ha_tokudb::start_bulk_insert(ha_rows rows) {
...
@@ -3293,7 +3301,7 @@ void ha_tokudb::start_bulk_insert(ha_rows rows) {
share
->
try_table_lock
=
false
;
share
->
try_table_lock
=
false
;
tokudb_pthread_mutex_unlock
(
&
share
->
mutex
);
tokudb_pthread_mutex_unlock
(
&
share
->
mutex
);
}
}
DBUG_VOID_RETURN
;
TOKUDB_HANDLER_
DBUG_VOID_RETURN
;
}
}
//
//
...
@@ -4649,7 +4657,7 @@ void ha_tokudb::read_key_only(uchar * buf, uint keynr, DBT const *found_key) {
...
@@ -4649,7 +4657,7 @@ void ha_tokudb::read_key_only(uchar * buf, uint keynr, DBT const *found_key) {
if
(
!
(
hidden_primary_key
&&
keynr
==
primary_key
))
{
if
(
!
(
hidden_primary_key
&&
keynr
==
primary_key
))
{
unpack_key
(
buf
,
found_key
,
keynr
);
unpack_key
(
buf
,
found_key
,
keynr
);
}
}
DBUG_VOID_RETURN
;
TOKUDB_HANDLER_
DBUG_VOID_RETURN
;
}
}
//
//
...
@@ -5821,7 +5829,7 @@ void ha_tokudb::position(const uchar * record) {
...
@@ -5821,7 +5829,7 @@ void ha_tokudb::position(const uchar * record) {
//
//
memcpy
(
ref
,
&
key
.
size
,
sizeof
(
uint32_t
));
memcpy
(
ref
,
&
key
.
size
,
sizeof
(
uint32_t
));
}
}
DBUG_VOID_RETURN
;
TOKUDB_HANDLER_
DBUG_VOID_RETURN
;
}
}
//
//
...
@@ -7521,7 +7529,7 @@ void ha_tokudb::get_auto_increment(ulonglong offset, ulonglong increment, ulongl
...
@@ -7521,7 +7529,7 @@ void ha_tokudb::get_auto_increment(ulonglong offset, ulonglong increment, ulongl
*
first_value
=
nr
;
*
first_value
=
nr
;
*
nb_reserved_values
=
nb_desired_values
;
*
nb_reserved_values
=
nb_desired_values
;
tokudb_pthread_mutex_unlock
(
&
share
->
mutex
);
tokudb_pthread_mutex_unlock
(
&
share
->
mutex
);
DBUG_VOID_RETURN
;
TOKUDB_HANDLER_
DBUG_VOID_RETURN
;
}
}
bool
ha_tokudb
::
is_optimize_blocking
()
{
bool
ha_tokudb
::
is_optimize_blocking
()
{
...
...
storage/tokudb/hatoku_defines.h
View file @
bc07ccf8
...
@@ -215,23 +215,22 @@ extern ulong tokudb_debug;
...
@@ -215,23 +215,22 @@ extern ulong tokudb_debug;
#define TOKUDB_DEBUG_CHECK (1<<14)
#define TOKUDB_DEBUG_CHECK (1<<14)
#define TOKUDB_DEBUG_ANALYZE (1<<15)
#define TOKUDB_DEBUG_ANALYZE (1<<15)
#define TOKUDB_TRACE(f, ...) \
#define TOKUDB_TRACE(f, ...) { \
fprintf(stderr, "%u %s:%u %s " f "\n", my_tid(), __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__);
fprintf(stderr, "%u %s:%u %s " f "\n", my_tid(), __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__); \
}
static
inline
unsigned
int
my_tid
()
{
static
inline
unsigned
int
my_tid
()
{
return
(
unsigned
int
)
toku_os_gettid
();
return
(
unsigned
int
)
toku_os_gettid
();
}
}
#define TOKUDB_DBUG_ENTER(f, ...) \
#define TOKUDB_DBUG_ENTER(f, ...) { \
{ \
if (tokudb_debug & TOKUDB_DEBUG_ENTER) { \
if (tokudb_debug & TOKUDB_DEBUG_ENTER) { \
TOKUDB_TRACE(f, ##__VA_ARGS__); \
TOKUDB_TRACE(f, ##__VA_ARGS__); \
} \
} \
} \
} \
DBUG_ENTER(__FUNCTION__);
DBUG_ENTER(__FUNCTION__);
#define TOKUDB_DBUG_RETURN(r) \
#define TOKUDB_DBUG_RETURN(r) { \
{ \
int rr = (r); \
int rr = (r); \
if ((tokudb_debug & TOKUDB_DEBUG_RETURN) || (rr != 0 && (tokudb_debug & TOKUDB_DEBUG_ERROR))) { \
if ((tokudb_debug & TOKUDB_DEBUG_RETURN) || (rr != 0 && (tokudb_debug & TOKUDB_DEBUG_ERROR))) { \
TOKUDB_TRACE("return %d", rr); \
TOKUDB_TRACE("return %d", rr); \
...
@@ -242,16 +241,14 @@ static inline unsigned int my_tid() {
...
@@ -242,16 +241,14 @@ static inline unsigned int my_tid() {
#define TOKUDB_HANDLER_TRACE(f, ...) \
#define TOKUDB_HANDLER_TRACE(f, ...) \
fprintf(stderr, "%u %p %s:%u ha_tokudb::%s " f "\n", my_tid(), this, __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__);
fprintf(stderr, "%u %p %s:%u ha_tokudb::%s " f "\n", my_tid(), this, __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__);
#define TOKUDB_HANDLER_DBUG_ENTER(f, ...) \
#define TOKUDB_HANDLER_DBUG_ENTER(f, ...) { \
{ \
if (tokudb_debug & TOKUDB_DEBUG_ENTER) { \
if (tokudb_debug & TOKUDB_DEBUG_ENTER) { \
TOKUDB_HANDLER_TRACE(f, ##__VA_ARGS__); \
TOKUDB_HANDLER_TRACE(f, ##__VA_ARGS__); \
} \
} \
} \
} \
DBUG_ENTER(__FUNCTION__);
DBUG_ENTER(__FUNCTION__);
#define TOKUDB_HANDLER_DBUG_RETURN(r) \
#define TOKUDB_HANDLER_DBUG_RETURN(r) { \
{ \
int rr = (r); \
int rr = (r); \
if ((tokudb_debug & TOKUDB_DEBUG_RETURN) || (rr != 0 && (tokudb_debug & TOKUDB_DEBUG_ERROR))) { \
if ((tokudb_debug & TOKUDB_DEBUG_RETURN) || (rr != 0 && (tokudb_debug & TOKUDB_DEBUG_ERROR))) { \
TOKUDB_HANDLER_TRACE("return %d", rr); \
TOKUDB_HANDLER_TRACE("return %d", rr); \
...
@@ -259,6 +256,13 @@ static inline unsigned int my_tid() {
...
@@ -259,6 +256,13 @@ static inline unsigned int my_tid() {
DBUG_RETURN(rr); \
DBUG_RETURN(rr); \
}
}
#define TOKUDB_HANDLER_DBUG_VOID_RETURN { \
if (tokudb_debug & TOKUDB_DEBUG_RETURN) { \
TOKUDB_HANDLER_TRACE("return"); \
} \
DBUG_VOID_RETURN; \
}
#define TOKUDB_DBUG_DUMP(s, p, len) \
#define TOKUDB_DBUG_DUMP(s, p, len) \
{ \
{ \
TOKUDB_TRACE("%s", s); \
TOKUDB_TRACE("%s", s); \
...
...
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