storage_manager/backend/statistics/
mod.rs

1use std::fs::File;
2use std::io::{self, Read, Seek, SeekFrom};
3
4use crate::page::PAGE_SIZE;
5
6/// Print total number of pages in a table using header page metadata
7pub fn print_table_page_count(db_name: &str, table_name: &str) -> io::Result<()> {
8    let table_path = format!("database/base/{}/{}.dat", db_name, table_name);
9    let mut file = File::open(&table_path)?;
10
11    // Read header page (page 0)
12    let mut header_page = vec![0u8; PAGE_SIZE];
13    file.seek(SeekFrom::Start(0))?;
14    file.read_exact(&mut header_page)?;
15
16    // First 4 bytes store total page count
17    let total_pages = u32::from_le_bytes(header_page[0..4].try_into().unwrap());
18
19    println!("Table '{}' has {} total pages.", table_name, total_pages);
20
21    Ok(())
22}