Class QueryMemoryDescriptor¶
-
class
QueryMemoryDescriptor¶ Public Functions
-
QueryMemoryDescriptor()¶
-
QueryMemoryDescriptor(const Executor *executor, const RelAlgExecutionUnit &ra_exe_unit, const std::vector<InputTableInfo> &query_infos, const bool allow_multifrag, const bool keyless_hash, const bool interleaved_bins_on_gpu, const int32_t idx_target_as_key, const ColRangeInfo &col_range_info, const ColSlotContext &col_slot_context, const std::vector<int8_t> &group_col_widths, const int8_t group_col_compact_width, const std::vector<int64_t> &target_groupby_indices, const size_t entry_count, const CountDistinctDescriptors count_distinct_descriptors, const bool sort_on_gpu_hint, const bool output_columnar, const bool render_output, const bool must_use_baseline_sort, const bool use_streaming_top_n)¶
-
QueryMemoryDescriptor(const Executor *executor, const size_t entry_count, const QueryDescriptionType query_desc_type, const bool is_table_function)¶
-
QueryMemoryDescriptor(const QueryDescriptionType query_desc_type, const int64_t min_val, const int64_t max_val, const bool has_nulls, const std::vector<int8_t> &group_col_widths)¶
-
QueryMemoryDescriptor(const TResultSetBufferDescriptor &thrift_query_memory_descriptor)¶
-
bool
operator==(const QueryMemoryDescriptor &other) const¶
-
bool
countDistinctDescriptorsLogicallyEmpty() const¶
-
QueryDescriptionType
getQueryDescriptionType() const¶
-
void
setQueryDescriptionType(const QueryDescriptionType val)¶
-
bool
isSingleColumnGroupByWithPerfectHash() const¶
-
bool
hasKeylessHash() const¶
-
void
setHasKeylessHash(const bool val)¶
-
bool
hasInterleavedBinsOnGpu() const¶
-
void
setHasInterleavedBinsOnGpu(const bool val)¶
-
int32_t
getTargetIdxForKey() const¶
-
void
setTargetIdxForKey(const int32_t val)¶
-
int8_t
groupColWidth(const size_t key_idx) const¶
-
size_t
getPrependedGroupColOffInBytes(const size_t group_idx) const¶
-
size_t
getPrependedGroupBufferSizeInBytes() const¶
-
const auto
groupColWidthsBegin() const¶
-
const auto
groupColWidthsEnd() const¶
-
void
clearGroupColWidths()¶
-
bool
isGroupBy() const¶
-
void
setGroupColCompactWidth(const int8_t val)¶
-
size_t
getColCount() const¶
-
size_t
getSlotCount() const¶
-
const int8_t
getPaddedSlotWidthBytes(const size_t slot_idx) const¶
-
const int8_t
getLogicalSlotWidthBytes(const size_t slot_idx) const¶
-
void
setPaddedSlotWidthBytes(const size_t slot_idx, const int8_t bytes)¶
-
const int8_t
getSlotIndexForSingleSlotCol(const size_t col_idx) const¶
-
size_t
getPaddedColWidthForRange(const size_t offset, const size_t range) const¶
-
void
useConsistentSlotWidthSize(const int8_t slot_width_size)¶
-
size_t
getRowWidth() const¶
-
int8_t
updateActualMinByteWidth(const int8_t actual_min_byte_width) const¶
-
void
addColSlotInfo(const std::vector<std::tuple<int8_t, int8_t>> &slots_for_col)¶
-
void
clearSlotInfo()¶
-
void
alignPaddedSlots()¶
-
int64_t
getTargetGroupbyIndex(const size_t target_idx) const¶
-
void
setAllTargetGroupbyIndices(std::vector<int64_t> group_by_indices)¶
-
size_t
targetGroupbyIndicesSize() const¶
-
size_t
targetGroupbyNegativeIndicesSize() const¶
-
void
clearTargetGroupbyIndices()¶
-
size_t
getEntryCount() const¶
-
void
setEntryCount(const size_t val)¶
-
int64_t
getMinVal() const¶
-
int64_t
getMaxVal() const¶
-
int64_t
getBucket() const¶
-
bool
hasNulls() const¶
-
const CountDistinctDescriptor &
getCountDistinctDescriptor(const size_t idx) const¶
-
size_t
getCountDistinctDescriptorsSize() const¶
-
bool
sortOnGpu() const¶
-
bool
canOutputColumnar() const¶
-
bool
didOutputColumnar() const¶
-
void
setOutputColumnar(const bool val)¶
-
bool
useStreamingTopN() const¶
-
bool
isLogicalSizedColumnsAllowed() const¶
-
bool
mustUseBaselineSort() const¶
-
bool
forceFourByteFloat() const¶
-
void
setForceFourByteFloat(const bool val)¶
-
size_t
getGroupbyColCount() const¶
-
size_t
getKeyCount() const¶
-
size_t
getBufferColSlotCount() const¶
-
size_t
getBufferSizeBytes(const RelAlgExecutionUnit &ra_exe_unit, const unsigned thread_count, const ExecutorDeviceType device_type) const¶
-
size_t
getBufferSizeBytes(const ExecutorDeviceType device_type) const¶
-
size_t
getBufferSizeBytes(const ExecutorDeviceType device_type, const size_t override_entry_count) const¶ Returns total amount of output buffer memory for each device (CPU/GPU)
Columnar: if projection: it returns index buffer + columnar buffer (all non-lazy columns) if table function: only the columnar buffer if group by: it returns the amount required for each group column (assumes 64-bit per group) + columnar buffer (all involved agg columns)
Row-wise: returns required memory per row multiplied by number of entries
-
const ColSlotContext &
getColSlotContext() const¶
-
bool
usesGetGroupValueFast() const¶
-
bool
lazyInitGroups(const ExecutorDeviceType device_type) const¶
-
bool
interleavedBins(const ExecutorDeviceType device_type) const¶
-
size_t
getColOffInBytes(const size_t col_idx) const¶
-
size_t
getColOffInBytesInNextBin(const size_t col_idx) const¶
-
size_t
getNextColOffInBytes(const int8_t *col_ptr, const size_t bin, const size_t col_idx) const¶
-
size_t
getNextColOffInBytesRowOnly(const int8_t *col_ptr, const size_t col_idx) const¶
-
size_t
getColOnlyOffInBytes(const size_t col_idx) const¶
-
size_t
getRowSize() const¶
-
size_t
getColsSize() const¶
-
size_t
getWarpCount() const¶
-
size_t
getCompactByteWidth() const¶
-
size_t
getEffectiveKeyWidth() const¶
-
bool
isWarpSyncRequired(const ExecutorDeviceType device_type) const¶
-
std::string
queryDescTypeToString() const¶
-
std::string
toString() const¶
-
std::string
reductionKey() const¶
-
bool
hasVarlenOutput() const¶
-
std::optional<size_t>
varlenOutputBufferElemSize() const¶
-
size_t
varlenOutputRowSizeToSlot(const size_t slot_idx) const¶
-
bool
slotIsVarlenOutput(const size_t slot_idx) const¶
Public Static Functions
-
static TResultSetBufferDescriptor
toThrift(const QueryMemoryDescriptor&)¶
-
std::unique_ptr<QueryMemoryDescriptor>
init(const Executor *executor, const RelAlgExecutionUnit &ra_exe_unit, const std::vector<InputTableInfo> &query_infos, const ColRangeInfo &col_range_info, const KeylessInfo &keyless_info, const bool allow_multifrag, const ExecutorDeviceType device_type, const int8_t crt_min_byte_width, const bool sort_on_gpu_hint, const size_t shard_count, const size_t max_groups_buffer_entry_count, RenderInfo *render_info, const CountDistinctDescriptors count_distinct_descriptors, const bool must_use_baseline_sort, const bool output_columnar_hint, const bool streaming_top_n_hint)¶
-
static bool
many_entries(const int64_t max_val, const int64_t min_val, const int64_t bucket)¶
-
static bool
countDescriptorsLogicallyEmpty(const CountDistinctDescriptors &count_distinct_descriptors)¶
-
int8_t
pick_target_compact_width(const RelAlgExecutionUnit &ra_exe_unit, const std::vector<InputTableInfo> &query_infos, const int8_t crt_min_byte_width)¶
Protected Functions
-
void
resetGroupColWidths(const std::vector<int8_t> &new_group_col_widths)¶
Private Functions
-
size_t
getTotalBytesOfColumnarBuffers() const¶ Returns the maximum total number of bytes (including required paddings) to store all non-lazy columns’ results for columnar cases.
-
size_t
getTotalBytesOfColumnarBuffers(const size_t num_entries_per_column) const¶ This is a helper function that returns the total number of bytes (including required paddings) to store all non-lazy columns’ results for columnar cases.
-
size_t
getTotalBytesOfColumnarProjections(const size_t projection_count) const¶ Returns the effective total number of bytes from columnar projections, which includes 1) total number of bytes used to store all non-lazy columns 2) total number of bytes used to store row indices (for lazy fetches, etc.)
NOTE: this function does not represent the buffer sizes dedicated for the results, but the required memory to fill all valid results into a compact new buffer (with no holes in it)
Private Members
-
bool
allow_multifrag_¶
-
QueryDescriptionType
query_desc_type_¶
-
bool
keyless_hash_¶
-
bool
interleaved_bins_on_gpu_¶
-
int32_t
idx_target_as_key_¶
-
std::vector<int8_t>
group_col_widths_¶
-
int8_t
group_col_compact_width_¶
-
std::vector<int64_t>
target_groupby_indices_¶
-
size_t
entry_count_¶
-
int64_t
min_val_¶
-
int64_t
max_val_¶
-
int64_t
bucket_¶
-
bool
has_nulls_¶
-
CountDistinctDescriptors
count_distinct_descriptors_¶
-
bool
sort_on_gpu_¶
-
bool
output_columnar_¶
-
bool
render_output_¶
-
bool
must_use_baseline_sort_¶
-
bool
is_table_function_¶
-
bool
use_streaming_top_n_¶
-
bool
force_4byte_float_¶
-
ColSlotContext
col_slot_context_¶
Friends
-
friend
QueryMemoryDescriptor::ResultSet
-
friend
QueryMemoryDescriptor::QueryExecutionContext
-