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::ArrowAppendData Struct Reference
Collaboration diagram for duckdb::ArrowAppendData:

Public Member Functions

 ArrowAppendData (const ClientProperties &options_p)
 
ArrowBufferGetValidityBuffer ()
 Getters for the Buffers.
 
ArrowBufferGetMainBuffer ()
 
ArrowBufferGetAuxBuffer ()
 
ArrowBufferGetBufferSizeBuffer ()
 
void SetNull (uint8_t *validity_data, idx_t current_byte, uint8_t current_bit)
 
void AppendValidity (UnifiedVectorFormat &format, idx_t from, idx_t to)
 

Static Public Member Functions

static void GetBitPosition (idx_t row_idx, idx_t &current_byte, uint8_t &current_bit)
 
static void UnsetBit (uint8_t *data, idx_t current_byte, uint8_t current_bit)
 
static void NextBit (idx_t &current_byte, uint8_t &current_bit)
 
static void ResizeValidity (ArrowBuffer &buffer, idx_t row_count)
 

Public Attributes

idx_t row_count = 0
 
idx_t null_count = 0
 
initialize_t initialize = nullptr
 function pointers for construction
 
append_vector_t append_vector = nullptr
 
shared_ptr< ArrowTypeExtensionDataextension_data = nullptr
 Arrow Extension Type information.
 
finalize_t finalize = nullptr
 
vector< unique_ptr< ArrowAppendData > > child_data
 child data (if any)
 
unique_ptr< ArrowArrayarray
 the arrow array C API data, only set after Finalize
 
duckdb::array< const void *, 4 > buffers = {{nullptr, nullptr, nullptr, nullptr}}
 
vector< ArrowArray * > child_pointers
 
vector< ArrowArraychild_arrays
 Arrays so the children can be moved.
 
ArrowArray dictionary
 
ClientProperties options
 
idx_t offset = 0
 Offset used to keep data positions when producing a mix of inlined and not-inlined arrow string views.
 

Private Attributes

vector< ArrowBufferarrow_buffers
 The buffers of the arrow vector.
 

Constructor & Destructor Documentation

◆ ArrowAppendData()

duckdb::ArrowAppendData::ArrowAppendData ( const ClientProperties options_p)
inlineexplicit
32765 : options(options_p) {
32766 dictionary.release = nullptr;
32767 arrow_buffers.resize(3);
32768 }
void(* release)(struct ArrowArray *)
Release callback.
Definition duckdb.hpp:11299
vector< ArrowBuffer > arrow_buffers
The buffers of the arrow vector.
Definition duckdb.cpp:32849

Member Function Documentation

◆ GetValidityBuffer()

ArrowBuffer & duckdb::ArrowAppendData::GetValidityBuffer ( )
inline

Getters for the Buffers.

32772 {
32773 return arrow_buffers[0];
32774 }

◆ GetMainBuffer()

ArrowBuffer & duckdb::ArrowAppendData::GetMainBuffer ( )
inline
32776 {
32777 return arrow_buffers[1];
32778 }

◆ GetAuxBuffer()

ArrowBuffer & duckdb::ArrowAppendData::GetAuxBuffer ( )
inline
32780 {
32781 return arrow_buffers[2];
32782 }

◆ GetBufferSizeBuffer()

ArrowBuffer & duckdb::ArrowAppendData::GetBufferSizeBuffer ( )
inline

This is a special case, we resize it if necessary since it's a different size than set in the constructor

32784 {
32786 if (arrow_buffers.size() == 3) {
32787 arrow_buffers.resize(4);
32788 }
32789 return arrow_buffers[3];
32790 }

◆ GetBitPosition()

static void duckdb::ArrowAppendData::GetBitPosition ( idx_t  row_idx,
idx_t current_byte,
uint8_t current_bit 
)
inlinestatic
32793 {
32794 current_byte = row_idx / 8;
32795 current_bit = row_idx % 8;
32796 }

◆ UnsetBit()

static void duckdb::ArrowAppendData::UnsetBit ( uint8_t data,
idx_t  current_byte,
uint8_t  current_bit 
)
inlinestatic
32798 {
32799 data[current_byte] &= ~((uint64_t)1 << current_bit);
32800 }
::uint64_t uint64_t

◆ NextBit()

static void duckdb::ArrowAppendData::NextBit ( idx_t current_byte,
uint8_t current_bit 
)
inlinestatic
32802 {
32803 current_bit++;
32804 if (current_bit == 8) {
32805 current_byte++;
32806 current_bit = 0;
32807 }
32808 }

◆ ResizeValidity()

static void duckdb::ArrowAppendData::ResizeValidity ( ArrowBuffer buffer,
idx_t  row_count 
)
inlinestatic
32810 {
32811 auto byte_count = (row_count + 7) / 8;
32812 buffer.resize(byte_count, 0xFF);
32813 }

◆ SetNull()

void duckdb::ArrowAppendData::SetNull ( uint8_t validity_data,
idx_t  current_byte,
uint8_t  current_bit 
)
inline
32815 {
32816 UnsetBit(validity_data, current_byte, current_bit);
32817 null_count++;
32818 }

◆ AppendValidity()

void duckdb::ArrowAppendData::AppendValidity ( UnifiedVectorFormat format,
idx_t  from,
idx_t  to 
)
32857 {
32858 // resize the buffer, filling the validity buffer with all valid values
32859 idx_t size = to - from;
32860 ResizeValidity(GetValidityBuffer(), row_count + size);
32861 if (format.validity.AllValid()) {
32862 // if all values are valid we don't need to do anything else
32863 return;
32864 }
32865
32866 // otherwise we iterate through the validity mask
32867 auto validity_data = (uint8_t *)GetValidityBuffer().data();
32868 uint8_t current_bit;
32869 idx_t current_byte;
32870 GetBitPosition(row_count, current_byte, current_bit);
32871 for (idx_t i = from; i < to; i++) {
32872 auto source_idx = format.sel->get_index(i);
32873 // append the validity mask
32874 if (!format.validity.RowIsValid(source_idx)) {
32875 SetNull(validity_data, current_byte, current_bit);
32876 }
32877 NextBit(current_byte, current_bit);
32878 }
32879}
GOpaque< Size > size(const GMat &src)
::uint8_t uint8_t
ArrowBuffer & GetValidityBuffer()
Getters for the Buffers.
Definition duckdb.cpp:32772

Member Data Documentation

◆ buffers

duckdb::array<const void *, 4> duckdb::ArrowAppendData::buffers = {{nullptr, nullptr, nullptr, nullptr}}
32837{{nullptr, nullptr, nullptr, nullptr}};

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