Class RowSetMemoryOwner

class RowSetMemoryOwner : public SimpleAllocator, private noncopyable

Handles allocations and outputs for all stages in a query, either explicitly or via a managed allocator object

Public Types

enum StringTranslationType

Values:

SOURCE_INTERSECTION
SOURCE_UNION

Public Functions

RowSetMemoryOwner(const size_t arena_block_size, const size_t num_kernel_threads = 0)
int8_t *allocate(const size_t num_bytes, const size_t thread_idx = 0)
int8_t *allocateCountDistinctBuffer(const size_t num_bytes, const size_t thread_idx = 0)
void addCountDistinctBuffer(int8_t *count_distinct_buffer, const size_t bytes, const bool physical_buffer)
void addCountDistinctSet(CountDistinctSet *count_distinct_set)
void addGroupByBuffer(int64_t *group_by_buffer)
void addVarlenBuffer(void *varlen_buffer)
void addVarlenInputBuffer(Data_Namespace::AbstractBuffer *buffer)

Adds a GPU buffer containing a variable length input column. Variable length inputs on GPU are referenced in output projected targets and should not be freed until the query results have been resolved.

std::string *addString(const std::string &str)
std::vector<int64_t> *addArray(const std::vector<int64_t> &arr)
StringDictionaryProxy *addStringDict(std::shared_ptr<StringDictionary> str_dict, const int dict_id, const int64_t generation)
const StringDictionaryProxy::IdMap *addStringProxyIntersectionTranslationMap(const StringDictionaryProxy *source_proxy, const StringDictionaryProxy *dest_proxy)
const StringDictionaryProxy::IdMap *addStringProxyUnionTranslationMap(const StringDictionaryProxy *source_proxy, StringDictionaryProxy *dest_proxy)
StringDictionaryProxy *getStringDictProxy(const int dict_id) const
StringDictionaryProxy *getOrAddStringDictProxy(const int dict_id_in, const bool with_generation, const Catalog_Namespace::Catalog *catalog)
void addLiteralStringDictProxy(std::shared_ptr<StringDictionaryProxy> lit_str_dict_proxy)
StringDictionaryProxy *getLiteralStringDictProxy() const
const StringDictionaryProxy::IdMap *getOrAddStringProxyTranslationMap(const int source_dict_id_in, const int dest_dict_id_in, const bool with_generation, const StringTranslationType translation_map_type, const Catalog_Namespace::Catalog *catalog)
void addColBuffer(const void *col_buffer)
~RowSetMemoryOwner()
std::shared_ptr<RowSetMemoryOwner> cloneStrDictDataOnly()
void setDictionaryGenerations(StringDictionaryGenerations generations)
StringDictionaryGenerations &getStringDictionaryGenerations()
quantile::TDigest *nullTDigest(double const q)

Private Members

std::vector<CountDistinctBitmapBuffer> count_distinct_bitmaps_
std::vector<CountDistinctSet *> count_distinct_sets_
std::vector<int64_t *> group_by_buffers_
std::vector<void *> varlen_buffers_
std::list<std::string> strings_
std::list<std::vector<int64_t>> arrays_
std::unordered_map<int, std::shared_ptr<StringDictionaryProxy>> str_dict_proxy_owned_
std::map<std::pair<int, int>, StringDictionaryProxy::IdMap> str_proxy_intersection_translation_maps_owned_
std::map<std::pair<int, int>, StringDictionaryProxy::IdMap> str_proxy_union_translation_maps_owned_
std::shared_ptr<StringDictionaryProxy> lit_str_dict_proxy_
StringDictionaryGenerations string_dictionary_generations_
std::vector<void *> col_buffers_
std::vector<Data_Namespace::AbstractBuffer *> varlen_input_buffers_
std::vector<std::unique_ptr<quantile::TDigest>> t_digests_
size_t arena_block_size_
std::vector<std::unique_ptr<Arena>> allocators_
std::mutex state_mutex_

Friends

friend RowSetMemoryOwner::ResultSet
friend RowSetMemoryOwner::QueryExecutionContext
struct CountDistinctBitmapBuffer

Public Members

int8_t *ptr
const size_t size
const bool physical_buffer