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
|
ERROR HY000: Table 't1' is marked as crashed and should be repaired
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
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;
|
DROP TABLE t1;
|
||||||
--echo End of 5.1 tests
|
--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_ENTER("my_rename");
|
||||||
DBUG_PRINT("my",("from %s to %s MyFlags %lu", from, to, MyFlags));
|
DBUG_PRINT("my",("from %s to %s MyFlags %lu", from, to, MyFlags));
|
||||||
|
|
||||||
#if defined(HAVE_RENAME)
|
|
||||||
#if defined(__WIN__)
|
#if defined(__WIN__)
|
||||||
/*
|
if (!MoveFileEx(from, to, MOVEFILE_COPY_ALLOWED |
|
||||||
On windows we can't rename over an existing file:
|
MOVEFILE_REPLACE_EXISTING))
|
||||||
Remove any conflicting files:
|
{
|
||||||
*/
|
my_osmaperr(GetLastError());
|
||||||
(void) my_delete(to, MYF(0));
|
#elif defined(HAVE_RENAME)
|
||||||
#endif
|
|
||||||
if (rename(from,to))
|
if (rename(from,to))
|
||||||
|
{
|
||||||
#else
|
#else
|
||||||
if (link(from, to) || unlink(from))
|
if (link(from, to) || unlink(from))
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
|
#endif
|
||||||
my_errno=errno;
|
my_errno=errno;
|
||||||
error = -1;
|
error = -1;
|
||||||
if (MyFlags & (MY_FAE+MY_WME))
|
if (MyFlags & (MY_FAE+MY_WME))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user