Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ROOT::Experimental::Internal::RCluster Class Reference

An in-memory subset of the packed and compressed pages of a cluster.

Binds together several page maps that represent all the pages of certain columns of a cluster

Definition at line 152 of file RCluster.hxx.

Classes

struct  RKey
 The identifiers that specifies the content of a (partial) cluster. More...
 

Public Types

using ColumnSet_t = std::unordered_set< DescriptorId_t >
 

Public Member Functions

 RCluster (const RCluster &other)=delete
 
 RCluster (DescriptorId_t clusterId)
 
 RCluster (RCluster &&other)=default
 
 ~RCluster ()=default
 
void Adopt (RCluster &&other)
 Move the contents of other into this cluster; for on-disk pages that are present in both the cluster at hand and the "other" cluster, GetOnDiskPage() may return the page from either of the memory regions (left to the implementation).
 
void Adopt (std::unique_ptr< ROnDiskPageMap > pageMap)
 Move the given page map into this cluster; for on-disk pages that are present in both the cluster at hand and pageMap, GetOnDiskPage() may return the page from either of the memory regions (left to the implementation).
 
bool ContainsColumn (DescriptorId_t colId) const
 
const ColumnSet_tGetAvailPhysicalColumns () const
 
DescriptorId_t GetId () const
 
size_t GetNOnDiskPages () const
 
const ROnDiskPageGetOnDiskPage (const ROnDiskPage::Key &key) const
 
RClusteroperator= (const RCluster &other)=delete
 
RClusteroperator= (RCluster &&other)=default
 
void SetColumnAvailable (DescriptorId_t physicalColumnId)
 Marks the column as complete; must be done for all columns, even empty ones without associated pages, before the cluster is given from the page storage to the cluster pool.
 

Protected Attributes

ColumnSet_t fAvailPhysicalColumns
 Set of the (complete) columns represented by the RCluster.
 
DescriptorId_t fClusterId
 References the cluster identifier in the page source that created the cluster.
 
std::unordered_map< ROnDiskPage::Key, ROnDiskPagefOnDiskPages
 Lookup table for the on-disk pages.
 
std::vector< std::unique_ptr< ROnDiskPageMap > > fPageMaps
 Multiple page maps can be combined in a single RCluster.
 

#include <ROOT/RCluster.hxx>

Member Typedef Documentation

◆ ColumnSet_t

Definition at line 154 of file RCluster.hxx.

Constructor & Destructor Documentation

◆ RCluster() [1/3]

ROOT::Experimental::Internal::RCluster::RCluster ( DescriptorId_t  clusterId)
inlineexplicit

Definition at line 172 of file RCluster.hxx.

◆ RCluster() [2/3]

ROOT::Experimental::Internal::RCluster::RCluster ( const RCluster other)
delete

◆ RCluster() [3/3]

ROOT::Experimental::Internal::RCluster::RCluster ( RCluster &&  other)
default

◆ ~RCluster()

ROOT::Experimental::Internal::RCluster::~RCluster ( )
default

Member Function Documentation

◆ Adopt() [1/2]

void ROOT::Experimental::Internal::RCluster::Adopt ( RCluster &&  other)

Move the contents of other into this cluster; for on-disk pages that are present in both the cluster at hand and the "other" cluster, GetOnDiskPage() may return the page from either of the memory regions (left to the implementation).

Definition at line 48 of file RCluster.cxx.

◆ Adopt() [2/2]

void ROOT::Experimental::Internal::RCluster::Adopt ( std::unique_ptr< ROnDiskPageMap pageMap)

Move the given page map into this cluster; for on-disk pages that are present in both the cluster at hand and pageMap, GetOnDiskPage() may return the page from either of the memory regions (left to the implementation).

Their content is supposed to be the same. Page maps cannot be physically merged them because they have potentially used different allocation mechanisms (e.g. mmap vs. malloc).

Definition at line 40 of file RCluster.cxx.

◆ ContainsColumn()

bool ROOT::Experimental::Internal::RCluster::ContainsColumn ( DescriptorId_t  colId) const
inline

Definition at line 197 of file RCluster.hxx.

◆ GetAvailPhysicalColumns()

const ColumnSet_t & ROOT::Experimental::Internal::RCluster::GetAvailPhysicalColumns ( ) const
inline

Definition at line 196 of file RCluster.hxx.

◆ GetId()

DescriptorId_t ROOT::Experimental::Internal::RCluster::GetId ( ) const
inline

Definition at line 195 of file RCluster.hxx.

◆ GetNOnDiskPages()

size_t ROOT::Experimental::Internal::RCluster::GetNOnDiskPages ( ) const
inline

Definition at line 198 of file RCluster.hxx.

◆ GetOnDiskPage()

const ROOT::Experimental::Internal::ROnDiskPage * ROOT::Experimental::Internal::RCluster::GetOnDiskPage ( const ROnDiskPage::Key key) const

Definition at line 32 of file RCluster.cxx.

◆ operator=() [1/2]

RCluster & ROOT::Experimental::Internal::RCluster::operator= ( const RCluster other)
delete

◆ operator=() [2/2]

RCluster & ROOT::Experimental::Internal::RCluster::operator= ( RCluster &&  other)
default

◆ SetColumnAvailable()

void ROOT::Experimental::Internal::RCluster::SetColumnAvailable ( DescriptorId_t  physicalColumnId)

Marks the column as complete; must be done for all columns, even empty ones without associated pages, before the cluster is given from the page storage to the cluster pool.

Marking the available columns is typically the last step of RPageSouce::LoadCluster().

Definition at line 63 of file RCluster.cxx.

Member Data Documentation

◆ fAvailPhysicalColumns

ColumnSet_t ROOT::Experimental::Internal::RCluster::fAvailPhysicalColumns
protected

Set of the (complete) columns represented by the RCluster.

Definition at line 167 of file RCluster.hxx.

◆ fClusterId

DescriptorId_t ROOT::Experimental::Internal::RCluster::fClusterId
protected

References the cluster identifier in the page source that created the cluster.

Definition at line 163 of file RCluster.hxx.

◆ fOnDiskPages

std::unordered_map<ROnDiskPage::Key, ROnDiskPage> ROOT::Experimental::Internal::RCluster::fOnDiskPages
protected

Lookup table for the on-disk pages.

Definition at line 169 of file RCluster.hxx.

◆ fPageMaps

std::vector<std::unique_ptr<ROnDiskPageMap> > ROOT::Experimental::Internal::RCluster::fPageMaps
protected

Multiple page maps can be combined in a single RCluster.

Definition at line 165 of file RCluster.hxx.

Libraries for ROOT::Experimental::Internal::RCluster:

The documentation for this class was generated from the following files: