61 std::vector<const int8_t*>& col_buf_ptrs,
62 std::shared_ptr<RowSetMemoryOwner> row_set_mem_owner,
78 for (
size_t i = 0; i < num_out_columns; i++) {
92 if (std::this_thread::get_id() !=
thread_id_) {
93 throw std::runtime_error(
94 "TableFunctionManager instance accessed from an alien thread!");
108 int64_t output_array_values_total_number) {
133 for (
size_t i = 0; i < num_out_columns; i++) {
151 const size_t col_width = ti.get_size();
152 query_mem_desc.
addColSlotInfo({std::make_tuple(col_width, col_width)});
175 std::vector<std::vector<uint64_t>>{{0}},
179 if (output_num_rows_ != 0) {
180 auto group_by_buffers_ptr =
query_buffers->getGroupByBuffersPtr();
181 CHECK(group_by_buffers_ptr);
182 auto output_buffers_ptr =
reinterpret_cast<int8_t*
>(group_by_buffers_ptr[0]);
183 for (
size_t i = 0; i < num_out_columns; i++) {
188 col->ptr = output_buffers_ptr;
191 auto ti = exe_unit_.target_exprs[i]->get_type_info();
196 output_buffers_ptr =
align_to_int64(output_buffers_ptr + m.flatbufferSize());
198 const size_t col_width = ti.get_size();
200 align_to_int64(output_buffers_ptr + col_width * output_num_rows_);
217 const uint8_t* raw_bytes,
218 const size_t num_bytes,
225 const uint8_t*& raw_bytes,
233 const auto proxy =
executor_->getStringDictionaryProxy(
235 return proxy->getDictKey().db_id;
239 const auto proxy =
executor_->getStringDictionaryProxy(
241 return proxy->getDictKey().dict_id;
245 return reinterpret_cast<int8_t*
>(
249 inline std::string
getString(int32_t db_id, int32_t dict_id, int32_t string_id) {
252 return proxy->getString(string_id);
255 inline const char*
getCString(int32_t db_id, int32_t dict_id, int32_t string_id) {
258 auto [c_str, len] = proxy->getStringBytes(string_id);
264 const std::string& str) {
267 return proxy->getOrAddTransient(str);
294 CHECK(instance_ ==
nullptr);
296 CHECK(instance_ !=
nullptr);
299 instance_ = instance;
std::unique_ptr< QueryMemoryInitializer > query_buffers
void set_output_column(int32_t index, int8_t *ptr)
void addColSlotInfoFlatBuffer(const int64_t flatbuffer_size)
std::string getString(int32_t db_id, int32_t dict_id, int32_t string_id)
std::vector< const int8_t * > & col_buf_ptrs_
void set_output_array_values_total_number(int32_t index, int64_t output_array_values_total_number)
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 get_metadata(const char *key, const uint8_t *&raw_bytes, size_t &num_bytes, TableFunctionMetadataType &value_type) 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
Constants for Builtin SQL Types supported by HEAVY.AI.
int8_t * getStringDictionaryProxy(int32_t db_id, int32_t dict_id)
#define TRANSIENT_DICT_ID
std::vector< int64_t * > output_col_buf_ptrs
std::string error_message_
void allocate_output_buffers(int64_t output_num_rows)
const char * getCString(int32_t db_id, int32_t dict_id, int32_t string_id)
std::string toString(const ExecutorDeviceType &device_type)
std::mutex TableFunctionManager_singleton_mutex
void initializeVarlenArray(FlatBufferManager &m, int64_t items_count, int64_t max_nof_values, const SQLTypeInfo &ti)
UserTableFunctionError(const std::string &message)
std::thread::id thread_id_
void set_metadata(const char *key, const uint8_t *raw_bytes, const size_t num_bytes, const TableFunctionMetadataType value_type) const
std::shared_ptr< RowSetMemoryOwner > row_set_mem_owner_
std::vector< int64_t > output_array_values_total_number_
int64_t getVarlenArrayBufferSize(int64_t items_count, int64_t max_nof_values, const SQLTypeInfo &ti)
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 int32_t getOrAddTransient(int32_t db_id, int32_t dict_id, const std::string &str)
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)