59 std::vector<const int8_t*>& col_buf_ptrs,
60 std::shared_ptr<RowSetMemoryOwner> row_set_mem_owner,
75 for (
size_t i = 0; i < num_out_columns; i++) {
88 if (std::this_thread::get_id() !=
thread_id_) {
89 throw std::runtime_error(
90 "TableFunctionManager instance accessed from an alien thread!");
114 for (
size_t i = 0; i < num_out_columns; i++) {
117 query_mem_desc.
addColSlotInfo({std::make_tuple(col_width, col_width)});
139 std::vector<std::vector<uint64_t>>{{0}},
143 if (output_num_rows_ != 0) {
144 auto group_by_buffers_ptr =
query_buffers->getGroupByBuffersPtr();
145 CHECK(group_by_buffers_ptr);
146 auto output_buffers_ptr =
reinterpret_cast<int8_t*
>(group_by_buffers_ptr[0]);
147 for (
size_t i = 0; i < num_out_columns; i++) {
152 col->ptr = output_buffers_ptr;
155 const size_t col_width = exe_unit_.target_exprs[i]->get_type_info().get_size();
157 align_to_int64(output_buffers_ptr + col_width * output_num_rows_);
196 CHECK(instance_ ==
nullptr);
198 CHECK(instance_ !=
nullptr);
201 instance_ = instance;
std::unique_ptr< QueryMemoryInitializer > query_buffers
void set_output_column(int32_t index, int8_t *ptr)
std::vector< const int8_t * > & col_buf_ptrs_
TableFunctionManager(const TableFunctionExecutionUnit &exe_unit, Executor *executor, std::vector< const int8_t * > &col_buf_ptrs, std::shared_ptr< RowSetMemoryOwner > row_set_mem_owner, bool is_singleton)
const TableFunctionExecutionUnit & exe_unit_
void check_thread_id() const
void set_error_message(const char *msg)
DEVICE int64_t size() const
void setOutputColumnar(const bool val)
std::vector< int8_t * > output_column_ptrs
std::vector< int64_t * > output_col_buf_ptrs
std::string error_message_
void allocate_output_buffers(int64_t output_num_rows)
std::mutex TableFunctionManager_singleton_mutex
std::string toString(const Executor::ExtModuleKinds &kind)
UserTableFunctionError(const std::string &message)
std::thread::id thread_id_
std::shared_ptr< RowSetMemoryOwner > row_set_mem_owner_
TableFunctionError(const std::string &message)
std::vector< Analyzer::Expr * > target_exprs
void addColSlotInfo(const std::vector< std::tuple< int8_t, int8_t >> &slots_for_col)
static TableFunctionManager * get_singleton()
const char * get_error_message() const
FORCE_INLINE HOST DEVICE T align_to_int64(T addr)
static TableFunctionManager *& get_singleton()
static void set_singleton(TableFunctionManager *instance)