}
/*
- * Return a pointer to the in-metapage index entries.
+ * Copy the indicated number of index entries out of the metapage.
*/
-CBSegNo *
-cb_metapage_get_index_entry_pointer(CBMetapageData *meta)
+void
+cb_metapage_get_index_entries(CBMetapageData *meta, unsigned num_index_entries,
+ CBSegNo *index_entries)
{
- return meta->cbm_index;
+ Assert(num_index_entries <= cb_metapage_get_index_entries_used(meta));
+
+ memcpy(index_entries, meta->cbm_index,
+ num_index_entries * sizeof(CBSegNo));
}
/*
{
unsigned pageoffset;
unsigned num_index_entries;
- CBSegNo *index_entries;
+ CBSegNo index_entries[CB_METAPAGE_INDEX_ENTRIES];
CBPageNo index_page_start;
unsigned logical_pages_in_index_segments;
unsigned index_entries_in_index_segments;
num_index_entries = Min(CB_METAPAGE_INDEX_ENTRIES,
CB_INDEXPAGE_INDEX_ENTRIES - pageoffset);
- index_entries = cb_metapage_get_index_entry_pointer(meta);
+ cb_metapage_get_index_entries(meta, num_index_entries,
+ index_entries);
index_page_start = index_metapage_start -
pageoffset * cb->cb_pages_per_segment;
cb_relocate_index_entries(cb->cb_insert_relfilenode, cb->cb_fork,
extern void cb_metapage_remove_index_entries(CBMetapageData *meta,
unsigned count,
bool relocating);
-extern CBSegNo *cb_metapage_get_index_entry_pointer(CBMetapageData *meta);
+extern void cb_metapage_get_index_entries(CBMetapageData *meta,
+ unsigned num_index_entries,
+ CBSegNo *index_entries);
extern void cb_metapage_get_critical_info(CBMetapageData *meta,
uint16 *pages_per_segment,
uint64 *index_segments_moved);