WiscDB
Classes | Typedefs | Enumerations | Functions | Variables
wiscdb Namespace Reference

Classes

class  RIDKeyPair
 Structure to store a key-rid pair. It is used to pass the pair to functions that add to or make changes to the leaf node pages of the tree. Is templated for the key member. More...
class  PageKeyPair
 Structure to store a key page pair which is used to pass the key and page to functions that make any modifications to the non leaf pages of the tree. More...
struct  IndexMetaInfo
 The meta page, which holds metadata for Index file, is always first page of the btree index file and is cast to the following structure to store or retrieve information from it. Contains the relation name for which the index is created, the byte offset of the key value on which the index is made, the type of the key and the page no of the root page. Root page starts as page 2 but since a split can occur at the root the root page may get moved up and get a new page no. More...
struct  NonLeafNodeInt
 Structure for all non-leaf nodes when the key is of INTEGER type. More...
struct  NonLeafNodeDouble
 Structure for all non-leaf nodes when the key is of DOUBLE type. More...
struct  NonLeafNodeString
 Structure for all non-leaf nodes when the key is of STRING type. More...
struct  LeafNodeInt
 Structure for all leaf nodes when the key is of INTEGER type. More...
struct  LeafNodeDouble
 Structure for all leaf nodes when the key is of DOUBLE type. More...
struct  LeafNodeString
 Structure for all leaf nodes when the key is of STRING type. More...
class  BTreeIndex
 BTreeIndex class. It implements a B+ Tree index on a single attribute of a relation. This index supports only one scan at a time. More...
class  BadBufferException
 An exception that is thrown when a buffer is found whose valid is false but other variables in BufDesc are assigned valid values. More...
class  BadIndexInfoException
 An exception that is thrown when a file operation is requested for a filename that doesn't exist. More...
class  BadOpcodesException
 An exception that is thrown when some unexpected error occurs in the hash table. More...
class  BadScanParamException
 An exception that is thrown when some unexpected error occurs in the hash table. More...
class  BadScanrangeException
 An exception that is thrown when some unexpected error occurs in the hash table. More...
class  BufferExceededException
 An exception that is thrown when buffer capacity is exceeded. More...
class  EndOfFileException
 An exception that is thrown when some unexpected error occurs in the hash table. More...
class  FileExistsException
 An exception that is thrown when a file creation is requested for a filename that already exists. More...
class  FileNotFoundException
 An exception that is thrown when a file operation is requested for a filename that doesn't exist. More...
class  FileOpenException
 An exception that is thrown when a file deletion is requested for a filename that's currently open. More...
class  HashAlreadyPresentException
 An exception that is thrown when a new entry to be inserted in the hash table is already present in it. More...
class  HashNotFoundException
 An exception that is thrown when an entry being looked up in the hash table is not present in it. More...
class  HashTableException
 An exception that is thrown when some unexpected error occurs in the hash table. More...
class  IndexScanCompletedException
 An exception that is thrown when a file operation is requested for a filename that doesn't exist. More...
class  InsufficientSpaceException
 An exception that is thrown when a record is attempted to be inserted into a page that doesn't have space for it. More...
class  InvalidPageException
 An exception that is thrown when an attempt is made to access an invalid page in a file. More...
class  InvalidRecordException
 An exception that is thrown when a record is requested from a page that has a bad record ID. More...
class  InvalidSlotException
 An exception that is thrown when a slot that doesn't have data is requested from a page. More...
class  NoSuchKeyFoundException
 An exception that is thrown when a file operation is requested for a filename that doesn't exist. More...
class  PageNotPinnedException
 An exception that is thrown when a page which is expected to be pinned in the buffer pool is found to be not pinned. More...
class  PagePinnedException
 An exception that is thrown when a page which is not expected to be pinned in the buffer pool is found to be pinned. More...
class  ScanNotInitializedException
 An exception that is thrown when a file operation is requested for a filename that doesn't exist. More...
class  SlotInUseException
 An exception that is thrown when a record is attempted to be inserted into a slot that is already in use. More...
class  WiscDbException
 Base class for all WiscDB-specific exceptions. More...
