mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-23 18:43:03 +01:00
Rolled back previous bugfix due to found side-effects. Still looking for a correct solution.
This commit is contained in:
parent
2f891896f9
commit
7d9f0821c3
@ -2810,9 +2810,7 @@ void VIO_verb_cleanup(TDBB tdbb, JRD_TRA transaction)
|
|||||||
VIO_backout(tdbb, &rpb, transaction);
|
VIO_backout(tdbb, &rpb, transaction);
|
||||||
else {
|
else {
|
||||||
record = action->vct_undo->current().rec_data;
|
record = action->vct_undo->current().rec_data;
|
||||||
same_tx =
|
same_tx = (record->rec_flags & REC_same_tx) ? TRUE : FALSE;
|
||||||
(record->rec_flags & REC_same_tx) ? TRUE :
|
|
||||||
FALSE;
|
|
||||||
|
|
||||||
/* Have we done BOTH an update and delete to this record
|
/* Have we done BOTH an update and delete to this record
|
||||||
in the same transaction? */
|
in the same transaction? */
|
||||||
@ -2850,11 +2848,9 @@ void VIO_verb_cleanup(TDBB tdbb, JRD_TRA transaction)
|
|||||||
reinterpret_cast <
|
reinterpret_cast <
|
||||||
blk * >(tdbb->tdbb_default));
|
blk * >(tdbb->tdbb_default));
|
||||||
}
|
}
|
||||||
update_in_place(tdbb, transaction, &rpb,
|
update_in_place(tdbb, transaction, &rpb, &new_rpb);
|
||||||
&new_rpb);
|
|
||||||
if (!(transaction->tra_flags & TRA_system))
|
if (!(transaction->tra_flags & TRA_system))
|
||||||
garbage_collect_idx(tdbb, &rpb, &new_rpb,
|
garbage_collect_idx(tdbb, &rpb, &new_rpb, NULL);
|
||||||
NULL);
|
|
||||||
rpb.rpb_record = dead_record;
|
rpb.rpb_record = dead_record;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3325,10 +3321,6 @@ static void garbage_collect(
|
|||||||
delete_(tdbb, rpb, prior_page, tdbb->tdbb_default);
|
delete_(tdbb, rpb, prior_page, tdbb->tdbb_default);
|
||||||
if (rpb->rpb_record) {
|
if (rpb->rpb_record) {
|
||||||
LLS_PUSH(rpb->rpb_record, &going);
|
LLS_PUSH(rpb->rpb_record, &going);
|
||||||
BLB_garbage_collect(tdbb, going, staying, prior_page, rpb->rpb_relation);
|
|
||||||
IDX_garbage_collect(tdbb, rpb, going, staying);
|
|
||||||
delete LLS_POP(&going);
|
|
||||||
going = NULL;
|
|
||||||
}
|
}
|
||||||
#ifdef SUPERSERVER
|
#ifdef SUPERSERVER
|
||||||
/* Don't monopolize the server while chasing long
|
/* Don't monopolize the server while chasing long
|
||||||
@ -3338,6 +3330,12 @@ static void garbage_collect(
|
|||||||
(void) JRD_reschedule(tdbb, 0, TRUE);
|
(void) JRD_reschedule(tdbb, 0, TRUE);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BLB_garbage_collect(tdbb, going, staying, prior_page, rpb->rpb_relation);
|
||||||
|
IDX_garbage_collect(tdbb, rpb, going, staying);
|
||||||
|
|
||||||
|
while (going)
|
||||||
|
delete LLS_POP(&going);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user