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
2e05b3b1
Commit
2e05b3b1
authored
Sep 29, 2005
by
georg@lmy002.wdf.sap.corp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix for bug #13451 (memleak in rename view) after Dmitri's review:
- call explicitly destructor for view's LEX - cs fixes
parent
acdc193a
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
8 deletions
+20
-8
sql/sql_view.cc
sql/sql_view.cc
+20
-8
No files found.
sql/sql_view.cc
View file @
2e05b3b1
...
...
@@ -1400,6 +1400,7 @@ mysql_rename_view(THD *thd,
LEX_STRING
pathstr
,
file
;
File_parser
*
parser
;
char
view_path
[
FN_REFLEN
];
bool
error
=
TRUE
;
DBUG_ENTER
(
"mysql_rename_view"
);
...
...
@@ -1411,19 +1412,20 @@ mysql_rename_view(THD *thd,
pathstr
.
length
=
strlen
(
view_path
);
if
((
parser
=
sql_parse_prepare
(
&
pathstr
,
thd
->
mem_root
,
1
))
&&
is_equal
(
&
view_type
,
parser
->
type
()))
{
is_equal
(
&
view_type
,
parser
->
type
()))
{
char
dir_buff
[
FN_REFLEN
],
file_buff
[
FN_REFLEN
];
/* get view definition and source */
if
(
mysql_make_view
(
parser
,
view
)
||
parser
->
parse
((
gptr
)
view
,
thd
->
mem_root
,
view_parameters
+
source_number_position
,
1
))
DBUG_RETURN
(
1
)
;
goto
err
;
/* rename view and it's backups */
if
(
rename_in_schema_file
(
view
->
db
,
view
->
table_name
,
new_name
,
view
->
revision
-
1
,
num_view_backups
))
DBUG_RETURN
(
1
)
;
goto
err
;
strxnmov
(
dir_buff
,
FN_REFLEN
,
mysql_data_home
,
"/"
,
view
->
db
,
"/"
,
NullS
);
(
void
)
unpack_filename
(
dir_buff
,
dir_buff
);
...
...
@@ -1436,11 +1438,13 @@ mysql_rename_view(THD *thd,
-
file_buff
);
if
(
sql_create_definition_file
(
&
pathstr
,
&
file
,
view_file_type
,
(
gptr
)
view
,
view_parameters
,
num_view_backups
))
{
(
gptr
)
view
,
view_parameters
,
num_view_backups
))
{
/* restore renamed view in case of error */
rename_in_schema_file
(
view
->
db
,
new_name
,
view
->
table_name
,
view
->
revision
-
1
,
num_view_backups
);
DBUG_RETURN
(
1
)
;
goto
err
;
}
}
else
DBUG_RETURN
(
1
);
...
...
@@ -1448,5 +1452,13 @@ mysql_rename_view(THD *thd,
/* remove cache entries */
query_cache_invalidate3
(
thd
,
view
,
0
);
sp_cache_invalidate
();
DBUG_RETURN
(
0
);
error
=
FALSE
;
err:
/*
We have to explicitly call destructor for view's LEX since it won't
be called otherwise.
*/
delete
view
->
view
;
DBUG_RETURN
(
error
);
}
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