diff --git a/src/jrd/vio.cpp b/src/jrd/vio.cpp index 24e9e23c41..f63574977d 100644 --- a/src/jrd/vio.cpp +++ b/src/jrd/vio.cpp @@ -278,7 +278,8 @@ void VIO_backout(thread_db* tdbb, record_param* rpb, const jrd_tra* transaction) CCH_RELEASE(tdbb, &temp.getWindow(tdbb)); return; } - if (temp.rpb_flags & rpb_deleted) + if ((temp.rpb_flags & rpb_deleted) && + (!(temp.rpb_flags & rpb_delta))) CCH_RELEASE(tdbb, &temp.getWindow(tdbb)); else { temp.rpb_record = VIO_gc_record(tdbb, relation); @@ -680,7 +681,8 @@ bool VIO_chase_record_version(thread_db* tdbb, record_param* rpb, RecordSource* return false; } record_param temp = *rpb; - if (!(rpb->rpb_flags & rpb_deleted)) { + if ((!(rpb->rpb_flags & rpb_deleted)) + || (rpb->rpb_flags & rpb_delta)) { VIO_data(tdbb, rpb, pool); rpb->rpb_page = temp.rpb_page; rpb->rpb_line = temp.rpb_line;