Description:
ALTER TABLE RENAME strips symlinked .MYI filename with colon(:) partially.
How to repeat:
1. Create MyISAM table with index(.MYI) located in another location:
CREATE TABLE testflows ( router_id TINYINT UNSIGNED NOT NULL,
in_if_id MEDIUMINT UNSIGNED NOT NULL,
out_if_id MEDIUMINT UNSIGNED NOT NULL,
timestamp DATETIME NOT NULL,
src_addr INT UNSIGNED NOT NULL,
dst_addr INT UNSIGNED NOT NULL,
d_pkts INT UNSIGNED NOT NULL,
d_octets INT UNSIGNED NOT NULL,
protocol MEDIUMINT UNSIGNED NOT NULL,
src_port MEDIUMINT UNSIGNED NOT NULL,
dst_port MEDIUMINT UNSIGNED NOT NULL,
src_as MEDIUMINT UNSIGNED NOT NULL,
dst_as MEDIUMINT UNSIGNED NOT NULL)
INDEX DIRECTORY='/mnt/disk1/index';
ls -la /var/db/mysql/netflow/testflow*
-rw-rw---- 1 mysql mysql 0 Mar 1 16:52 testflows.MYD
lrwxrwx--x 1 mysql mysql 30 Mar 1 16:52 testflows.MYI -> /mnt/disk1/index/testflows.MYI
-rw-rw---- 1 mysql mysql 8940 Mar 1 16:52 testflows.frm
2. ALTER TABLE `testflows` RENAME `testflows-20050301-14:07:10`;
ls -la /var/db/mysql/netflow/testflow*
-rw-rw---- 1 mysql mysql 0 Mar 1 16:52 testflows-20050301-14:07:10.MYD
lrwxrwx--x 1 mysql mysql 23 Mar 1 16:52 testflows-20050301-14:07:10.MYI -> /mnt/disk1/index/10.MYI
-rw-rw---- 1 mysql mysql 8940 Mar 1 16:52 testflows-20050301-14:07:10.frm
The testflows files renamed, but index filename is stripped.
I've to rotate these files daily in same time and all of them got same filename:
-rw-rw---- 1 mysql mysql 631519965 Feb 15 00:51 flows-20050215-01:25:00.MYD
lrwxrwx--x 1 mysql mysql 23 Feb 15 01:25 flows-20050215-01:25:00.MYI -> /mnt/disk1/index/00.MYI
-rw-rw---- 1 mysql mysql 8940 Feb 14 01:25 flows-20050215-01:25:00.frm
-rw-rw---- 1 mysql mysql 601769106 Feb 16 00:51 flows-20050216-01:25:00.MYD
lrwxrwx--x 1 mysql mysql 23 Feb 16 01:25 flows-20050216-01:25:00.MYI -> /mnt/disk1/index/00.MYI
-rw-rw---- 1 mysql mysql 8940 Feb 15 01:25 flows-20050216-01:25:00.frm
-rw-rw---- 1 mysql mysql 585248512 Feb 17 00:51 flows-20050217-01:25:00.MYD
lrwxrwx--x 1 mysql mysql 23 Feb 17 01:25 flows-20050217-01:25:00.MYI -> /mnt/disk1/index/00.MYI
-rw-rw---- 1 mysql mysql 8940 Feb 16 01:25 flows-20050217-01:25:00.frm
-rw-rw---- 1 mysql mysql 551591718 Feb 18 00:51 flows-20050218-01:25:01.MYD
lrwxrwx--x 1 mysql mysql 23 Feb 18 01:25 flows-20050218-01:25:01.MYI -> /mnt/disk1/index/01.MYI
-rw-rw---- 1 mysql mysql 8940 Feb 17 01:25 flows-20050218-01:25:01.frm
-rw-rw---- 1 mysql mysql 559918661 Feb 19 00:51 flows-20050219-01:25:00.MYD
lrwxrwx--x 1 mysql mysql 23 Feb 19 01:25 flows-20050219-01:25:00.MYI -> /mnt/disk1/index/00.MYI
-rw-rw---- 1 mysql mysql 8940 Feb 18 01:25 flows-20050219-01:25:00.frm
-rw-rw---- 1 mysql mysql 380746342 Feb 20 00:51 flows-20050220-01:25:00.MYD
lrwxrwx--x 1 mysql mysql 23 Feb 20 01:25 flows-20050220-01:25:00.MYI -> /mnt/disk1/index/00.MYI
Suggested fix:
I've searched Bug Database but it doesn't show any similar problem. Also note that if perform this task without symlinked index - all will be correct.
Description: ALTER TABLE RENAME strips symlinked .MYI filename with colon(:) partially. How to repeat: 1. Create MyISAM table with index(.MYI) located in another location: CREATE TABLE testflows ( router_id TINYINT UNSIGNED NOT NULL, in_if_id MEDIUMINT UNSIGNED NOT NULL, out_if_id MEDIUMINT UNSIGNED NOT NULL, timestamp DATETIME NOT NULL, src_addr INT UNSIGNED NOT NULL, dst_addr INT UNSIGNED NOT NULL, d_pkts INT UNSIGNED NOT NULL, d_octets INT UNSIGNED NOT NULL, protocol MEDIUMINT UNSIGNED NOT NULL, src_port MEDIUMINT UNSIGNED NOT NULL, dst_port MEDIUMINT UNSIGNED NOT NULL, src_as MEDIUMINT UNSIGNED NOT NULL, dst_as MEDIUMINT UNSIGNED NOT NULL) INDEX DIRECTORY='/mnt/disk1/index'; ls -la /var/db/mysql/netflow/testflow* -rw-rw---- 1 mysql mysql 0 Mar 1 16:52 testflows.MYD lrwxrwx--x 1 mysql mysql 30 Mar 1 16:52 testflows.MYI -> /mnt/disk1/index/testflows.MYI -rw-rw---- 1 mysql mysql 8940 Mar 1 16:52 testflows.frm 2. ALTER TABLE `testflows` RENAME `testflows-20050301-14:07:10`; ls -la /var/db/mysql/netflow/testflow* -rw-rw---- 1 mysql mysql 0 Mar 1 16:52 testflows-20050301-14:07:10.MYD lrwxrwx--x 1 mysql mysql 23 Mar 1 16:52 testflows-20050301-14:07:10.MYI -> /mnt/disk1/index/10.MYI -rw-rw---- 1 mysql mysql 8940 Mar 1 16:52 testflows-20050301-14:07:10.frm The testflows files renamed, but index filename is stripped. I've to rotate these files daily in same time and all of them got same filename: -rw-rw---- 1 mysql mysql 631519965 Feb 15 00:51 flows-20050215-01:25:00.MYD lrwxrwx--x 1 mysql mysql 23 Feb 15 01:25 flows-20050215-01:25:00.MYI -> /mnt/disk1/index/00.MYI -rw-rw---- 1 mysql mysql 8940 Feb 14 01:25 flows-20050215-01:25:00.frm -rw-rw---- 1 mysql mysql 601769106 Feb 16 00:51 flows-20050216-01:25:00.MYD lrwxrwx--x 1 mysql mysql 23 Feb 16 01:25 flows-20050216-01:25:00.MYI -> /mnt/disk1/index/00.MYI -rw-rw---- 1 mysql mysql 8940 Feb 15 01:25 flows-20050216-01:25:00.frm -rw-rw---- 1 mysql mysql 585248512 Feb 17 00:51 flows-20050217-01:25:00.MYD lrwxrwx--x 1 mysql mysql 23 Feb 17 01:25 flows-20050217-01:25:00.MYI -> /mnt/disk1/index/00.MYI -rw-rw---- 1 mysql mysql 8940 Feb 16 01:25 flows-20050217-01:25:00.frm -rw-rw---- 1 mysql mysql 551591718 Feb 18 00:51 flows-20050218-01:25:01.MYD lrwxrwx--x 1 mysql mysql 23 Feb 18 01:25 flows-20050218-01:25:01.MYI -> /mnt/disk1/index/01.MYI -rw-rw---- 1 mysql mysql 8940 Feb 17 01:25 flows-20050218-01:25:01.frm -rw-rw---- 1 mysql mysql 559918661 Feb 19 00:51 flows-20050219-01:25:00.MYD lrwxrwx--x 1 mysql mysql 23 Feb 19 01:25 flows-20050219-01:25:00.MYI -> /mnt/disk1/index/00.MYI -rw-rw---- 1 mysql mysql 8940 Feb 18 01:25 flows-20050219-01:25:00.frm -rw-rw---- 1 mysql mysql 380746342 Feb 20 00:51 flows-20050220-01:25:00.MYD lrwxrwx--x 1 mysql mysql 23 Feb 20 01:25 flows-20050220-01:25:00.MYI -> /mnt/disk1/index/00.MYI Suggested fix: I've searched Bug Database but it doesn't show any similar problem. Also note that if perform this task without symlinked index - all will be correct.