MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / walk_data_page

Method walk_data_page

src/jrd/validation.cpp:1689–1923  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1687}
1688
1689Validation::RTN Validation::walk_data_page(jrd_rel* relation, ULONG page_number,
1690 ULONG sequence, UCHAR& pp_bits)
1691{
1692/**************************************
1693 *
1694 * w a l k _ d a t a _ p a g e
1695 *
1696 **************************************
1697 *
1698 * Functional description
1699 * Walk a single data page.
1700 *
1701 **************************************/
1702 Database* dbb = vdr_tdbb->getDatabase();
1703
1704 WIN window(DB_PAGE_SPACE, -1);
1705 window.win_flags = WIN_garbage_collector;
1706
1707 data_page* page = 0;
1708 fetch_page(true, page_number, pag_data, &window, &page);
1709
1710#ifdef DEBUG_VAL_VERBOSE
1711 if (VAL_debug_level)
1712 {
1713 fprintf(stdout,
1714 "walk_data_page: page %d rel %d seq %d count %d\n",
1715 page_number, page->dpg_relation, page->dpg_sequence,
1716 page->dpg_count);
1717 }
1718#endif
1719
1720 if (page->dpg_relation != relation->rel_id || page->dpg_sequence != sequence)
1721 {
1722 release_page(&window);
1723 return corrupt(VAL_DATA_PAGE_CONFUSED, relation, page_number, sequence);
1724 }
1725
1726 pp_bits = 0;
1727 const UCHAR dp_flags = page->dpg_header.pag_flags;
1728
1729 // Evaluate what flags should be set on PP
1730
1731 if (dp_flags & dpg_full)
1732 pp_bits |= ppg_dp_full;
1733
1734 if (dp_flags & dpg_large)
1735 pp_bits |= ppg_dp_large;
1736
1737 if (dp_flags & dpg_swept)
1738 pp_bits |= ppg_dp_swept;
1739
1740 if (dp_flags & dpg_secondary)
1741 pp_bits |= ppg_dp_secondary;
1742
1743 if (page->dpg_count == 0)
1744 pp_bits |= ppg_dp_empty;
1745
1746 // Walk records

Callers

nothing calls this directly

Calls 15

corruptFunction · 0.85
getTraNumFunction · 0.85
TRA_fetch_stateFunction · 0.85
print_rhdFunction · 0.85
CCH_MARKFunction · 0.85
VIO_getFunction · 0.85
IndexConditionClass · 0.85
getDatabaseMethod · 0.80
getSysTransactionMethod · 0.80
getDefaultPoolMethod · 0.45
incrementMethod · 0.45
getValueMethod · 0.45

Tested by

no test coverage detected