Skip to content

Commit

Permalink
Fixed CORE-3137: Partial rollback is possible for a selectable proced…
Browse files Browse the repository at this point in the history
…ure modifying data.
  • Loading branch information
dyemanov committed Sep 18, 2010
1 parent 6afe4b4 commit b6c0bee
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions src/jrd/vio.cpp
Expand Up @@ -2128,19 +2128,21 @@ void VIO_merge_proc_sav_points(thread_db* tdbb,
return;
}

// one by one go on putting all savepoints in the sav_point_list on
// top of transaction save points and call VIO_verb_cleanup()
// Merge all savepoints in the sav_point_list at the top
// of transaction save points and call VIO_verb_cleanup()

for (Savepoint* sav_point = *sav_point_list; sav_point;
sav_point = sav_point->sav_next)
Savepoint* const org_save_point = transaction->tra_save_point;
transaction->tra_save_point = *sav_point_list;

for (Savepoint* sav_point = *sav_point_list; sav_point; sav_point = sav_point->sav_next)
{
Savepoint* const sav_next = sav_point->sav_next;
const SLONG sav_number = sav_point->sav_number;

// add it to the front

sav_point->sav_next = transaction->tra_save_point;
transaction->tra_save_point = sav_point;
if (!sav_point->sav_next)
{
sav_point->sav_next = org_save_point;
}

VIO_verb_cleanup(tdbb, transaction);

Expand All @@ -2155,6 +2157,8 @@ void VIO_merge_proc_sav_points(thread_db* tdbb,
*sav_point_list = sav_point;
sav_point_list = &sav_point->sav_next;
}

fb_assert(org_save_point == transaction->tra_save_point);
}


Expand Down

0 comments on commit b6c0bee

Please sign in to comment.