OmniSciDB  085a039ca4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ArrowResultSet.cpp File Reference
#include "QueryEngine/ArrowResultSet.h"
#include <arrow/api.h>
#include <arrow/io/memory.h>
#include <arrow/ipc/api.h>
#include "QueryEngine/Descriptors/RelAlgExecutionDescriptor.h"
#include "Shared/ArrowUtil.h"
+ Include dependency graph for ArrowResultSet.cpp:

Go to the source code of this file.

Namespaces

 anonymous_namespace{ArrowResultSet.cpp}
 

Functions

SQLTypeInfo anonymous_namespace{ArrowResultSet.cpp}::type_from_arrow_field (const arrow::Field &field)
 
std::unique_ptr< ArrowResultSetresult_set_arrow_loopback (const ExecutionResult &results)
 
std::unique_ptr< ArrowResultSetresult_set_arrow_loopback (const ExecutionResult *results, const std::shared_ptr< ResultSet > &rows, const ExecutorDeviceType device_type)
 
std::unique_ptr< ArrowResultSetresult_set_arrow_loopback (const ExecutionResult *results, const std::shared_ptr< ResultSet > &rows, const ExecutorDeviceType device_type, const size_t min_result_size_for_bulk_dictionary_fetch, const double max_dictionary_to_result_size_ratio_for_bulk_dictionary_fetch)
 

Function Documentation

std::unique_ptr<ArrowResultSet> result_set_arrow_loopback ( const ExecutionResult results)

Definition at line 328 of file ArrowResultSet.cpp.

References ExecutionResult::getRows(), and ExecutionResult::getTargetsMeta().

329  {
330  // NOTE(wesm): About memory ownership
331 
332  // After calling ReadRecordBatch, the buffers inside arrow::RecordBatch now
333  // share ownership of the memory in serialized_arrow_output.records (zero
334  // copy). Not necessary to retain these buffers. Same is true of any
335  // dictionaries contained in serialized_arrow_output.schema; the arrays
336  // reference that memory (zero copy).
337  return std::make_unique<ArrowResultSet>(results.getRows(), results.getTargetsMeta());
338 }
const std::vector< TargetMetaInfo > & getTargetsMeta() const
const std::shared_ptr< ResultSet > & getRows() const

+ Here is the call graph for this function:

std::unique_ptr<ArrowResultSet> result_set_arrow_loopback ( const ExecutionResult results,
const std::shared_ptr< ResultSet > &  rows,
const ExecutorDeviceType  device_type 
)

Definition at line 340 of file ArrowResultSet.cpp.

References ExecutionResult::getTargetsMeta().

343  {
344  return results ? std::make_unique<ArrowResultSet>(
345  rows, results->getTargetsMeta(), device_type)
346  : std::make_unique<ArrowResultSet>(rows, device_type);
347 }
const std::vector< TargetMetaInfo > & getTargetsMeta() const

+ Here is the call graph for this function:

std::unique_ptr<ArrowResultSet> result_set_arrow_loopback ( const ExecutionResult results,
const std::shared_ptr< ResultSet > &  rows,
const ExecutorDeviceType  device_type,
const size_t  min_result_size_for_bulk_dictionary_fetch,
const double  max_dictionary_to_result_size_ratio_for_bulk_dictionary_fetch 
)

Definition at line 349 of file ArrowResultSet.cpp.

References ExecutionResult::getTargetsMeta().

354  {
355  std::vector<TargetMetaInfo> dummy_targets_meta;
356  return results ? std::make_unique<ArrowResultSet>(
357  rows,
358  results->getTargetsMeta(),
359  device_type,
360  min_result_size_for_bulk_dictionary_fetch,
361  max_dictionary_to_result_size_ratio_for_bulk_dictionary_fetch)
362  : std::make_unique<ArrowResultSet>(
363  rows,
364  dummy_targets_meta,
365  device_type,
366  min_result_size_for_bulk_dictionary_fetch,
367  max_dictionary_to_result_size_ratio_for_bulk_dictionary_fetch);
368 }
const std::vector< TargetMetaInfo > & getTargetsMeta() const

+ Here is the call graph for this function: