You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I investigated one corrupted database and find that it has very many orphan backversions but few in-use ones. That's because of
return corrupt(tdbb, VAL_REL_CHAIN_ORPHANS, relation, vdr_rel_backversion_counter - vdr_rel_chain_counter, vdr_rel_chain_counter);
Then I find that there are data pages with backversions but they are absent in pointer page. I found that it may happen if server crashed before flushing PP. Carefulwrite work correctly in this case.
Improvement can be to build map of visited datapages directly while walking relation and map of visited data pages by reference to backversions. In such way we can find real data pages and even return them into pointer page and page inventary page.
Submitted by: @romansimakov
I investigated one corrupted database and find that it has very many orphan backversions but few in-use ones. That's because of
return corrupt(tdbb, VAL_REL_CHAIN_ORPHANS, relation, vdr_rel_backversion_counter - vdr_rel_chain_counter, vdr_rel_chain_counter);
Then I find that there are data pages with backversions but they are absent in pointer page. I found that it may happen if server crashed before flushing PP. Carefulwrite work correctly in this case.
Improvement can be to build map of visited datapages directly while walking relation and map of visited data pages by reference to backversions. In such way we can find real data pages and even return them into pointer page and page inventary page.
Commits: ce8d458 e7171b3 FirebirdSQL/fbt-repository@7eb9d4c FirebirdSQL/fbt-repository@6ab14d6
The text was updated successfully, but these errors were encountered: