1 /* Copyright (c) 2000, 2001, 2004-2006 MySQL AB
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; version 2 of the License.
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 GNU General Public License for more details.
12 You should have received a copy of the GNU General Public License
13 along with this program; if not, write to the Free Software
14 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
22 int mi_rename(const char *old_name
, const char *new_name
)
24 char from
[FN_REFLEN
],to
[FN_REFLEN
];
26 uint raid_type
=0,raid_chunks
=0;
28 DBUG_ENTER("mi_rename");
31 check_table_is_closed(old_name
,"rename old_table");
32 check_table_is_closed(new_name
,"rename new table2");
37 if (!(info
=mi_open(old_name
, O_RDONLY
, 0)))
38 DBUG_RETURN(my_errno
);
39 raid_type
= info
->s
->base
.raid_type
;
40 raid_chunks
= info
->s
->base
.raid_chunks
;
44 check_table_is_closed(old_name
,"rename raidcheck");
48 fn_format(from
,old_name
,"",MI_NAME_IEXT
,MY_UNPACK_FILENAME
|MY_APPEND_EXT
);
49 fn_format(to
,new_name
,"",MI_NAME_IEXT
,MY_UNPACK_FILENAME
|MY_APPEND_EXT
);
50 if (my_rename_with_symlink(from
, to
, MYF(MY_WME
)))
51 DBUG_RETURN(my_errno
);
52 fn_format(from
,old_name
,"",MI_NAME_DEXT
,MY_UNPACK_FILENAME
|MY_APPEND_EXT
);
53 fn_format(to
,new_name
,"",MI_NAME_DEXT
,MY_UNPACK_FILENAME
|MY_APPEND_EXT
);
56 DBUG_RETURN(my_raid_rename(from
, to
, raid_chunks
, MYF(MY_WME
)) ? my_errno
:
59 DBUG_RETURN(my_rename_with_symlink(from
, to
,MYF(MY_WME
)) ? my_errno
: 0);