WiscDB
 All Classes Functions Variables Friends
Public Member Functions | Static Public Attributes | Friends
wiscdb::Page Class Reference

Class which represents a fixed-size database page containing records. More...

#include <page.h>

List of all members.

Public Member Functions

 Page ()
RecordId insertRecord (const std::string &record_data)
std::string getRecord (const RecordId &record_id) const
void updateRecord (const RecordId &record_id, const std::string &record_data)
void deleteRecord (const RecordId &record_id)
bool hasSpaceForRecord (const std::string &record_data) const
std::uint16_t getFreeSpace () const
PageId page_number () const
PageId next_page_number () const
PageIterator begin ()
PageIterator end ()

Static Public Attributes

static const std::size_t SIZE = 8192
static const std::size_t DATA_SIZE = SIZE - sizeof(PageHeader)
static const PageId INVALID_NUMBER = 0
static const SlotId INVALID_SLOT = 0

Friends

class File
class PageIterator
class PageTest
class BufferTest

Detailed Description

Class which represents a fixed-size database page containing records.

A page is a fixed-size unit of data storage. Each page holds zero or more records, which consist of arbitrary binary data. Records are placed into slots and identified by a RecordId. Although a record's actual contents may be moved on the page, accessing a record by its slot is consistent.

Warning:
This class is not threadsafe.

Definition at line 107 of file page.h.


Constructor & Destructor Documentation

Constructs a new, uninitialized page.


Member Function Documentation

Returns an iterator at the first record in the page.

Returns:
Iterator at first record of page.
void wiscdb::Page::deleteRecord ( const RecordId record_id)

Deletes the record with the given ID. Page is compacted upon delete to ensure that data of all records is contiguous. Slot array is compacted if the slot deleted is at the end of the slot array.

Parameters:
record_idID of the record to delete.

Returns an iterator representing the record after the last record in the page. This iterator should not be dereferenced.

Returns:
Iterator representing record after the last record in the page.
std::uint16_t wiscdb::Page::getFreeSpace ( ) const [inline]

Returns this page's free space in bytes.

Returns:
Free space in bytes.

Definition at line 185 of file page.h.

std::string wiscdb::Page::getRecord ( const RecordId record_id) const

Returns the record with the given ID. Returned data is a copy of what is stored on the page; use updateRecord to change it.

See also:
updateRecord
Parameters:
record_idID of the record to return.
Returns:
The record.
bool wiscdb::Page::hasSpaceForRecord ( const std::string &  record_data) const

Returns true if the page has enough free space to hold the given data.

Parameters:
record_dataBytes that compose the record.
Returns:
Whether the page can hold the data.
RecordId wiscdb::Page::insertRecord ( const std::string &  record_data)

Inserts a new record into the page.

Parameters:
record_dataBytes that compose the record.
Returns:
ID of the newly inserted record.
PageId wiscdb::Page::next_page_number ( ) const [inline]

Returns the number of the next used page this page in its file.

Returns:
Page number of next used page in file.

Definition at line 200 of file page.h.

PageId wiscdb::Page::page_number ( ) const [inline]

Returns this page's number in its file.

Returns:
Page number.

Definition at line 193 of file page.h.

void wiscdb::Page::updateRecord ( const RecordId record_id,
const std::string &  record_data 
)

Updates the record with the given ID, replacing its data with a new version. This is equivalent to deleting the old record and inserting a new one, with the exception that the record ID will not change.

Parameters:
record_idID of record to update.
record_dataUpdated bytes that compose the record.

Member Data Documentation

const std::size_t wiscdb::Page::DATA_SIZE = SIZE - sizeof(PageHeader) [static]

Size of page free space area in bytes.

Definition at line 118 of file page.h.

const PageId wiscdb::Page::INVALID_NUMBER = 0 [static]

Number of page indicating that it's invalid.

Definition at line 123 of file page.h.

const SlotId wiscdb::Page::INVALID_SLOT = 0 [static]

Number of slot indicating that it's invalid.

Definition at line 128 of file page.h.

const std::size_t wiscdb::Page::SIZE = 8192 [static]

Page size in bytes. If this is changed, database files created with a different page size value will be unreadable by the resulting binaries.

Definition at line 113 of file page.h.


The documentation for this class was generated from the following file:
 All Classes Functions Variables Friends