Bug#41441 repair csv table crashes debug server
The problem: data file can not be deleted on win because there is another opened instance of this file. Data file might be opened twice, on table opening stage and during write_row execution. We need to close both instances to satisfy Win.
This commit is contained in:
parent
51b78382cd
commit
c9245922d6
@ -5394,4 +5394,17 @@ select * from t1;
|
||||
ERROR HY000: File './test/t1.CSV' not found (Errcode: 2)
|
||||
unlock tables;
|
||||
drop table t1;
|
||||
create table t1(a enum ('a') not null) engine=csv;
|
||||
insert into t1 values (2);
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'a' at row 1
|
||||
select * from t1 limit 1;
|
||||
ERROR HY000: Table 't1' is marked as crashed and should be repaired
|
||||
repair table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair Warning Data truncated for column 'a' at row 1
|
||||
test.t1 repair status OK
|
||||
select * from t1 limit 1;
|
||||
a
|
||||
drop table t1;
|
||||
End of 5.1 tests
|
||||
|
@ -1804,4 +1804,17 @@ unlock tables;
|
||||
drop table t1;
|
||||
--disconnect con1
|
||||
|
||||
#
|
||||
# Bug#41441 repair csv table crashes debug server
|
||||
#
|
||||
# Note: The test should be removed after Bug#33717 is fixed
|
||||
|
||||
create table t1(a enum ('a') not null) engine=csv;
|
||||
insert into t1 values (2);
|
||||
--error ER_CRASHED_ON_USAGE
|
||||
select * from t1 limit 1;
|
||||
repair table t1;
|
||||
select * from t1 limit 1;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@ -1439,6 +1439,17 @@ int ha_tina::repair(THD* thd, HA_CHECK_OPT* check_opt)
|
||||
a file, which descriptor is still open. EACCES will be returned
|
||||
when trying to delete the "to"-file in my_rename().
|
||||
*/
|
||||
if (share->tina_write_opened)
|
||||
{
|
||||
/*
|
||||
Data file might be opened twice, on table opening stage and
|
||||
during write_row execution. We need to close both instances
|
||||
to satisfy Win.
|
||||
*/
|
||||
if (my_close(share->tina_write_filedes, MYF(0)))
|
||||
DBUG_RETURN(my_errno ? my_errno : -1);
|
||||
share->tina_write_opened= FALSE;
|
||||
}
|
||||
if (my_close(data_file,MYF(0)) || my_close(repair_file, MYF(0)) ||
|
||||
my_rename(repaired_fname, share->data_file_name, MYF(0)))
|
||||
DBUG_RETURN(-1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user