class  FileScanner
 This class is used to sequentially scan records in a relation. More...
class  Frame
 Maintains information about one buffer pool frame. One frame corresponds to one page on disk. More...
struct  BufferStats
 Class to maintain statistics of buffer usage. More...
class  BufferManager
 The central class which manages the buffer pool including frame allocation and deallocation to pages in the file. More...
struct  HashItem
 Declarations for buffer pool hash table item. More...
class  BufferHashTable
 Hash table class to keep track of pages in the buffer pool. More...
struct  FileHeader
 Header metadata for files on disk which contain pages. More...
class  File
 Class which represents a file in the filesystem containing database pages. More...
class  PageFile
class  RawFile
class  FileIterator
 Iterator for iterating over the pages in a file. More...
struct  PageHeader
 Header metadata in a page. More...
struct  PageSlot
 Slot metadata that tracks where a record is in the data space. More...
class  Page
 Class which represents a fixed-size database page containing records. More...
class  PageIterator
 Iterator for iterating over the records in a page. More...
struct  RecordId
 Identifier for a record in a page. More...

Typedefs

typedef std::uint32_t PageId
 Identifier for a page in a file.
typedef std::uint16_t SlotId
 Identifier for a slot in a page.
typedef std::uint32_t FrameId
 Identifier for a frame in buffer pool.

Enumerations

enum  Datatype { INTEGER = 0, DOUBLE = 1, STRING = 2 }
 Datatype enumeration type.
enum  Operator { LT, LTE, GTE, GT }
 Scan operations enumeration. Passed to BTreeIndex::startScan() method.

Functions

template<class T >
bool operator< (const RIDKeyPair< T > &r1, const RIDKeyPair< T > &r2)
 Overloaded operator to compare the key values of two rid-key pairs and if they are the same compares to see if the first pair has a smaller rid.pageNo value.
 static_assert (Page::SIZE > sizeof(PageHeader),"Page size must be large enough to hold header and data.")
 static_assert (Page::DATA_SIZE > 0,"Page must have some space to hold data.")

Variables

const int STRINGSIZE = 10
 Size of String key.
const int INTARRAYLEAFSIZE = ( Page::SIZE - sizeof( PageId ) ) / ( sizeof( int ) + sizeof( RecordId ) )
 Number of key slots in B+Tree leaf for INTEGER key.
const int DOUBLEARRAYLEAFSIZE = ( Page::SIZE - sizeof( PageId ) ) / ( sizeof( double ) + sizeof( RecordId ) )
 Number of key slots in B+Tree leaf for DOUBLE key.
const int STRINGARRAYLEAFSIZE = ( Page::SIZE - sizeof( PageId ) ) / ( 10 * sizeof(char) + sizeof( RecordId ) )
 Number of key slots in B+Tree leaf for STRING key.
const int INTARRAYNONLEAFSIZE = ( Page::SIZE - sizeof( int ) - sizeof( PageId ) ) / ( sizeof( int ) + sizeof( PageId ) )
 Number of key slots in B+Tree non-leaf for INTEGER key.
const int DOUBLEARRAYNONLEAFSIZE = (( Page::SIZE - sizeof( int ) - sizeof( PageId ) ) / ( sizeof( double ) + sizeof( PageId ) )) - 1
 Number of key slots in B+Tree leaf for DOUBLE key.
const int STRINGARRAYNONLEAFSIZE = ( Page::SIZE - sizeof( int ) - sizeof( PageId ) ) / ( 10 * sizeof(char) + sizeof( PageId ) )
 Number of key slots in B+Tree leaf for STRING key.

Detailed Description

Author:
See Contributors.txt for code contributors and overview of WiscDB.

LICENSE

Copyright (c) 2012 Database Group, Computer Sciences Department, University of Wisconsin-Madison.

Author:
TODO: Add your names here

LICENSE

Copyright (c) 2012 Database Group, Computer Sciences Department, University of Wisconsin-Madison.

LICENSE

Copyright (c) 2012 Database Group, Computer Sciences Department, University of Wisconsin-Madison.

 All Classes Namespaces Functions Variables Typedefs Enumerations Friends