MDEV-5612 - my_rename() deletes files when it shouldn't
Ported fix for MySQL BUG#51861.
This commit is contained in:
parent
6efa5efa7d
commit
9d918f41d3
@ -5485,3 +5485,11 @@ SELECT * FROM t1;
|
||||
ERROR HY000: Table 't1' is marked as crashed and should be repaired
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# MDEV-5612 - my_rename() deletes files when it shouldn't
|
||||
#
|
||||
CREATE TABLE t1(a INT NOT NULL) ENGINE=CSV;
|
||||
RENAME TABLE t1 TO t2;
|
||||
SELECT * FROM t2;
|
||||
a
|
||||
DROP TABLE t2;
|
||||
|
@ -1917,3 +1917,12 @@ SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-5612 - my_rename() deletes files when it shouldn't
|
||||
--echo #
|
||||
CREATE TABLE t1(a INT NOT NULL) ENGINE=CSV;
|
||||
move_file $MYSQLD_DATADIR/test/t1.CSV $MYSQLD_DATADIR/test/t2.CSV;
|
||||
RENAME TABLE t1 TO t2;
|
||||
SELECT * FROM t2;
|
||||
DROP TABLE t2;
|
||||
|
@ -27,19 +27,18 @@ int my_rename(const char *from, const char *to, myf MyFlags)
|
||||
DBUG_ENTER("my_rename");
|
||||
DBUG_PRINT("my",("from %s to %s MyFlags %lu", from, to, MyFlags));
|
||||
|
||||
#if defined(HAVE_RENAME)
|
||||
#if defined(__WIN__)
|
||||
/*
|
||||
On windows we can't rename over an existing file:
|
||||
Remove any conflicting files:
|
||||
*/
|
||||
(void) my_delete(to, MYF(0));
|
||||
#endif
|
||||
if (!MoveFileEx(from, to, MOVEFILE_COPY_ALLOWED |
|
||||
MOVEFILE_REPLACE_EXISTING))
|
||||
{
|
||||
my_osmaperr(GetLastError());
|
||||
#elif defined(HAVE_RENAME)
|
||||
if (rename(from,to))
|
||||
{
|
||||
#else
|
||||
if (link(from, to) || unlink(from))
|
||||
#endif
|
||||
{
|
||||
#endif
|
||||
my_errno=errno;
|
||||
error = -1;
|
||||
if (MyFlags & (MY_FAE+MY_WME))
|
||||
|
Loading…
x
Reference in New Issue
Block a user