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)
|
ERROR HY000: File './test/t1.CSV' not found (Errcode: 2)
|
||||||
unlock tables;
|
unlock tables;
|
||||||
drop table t1;
|
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
|
End of 5.1 tests
|
||||||
|
@ -1804,4 +1804,17 @@ unlock tables;
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
--disconnect con1
|
--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
|
--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
|
a file, which descriptor is still open. EACCES will be returned
|
||||||
when trying to delete the "to"-file in my_rename().
|
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)) ||
|
if (my_close(data_file,MYF(0)) || my_close(repair_file, MYF(0)) ||
|
||||||
my_rename(repaired_fname, share->data_file_name, MYF(0)))
|
my_rename(repaired_fname, share->data_file_name, MYF(0)))
|
||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user