8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-25 00:03:03 +01:00

Fixed GBAK -kill dropping existing shadow.

This commit is contained in:
dimitr 2005-05-02 17:22:16 +00:00
parent 8121bf4de9
commit e296380ddf

View File

@ -1373,21 +1373,23 @@ void VIO_erase(thread_db* tdbb, record_param* rpb, jrd_tra* transaction)
{ {
const bool name_defined = const bool name_defined =
EVL_field(0, rpb->rpb_record, f_file_name, &desc); EVL_field(0, rpb->rpb_record, f_file_name, &desc);
USHORT rel_flags; USHORT file_flags =
if (EVL_field(0, rpb->rpb_record, f_file_flags, &desc2) && EVL_field(0, rpb->rpb_record, f_file_flags, &desc2) ?
((rel_flags = MOV_get_long(&desc2, 0)) & FILE_difference)) MOV_get_long(&desc2, 0) : 0;
if (file_flags & FILE_difference)
{ {
if (rel_flags & FILE_backing_up) if (file_flags & FILE_backing_up)
DFW_post_work(transaction, dfw_end_backup, &desc, 0); DFW_post_work(transaction, dfw_end_backup, &desc, 0);
if (name_defined) if (name_defined)
DFW_post_work(transaction, dfw_delete_difference, &desc, 0); DFW_post_work(transaction, dfw_delete_difference, &desc, 0);
} }
else else if (EVL_field(0, rpb->rpb_record, f_file_shad_num, &desc2) &&
if (EVL_field(0, rpb->rpb_record, f_file_shad_num, &desc2) && (id = MOV_get_long(&desc2, 0)))
(id = MOV_get_long(&desc2, 0))) {
{ if (!(file_flags & FILE_inactive)) {
DFW_post_work(transaction, dfw_delete_shadow, &desc, id); DFW_post_work(transaction, dfw_delete_shadow, &desc, id);
} }
}
break; break;
} }