Below is the list of changes that have just been committed into a local
5.0 repository of Kristofer Pettersson. When Kristofer Pettersson does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2006-09-11 23:33:49+02:00, Kristofer.Pettersson@naruto. +3 -0
Bug#20789 Merge Subtable Rename Causes Crash
- Added test for bad file descriptor which prevents windows version to crash by preventing lock by throwing an error.
myisam/mi_locking.c@stripped, 2006-09-11 23:33:45+02:00, Kristofer.Pettersson@naruto. +12 -1
This patch prevents the windos built to crash if the file is closed.
mysql-test/r/windows.result@stripped, 2006-09-11 23:33:45+02:00, Kristofer.Pettersson@naruto. +28 -0
Added test case for the windows built.
mysql-test/t/windows.test@stripped, 2006-09-11 23:33:46+02:00, Kristofer.Pettersson@naruto. +39 -0
Added test case for the windows built.
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: Kristofer.Pettersson
# Host: naruto.
# Root: C:/cpp/bug20789/my50-bug20789
--- 1.39/myisam/mi_locking.c 2006-09-11 23:34:07 +02:00
+++ 1.40/myisam/mi_locking.c 2006-09-11 23:34:07 +02:00
@@ -223,7 +223,18 @@
default:
break; /* Impossible */
}
- }
+ }
+#ifdef __WIN__
+ else
+ {
+ /*
+ The file has been closed and kfile is -1.
+ See mi_extra.c about implementation of
+ HA_EXTRA_PREPARE_FOR_DELETE.
+ */
+ error=HA_ERR_NO_SUCH_TABLE;
+ }
+#endif
pthread_mutex_unlock(&share->intern_lock);
#if defined(FULL_LOG) || defined(_lint)
lock_type|=(int) (flag << 8); /* Set bit to set if real lock */
--- 1.1/mysql-test/r/windows.result 2006-09-11 23:34:07 +02:00
+++ 1.2/mysql-test/r/windows.result 2006-09-11 23:34:07 +02:00
@@ -6,3 +6,31 @@
ERROR 42000: Unknown database 'prn'
create table nu (a int);
drop table nu;
+CREATE TABLE `t1` (
+`TIM` datetime NOT NULL,
+`VAL` double default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+CREATE TABLE `t2` (
+`TIM` datetime NOT NULL,
+`VAL` double default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+CREATE TABLE `mt` (
+`TIM` datetime NOT NULL,
+`VAL` double default NULL
+) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST
+UNION=(`t1`,`t2`);
+INSERT INTO mt VALUES ('2006-01-01',0);
+ALTER TABLE `t2` RENAME TO `t`;
+INSERT INTO mt VALUES ('2006-01-01',0);
+ERROR HY000: Can't lock file (errno: 155)
+select * from mt;
+ERROR HY000: Can't lock file (errno: 155)
+FLUSH TABLES;
+select * from mt;
+ERROR HY000: Can't find file: 'mt' (errno: 2)
+ALTER TABLE `t` RENAME TO `t2`;
+INSERT INTO mt VALUES ('2006-01-01',0);
+select * from mt;
+TIM VAL
+2006-01-01 00:00:00 0
+2006-01-01 00:00:00 0
--- 1.1/mysql-test/t/windows.test 2006-09-11 23:34:08 +02:00
+++ 1.2/mysql-test/t/windows.test 2006-09-11 23:34:08 +02:00
@@ -18,3 +18,42 @@
drop table nu;
# End of 4.1 tests
+
+#
+# Bug #20789: Merge Subtable Rename Causes Crash
+#
+CREATE TABLE `t1` (
+ `TIM` datetime NOT NULL,
+ `VAL` double default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+CREATE TABLE `t2` (
+ `TIM` datetime NOT NULL,
+ `VAL` double default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+CREATE TABLE `mt` (
+ `TIM` datetime NOT NULL,
+ `VAL` double default NULL
+) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST
+UNION=(`t1`,`t2`);
+
+# insert into the merge table and thus open it.
+INSERT INTO mt VALUES ('2006-01-01',0);
+
+# Alter one of the tables that are part of the merge table
+ALTER TABLE `t2` RENAME TO `t`;
+
+# Insert into the merge table that has just been altered
+--error 1015
+INSERT INTO mt VALUES ('2006-01-01',0);
+--error 1015
+select * from mt;
+
+FLUSH TABLES;
+--error 1017
+select * from mt;
+
+# Alter one of the tables that are part of the merge table
+ALTER TABLE `t` RENAME TO `t2`;
+INSERT INTO mt VALUES ('2006-01-01',0);
+select * from mt;
+
| Thread |
|---|
| • bk commit into 5.0 tree (Kristofer.Pettersson:1.2248) BUG#20789 | kpettersson | 11 Sep |