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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
a1f1e77c
Commit
a1f1e77c
authored
Sep 22, 2010
by
Alexey Kopytov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug #56709: Memory leaks at running the 5.1 test suite
Fixed a number of memory leaks discovered by valgrind.
parent
6baf9d5a
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
61 additions
and
19 deletions
+61
-19
dbug/dbug.c
dbug/dbug.c
+4
-9
mysql-test/r/partition_error.result
mysql-test/r/partition_error.result
+10
-0
mysql-test/r/variables_debug.result
mysql-test/r/variables_debug.result
+13
-0
mysql-test/t/partition_error.test
mysql-test/t/partition_error.test
+14
-0
mysql-test/t/variables_debug.test
mysql-test/t/variables_debug.test
+13
-0
sql/item_timefunc.cc
sql/item_timefunc.cc
+2
-2
sql/item_timefunc.h
sql/item_timefunc.h
+0
-1
sql/sql_load.cc
sql/sql_load.cc
+5
-7
No files found.
dbug/dbug.c
View file @
a1f1e77c
...
...
@@ -455,13 +455,8 @@ static void DbugParse(CODE_STATE *cs, const char *control)
rel
=
control
[
0
]
==
'+'
||
control
[
0
]
==
'-'
;
if
((
!
rel
||
(
!
stack
->
out_file
&&
!
stack
->
next
)))
{
/*
We need to free what's already in init_settings, because unlike
the thread related stack frames there's a chance that something
is in these variables already.
*/
if
(
stack
==
&
init_settings
)
FreeState
(
cs
,
stack
,
0
);
/* Free memory associated with the state before resetting its members */
FreeState
(
cs
,
stack
,
0
);
stack
->
flags
=
0
;
stack
->
delay
=
0
;
stack
->
maxdepth
=
0
;
...
...
@@ -1447,8 +1442,8 @@ static void PushState(CODE_STATE *cs)
struct
settings
*
new_malloc
;
new_malloc
=
(
struct
settings
*
)
DbugMalloc
(
sizeof
(
struct
settings
));
bzero
(
new_malloc
,
sizeof
(
struct
settings
));
new_malloc
->
next
=
cs
->
stack
;
new_malloc
->
out_file
=
NULL
;
cs
->
stack
=
new_malloc
;
}
...
...
@@ -1957,7 +1952,7 @@ static FILE *OpenProfile(CODE_STATE *cs, const char *name)
static
void
DBUGCloseFile
(
CODE_STATE
*
cs
,
FILE
*
fp
)
{
if
(
fp
!=
stderr
&&
fp
!=
stdout
&&
fclose
(
fp
)
==
EOF
)
if
(
fp
!=
NULL
&&
fp
!=
stderr
&&
fp
!=
stdout
&&
fclose
(
fp
)
==
EOF
)
{
pthread_mutex_lock
(
&
THR_LOCK_dbug
);
(
void
)
fprintf
(
cs
->
stack
->
out_file
,
ERR_CLOSE
,
cs
->
process
);
...
...
mysql-test/r/partition_error.result
View file @
a1f1e77c
...
...
@@ -1008,4 +1008,14 @@ PARTITION p VALUES LESS THAN (1219089600),
PARTITION pmax VALUES LESS THAN MAXVALUE);
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
DROP TABLE old;
#
# Bug #56709: Memory leaks at running the 5.1 test suite
#
CREATE TABLE t1 (a TIMESTAMP NOT NULL PRIMARY KEY);
ALTER TABLE t1
PARTITION BY RANGE (EXTRACT(DAY FROM a)) (
PARTITION p VALUES LESS THAN (18),
PARTITION pmax VALUES LESS THAN MAXVALUE);
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
DROP TABLE t1;
End of 5.1 tests
mysql-test/r/variables_debug.result
View file @
a1f1e77c
...
...
@@ -24,4 +24,17 @@ SELECT @@global.debug;
@@global.debug
SET GLOBAL debug=@old_debug;
#
# Bug #56709: Memory leaks at running the 5.1 test suite
#
SET @old_local_debug = @@debug;
SET @@debug='d,foo';
SELECT @@debug;
@@debug
d,foo
SET @@debug='';
SELECT @@debug;
@@debug
SET @@debug = @old_local_debug;
End of 5.1 tests
mysql-test/t/partition_error.test
View file @
a1f1e77c
...
...
@@ -1252,4 +1252,18 @@ PARTITION pmax VALUES LESS THAN MAXVALUE);
DROP
TABLE
old
;
--
echo
#
--
echo
# Bug #56709: Memory leaks at running the 5.1 test suite
--
echo
#
CREATE
TABLE
t1
(
a
TIMESTAMP
NOT
NULL
PRIMARY
KEY
);
--
error
ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
ALTER
TABLE
t1
PARTITION
BY
RANGE
(
EXTRACT
(
DAY
FROM
a
))
(
PARTITION
p
VALUES
LESS
THAN
(
18
),
PARTITION
pmax
VALUES
LESS
THAN
MAXVALUE
);
DROP
TABLE
t1
;
--
echo
End
of
5.1
tests
mysql-test/t/variables_debug.test
View file @
a1f1e77c
...
...
@@ -25,4 +25,17 @@ SELECT @@global.debug;
SET
GLOBAL
debug
=@
old_debug
;
--
echo
#
--
echo
# Bug #56709: Memory leaks at running the 5.1 test suite
--
echo
#
SET
@
old_local_debug
=
@@
debug
;
SET
@@
debug
=
'd,foo'
;
SELECT
@@
debug
;
SET
@@
debug
=
''
;
SELECT
@@
debug
;
SET
@@
debug
=
@
old_local_debug
;
--
echo
End
of
5.1
tests
sql/item_timefunc.cc
View file @
a1f1e77c
...
...
@@ -2270,8 +2270,6 @@ void Item_extract::print(String *str, enum_query_type query_type)
void
Item_extract
::
fix_length_and_dec
()
{
value
.
alloc
(
32
);
// alloc buffer
maybe_null
=
1
;
// If wrong date
switch
(
int_type
)
{
case
INTERVAL_YEAR
:
max_length
=
4
;
date_value
=
1
;
break
;
...
...
@@ -2314,6 +2312,8 @@ longlong Item_extract::val_int()
}
else
{
char
buf
[
40
];
String
value
(
buf
,
sizeof
(
buf
),
&
my_charset_bin
);;
String
*
res
=
args
[
0
]
->
val_str
(
&
value
);
if
(
!
res
||
str_to_time_with_warn
(
res
->
ptr
(),
res
->
length
(),
&
ltime
))
{
...
...
sql/item_timefunc.h
View file @
a1f1e77c
...
...
@@ -702,7 +702,6 @@ class Item_date_add_interval :public Item_date_func
class
Item_extract
:
public
Item_int_func
{
String
value
;
bool
date_value
;
public:
const
interval_type
int_type
;
// keep it public
...
...
sql/sql_load.cc
View file @
a1f1e77c
...
...
@@ -1116,6 +1116,7 @@ READ_INFO::READ_INFO(File file_par, uint tot_length, CHARSET_INFO *cs,
MYF
(
MY_WME
)))
{
my_free
((
uchar
*
)
buffer
,
MYF
(
0
));
/* purecov: inspected */
buffer
=
NULL
;
error
=
1
;
}
else
...
...
@@ -1142,13 +1143,10 @@ READ_INFO::READ_INFO(File file_par, uint tot_length, CHARSET_INFO *cs,
READ_INFO
::~
READ_INFO
()
{
if
(
!
error
)
{
if
(
need_end_io_cache
)
::
end_io_cache
(
&
cache
);
my_free
((
uchar
*
)
buffer
,
MYF
(
0
));
error
=
1
;
}
if
(
!
error
&&
need_end_io_cache
)
::
end_io_cache
(
&
cache
);
my_free
(
buffer
,
MYF
(
MY_ALLOW_ZERO_PTR
));
}
...
...
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