A thread-safe cache of pages loaded from the page source.
std::vector< RPage > fPages
TODO(jblomer): should be an efficient index structure that allows.
RPagePool & operator=(const RPagePool &)=delete
RPageRef RegisterPage(RPage page)
Adds a new page to the pool.
RPageRef GetPage(ColumnId_t columnId, NTupleSize_t globalIndex)
Tries to find the page corresponding to column and index in the cache.
std::vector< std::int32_t > fReferences
RPagePool(const RPagePool &)=delete
void ReleasePage(const RPage &page)
Give back a page to the pool and decrease the reference counter.
void PreloadPage(RPage page)
Like RegisterPage() but the reference counter is initialized to 0.
Stores information about the cluster in which this page resides.
NTupleSize_t GetIndexOffset() const
A page is a slice of a column that is mapped into memory.
RClusterInfo fClusterInfo
std::uint32_t fMaxElements
The capacity of the page in number of elements.
std::uint32_t fElementSize