mariadb/mysql-test/t/windows.test
unknown 3ca9164590 Bug#20789 Merge Subtable Rename Causes Crash
- When an ALTER TABLE RENAME is performed on windows, the files are closed and their cached file 
   descriptors are marked invalid. Performing INSERT, UPDATE or SELECT on the associated merge
   table causes a server crash on windows. This patch adds a test for bad file descriptors when a 
   table attempts a lock. If a bad descriptor is found an error is thrown. An additional FLUSH TABLES
   will be necessary to further operate on the associated merge table.


myisam/mi_locking.c:
  This patch prevents the windows built to crash if the file is closed.
mysql-test/r/windows.result:
  Added test case for the windows built.
mysql-test/t/windows.test:
  Added test case for the windows built.
2006-09-12 14:23:41 +02:00

59 lines
1.2 KiB
Text

# Windows-specific tests
--source include/windows.inc
#
# Bug 9148: Denial of service
#
--error 1049
use lpt1;
--error 1049
use com1;
--error 1049
use prn;
#
# Bug #12325: Can't create table named 'nu'
#
create table nu (a int);
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;