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::ArrowUtil Class Reference

Static Public Member Functions

static bool TryFetchChunk (ChunkScanState &scan_state, ClientProperties options, idx_t chunk_size, ArrowArray *out, idx_t &result_count, ErrorData &error, unordered_map< idx_t, const shared_ptr< ArrowTypeExtensionData > > extension_type_cast)
 
static idx_t FetchChunk (ChunkScanState &scan_state, ClientProperties options, idx_t chunk_size, ArrowArray *out, const unordered_map< idx_t, const shared_ptr< ArrowTypeExtensionData > > &extension_type_cast)
 

Static Private Member Functions

static bool TryFetchNext (QueryResult &result, unique_ptr< DataChunk > &out, ErrorData &error)
 

Member Function Documentation

◆ TryFetchChunk()

bool duckdb::ArrowUtil::TryFetchChunk ( ChunkScanState scan_state,
ClientProperties  options,
idx_t  chunk_size,
ArrowArray out,
idx_t result_count,
ErrorData error,
unordered_map< idx_t, const shared_ptr< ArrowTypeExtensionData > >  extension_type_cast 
)
static
45556 {
45557 count = 0;
45558 ArrowAppender appender(scan_state.Types(), batch_size, std::move(options), std::move(extension_type_cast));
45559 const auto remaining_tuples_in_chunk = scan_state.RemainingInChunk();
45560 if (remaining_tuples_in_chunk) {
45561 // We start by scanning the non-finished current chunk
45562 idx_t cur_consumption = MinValue(remaining_tuples_in_chunk, batch_size);
45563 count += cur_consumption;
45564 auto &current_chunk = scan_state.CurrentChunk();
45565 appender.Append(current_chunk, scan_state.CurrentOffset(), scan_state.CurrentOffset() + cur_consumption,
45566 current_chunk.size());
45567 scan_state.IncreaseOffset(cur_consumption);
45568 }
45569 while (count < batch_size) {
45570 if (!scan_state.LoadNextChunk(error)) {
45571 if (scan_state.HasError()) {
45572 error = scan_state.GetError();
45573 }
45574 return false;
45575 }
45576 if (scan_state.ChunkIsEmpty()) {
45577 // The scan was successful, but an empty chunk was returned
45578 break;
45579 }
45580 auto &current_chunk = scan_state.CurrentChunk();
45581 if (scan_state.Finished() || current_chunk.size() == 0) {
45582 break;
45583 }
45584 // The amount we still need to append into this chunk
45585 auto remaining = batch_size - count;
45586
45587 // The amount remaining, capped by the amount left in the current chunk
45588 auto to_append_to_batch = MinValue(remaining, scan_state.RemainingInChunk());
45589 appender.Append(current_chunk, 0, to_append_to_batch, current_chunk.size());
45590 count += to_append_to_batch;
45591 scan_state.IncreaseOffset(to_append_to_batch);
45592 }
45593 if (count > 0) {
45594 *out = appender.Finalize();
45595 }
45596 return true;
45597}
void error(int _code, const String &_err, const char *_func, const char *_file, int _line)

◆ FetchChunk()

idx_t duckdb::ArrowUtil::FetchChunk ( ChunkScanState scan_state,
ClientProperties  options,
idx_t  chunk_size,
ArrowArray out,
const unordered_map< idx_t, const shared_ptr< ArrowTypeExtensionData > > &  extension_type_cast 
)
static
45600 {
45601 ErrorData error;
45602 idx_t result_count;
45603 if (!TryFetchChunk(scan_state, std::move(options), chunk_size, out, result_count, error, extension_type_cast)) {
45604 error.Throw();
45605 }
45606 return result_count;
45607}

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