Autonomy Software C++ 24.5.1
Welcome to the Autonomy Software repository of the Mars Rover Design Team (MRDT) at Missouri University of Science and Technology (Missouri S&T)! API reference contains the source code and other resources for the development of the autonomy software for our Mars rover. The Autonomy Software project aims to compete in the University Rover Challenge (URC) by demonstrating advanced autonomous capabilities and robust navigation algorithms.
Loading...
Searching...
No Matches
duckdb::PartitionedTupleData Class Reference
Collaboration diagram for duckdb::PartitionedTupleData:

Public Member Functions

shared_ptr< TupleDataLayoutGetLayoutPtr () const
 Get the layout of this PartitionedTupleData.
 
const TupleDataLayoutGetLayout () const
 
PartitionedTupleDataType GetType () const
 Get the partitioning type of this PartitionedTupleData.
 
void InitializeAppendState (PartitionedTupleDataAppendState &state, TupleDataPinProperties properties=TupleDataPinProperties::UNPIN_AFTER_DONE) const
 Initializes a local state for parallel partitioning that can be merged into this PartitionedTupleData.
 
void Append (PartitionedTupleDataAppendState &state, DataChunk &input, const SelectionVector &append_sel= *FlatVector::IncrementalSelectionVector(), const idx_t append_count=DConstants::INVALID_INDEX)
 Appends a DataChunk to this PartitionedTupleData.
 
void AppendUnified (PartitionedTupleDataAppendState &state, DataChunk &input, const SelectionVector &append_sel= *FlatVector::IncrementalSelectionVector(), const idx_t append_count=DConstants::INVALID_INDEX)
 
void Append (PartitionedTupleDataAppendState &state, TupleDataChunkState &input, const idx_t count)
 Appends rows to this PartitionedTupleData.
 
void FlushAppendState (PartitionedTupleDataAppendState &state)
 Flushes any remaining data in the append state into this PartitionedTupleData.
 
void Combine (PartitionedTupleData &other)
 Combine another PartitionedTupleData into this PartitionedTupleData.
 
void Reset ()
 Resets this PartitionedTupleData.
 
void Repartition (ClientContext &context, PartitionedTupleData &new_partitioned_data)
 Repartition this PartitionedTupleData into the new PartitionedTupleData.
 
void Unpin ()
 Unpins the data.
 
unsafe_vector< unique_ptr< TupleDataCollection > > & GetPartitions ()
 Get the partitions in this PartitionedTupleData.
 
unique_ptr< TupleDataCollectionGetUnpartitioned ()
 Get the data of this PartitionedTupleData as a single unpartitioned TupleDataCollection.
 
idx_t Count () const
 Get the count of this PartitionedTupleData.
 
idx_t SizeInBytes () const
 Get the size (in bytes) of this PartitionedTupleData.
 
idx_t PartitionCount () const
 Get the number of partitions of this PartitionedTupleData.
 
void GetSizesAndCounts (vector< idx_t > &partition_sizes, vector< idx_t > &partition_counts) const
 Get the count and size of the largest partition.
 
string ToString ()
 Converts this PartitionedTupleData to a string representation.
 
void Print ()
 Prints the string representation of this PartitionedTupleData.
 
template<class TARGET >
TARGETCast ()
 
template<class TARGET >
const TARGETCast () const
 

Protected Member Functions

virtual void InitializeAppendStateInternal (PartitionedTupleDataAppendState &state, TupleDataPinProperties properties) const
 Initialize a PartitionedTupleDataAppendState for this type of partitioning (optional)
 
virtual void ComputePartitionIndices (PartitionedTupleDataAppendState &state, DataChunk &input, const SelectionVector &append_sel, const idx_t append_count)
 
virtual void ComputePartitionIndices (Vector &row_locations, idx_t append_count, Vector &partition_indices, unique_ptr< Vector > &utility_vector) const
 Compute partition indices from rows (similar to function above)
 
virtual idx_t MaxPartitionIndex () const
 Maximum partition index (optional)
 
virtual void RepartitionFinalizeStates (PartitionedTupleData &old_partitioned_data, PartitionedTupleData &new_partitioned_data, PartitionedTupleDataAppendState &state, idx_t finished_partition_idx) const
 Finalize states while repartitioning - useful for unpinning blocks that are no longer needed (optional)
 
 PartitionedTupleData (PartitionedTupleDataType type, BufferManager &buffer_manager, shared_ptr< TupleDataLayout > &layout_ptr, MemoryTag tag)
 PartitionedTupleData can only be instantiated by derived classes.
 
 PartitionedTupleData (PartitionedTupleData &other)
 
bool UseFixedSizeMap () const
 Whether to use fixed size map or regular map.
 
void BuildPartitionSel (PartitionedTupleDataAppendState &state, const SelectionVector &append_sel, const idx_t append_count) const
 
void BuildBufferSpace (PartitionedTupleDataAppendState &state)
 Builds out the buffer space in the partitions.
 
template<bool fixed>
void BuildBufferSpace (PartitionedTupleDataAppendState &state)
 
unique_ptr< TupleDataCollectionCreatePartitionCollection ()
 Create a collection for a specific a partition.
 
void Verify () const
 Verify count/data size of this PartitionedTupleData.
 

Static Protected Member Functions

template<bool fixed>
static void BuildPartitionSel (PartitionedTupleDataAppendState &state, const SelectionVector &append_sel, const idx_t append_count, const idx_t max_partition_idx)
 

Protected Attributes

PartitionedTupleDataType type
 
BufferManagerbuffer_manager
 
shared_ptr< ArenaAllocatorstl_allocator
 
shared_ptr< TupleDataLayoutlayout_ptr
 
const TupleDataLayoutlayout
 
const MemoryTag tag
 
idx_t count
 
idx_t data_size
 
mutex lock
 
unsafe_vector< unique_ptr< TupleDataCollection > > partitions
 

Detailed Description

PartitionedTupleData represents partitioned row data, which serves as an interface for different types of partitioning, e.g., radix, hive

Member Function Documentation

◆ AppendUnified()

void duckdb::PartitionedTupleData::AppendUnified ( PartitionedTupleDataAppendState state,
DataChunk input,
const SelectionVector append_sel = *FlatVector::IncrementalSelectionVector(),
const idx_t  append_count = DConstants::INVALID_INDEX 
)

Appends a DataChunk to this PartitionedTupleData

  • ToUnifiedFormat has already been called

◆ InitializeAppendStateInternal()

virtual void duckdb::PartitionedTupleData::InitializeAppendStateInternal ( PartitionedTupleDataAppendState state,
TupleDataPinProperties  properties 
) const
inlineprotectedvirtual

Initialize a PartitionedTupleDataAppendState for this type of partitioning (optional)

57665 {
57666 }

◆ ComputePartitionIndices() [1/2]

virtual void duckdb::PartitionedTupleData::ComputePartitionIndices ( PartitionedTupleDataAppendState state,
DataChunk input,
const SelectionVector append_sel,
const idx_t  append_count 
)
inlineprotectedvirtual

Compute the partition indices for this type of partitioning for the input DataChunk and store them in the partition_data of the local state. If this type creates partitions on the fly (for, e.g., hive), this function is also in charge of creating new partitions and mapping the input data to a partition index

57671 {
57672 throw NotImplementedException("ComputePartitionIndices for this type of PartitionedTupleData");
57673 }

◆ ComputePartitionIndices() [2/2]

virtual void duckdb::PartitionedTupleData::ComputePartitionIndices ( Vector row_locations,
idx_t  append_count,
Vector partition_indices,
unique_ptr< Vector > &  utility_vector 
) const
inlineprotectedvirtual

Compute partition indices from rows (similar to function above)

57676 {
57677 throw NotImplementedException("ComputePartitionIndices for this type of PartitionedTupleData");
57678 }

◆ MaxPartitionIndex()

virtual idx_t duckdb::PartitionedTupleData::MaxPartitionIndex ( ) const
inlineprotectedvirtual

Maximum partition index (optional)

57680 {
57682 }
static constexpr const idx_t INVALID_INDEX
The value used to signify an invalid index entry.
Definition duckdb.hpp:1117

◆ RepartitionFinalizeStates()

virtual void duckdb::PartitionedTupleData::RepartitionFinalizeStates ( PartitionedTupleData old_partitioned_data,
PartitionedTupleData new_partitioned_data,
PartitionedTupleDataAppendState state,
idx_t  finished_partition_idx 
) const
inlineprotectedvirtual

Finalize states while repartitioning - useful for unpinning blocks that are no longer needed (optional)

57687 {
57688 }

◆ BuildPartitionSel()

void duckdb::PartitionedTupleData::BuildPartitionSel ( PartitionedTupleDataAppendState state,
const SelectionVector append_sel,
const idx_t  append_count 
) const
protected

Builds a selection vector in the Append state for the partitions

  • returns true if everything belongs to the same partition - stores partition index in single_partition_idx

◆ CreatePartitionCollection()

unique_ptr< TupleDataCollection > duckdb::PartitionedTupleData::CreatePartitionCollection ( )
inlineprotected

Create a collection for a specific a partition.

57710 {
57711 return make_uniq<TupleDataCollection>(buffer_manager, layout_ptr, tag, stl_allocator);
57712 }

◆ Cast() [1/2]

template<class TARGET >
TARGET & duckdb::PartitionedTupleData::Cast ( )
inline
57735 {
57736 DynamicCastCheck<TARGET>(this);
57737 return reinterpret_cast<TARGET &>(*this);
57738 }

◆ Cast() [2/2]

template<class TARGET >
const TARGET & duckdb::PartitionedTupleData::Cast ( ) const
inline
57740 {
57741 DynamicCastCheck<TARGET>(this);
57742 return reinterpret_cast<const TARGET &>(*this);
57743 }

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