Class GroupByAndAggregate¶
-
class
GroupByAndAggregate
¶ Public Functions
Public Static Functions
-
size_t
shard_count_for_top_groups
(const RelAlgExecutionUnit &ra_exe_unit, const Catalog_Namespace::Catalog &catalog)¶
Private Functions
-
bool
gpuCanHandleOrderEntries
(const std::list<Analyzer::OrderEntry> &order_entries)¶
-
std::unique_ptr<QueryMemoryDescriptor>
initQueryMemoryDescriptor
(const bool allow_multifrag, const size_t max_groups_buffer_entry_count, const int8_t crt_min_byte_width, RenderInfo *render_info, const bool output_columnar_hint)¶
-
std::unique_ptr<QueryMemoryDescriptor>
initQueryMemoryDescriptorImpl
(const bool allow_multifrag, const size_t max_groups_buffer_entry_count, const int8_t crt_min_byte_width, const bool sort_on_gpu_hint, RenderInfo *render_info, const bool must_use_baseline_sort, const bool output_columnar_hint)¶
-
int64_t
getShardedTopBucket
(const ColRangeInfo &col_range_info, const size_t shard_count) const¶
-
llvm::Value *
codegenOutputSlot
(llvm::Value *groups_buffer, const QueryMemoryDescriptor &query_mem_desc, const CompilationOptions &co, DiamondCodegen &diamond_codegen)¶
-
std::tuple<llvm::Value *, llvm::Value *>
codegenGroupBy
(const QueryMemoryDescriptor &query_mem_desc, const CompilationOptions &co, DiamondCodegen &codegen)¶
-
llvm::Value *
codegenVarlenOutputBuffer
(const QueryMemoryDescriptor &query_mem_desc)¶
-
std::tuple<llvm::Value *, llvm::Value *>
codegenSingleColumnPerfectHash
(const QueryMemoryDescriptor &query_mem_desc, const CompilationOptions &co, llvm::Value *groups_buffer, llvm::Value *group_expr_lv_translated, llvm::Value *group_expr_lv_original, const int32_t row_size_quad)¶
-
std::tuple<llvm::Value *, llvm::Value *>
codegenMultiColumnPerfectHash
(llvm::Value *groups_buffer, llvm::Value *group_key, llvm::Value *key_size_lv, const QueryMemoryDescriptor &query_mem_desc, const int32_t row_size_quad)¶
-
llvm::Function *
codegenPerfectHashFunction
()¶
-
std::tuple<llvm::Value *, llvm::Value *>
codegenMultiColumnBaselineHash
(const CompilationOptions &co, llvm::Value *groups_buffer, llvm::Value *group_key, llvm::Value *key_size_lv, const QueryMemoryDescriptor &query_mem_desc, const size_t key_width, const int32_t row_size_quad)¶
-
ColRangeInfo
getColRangeInfo
()¶
-
llvm::Value *
convertNullIfAny
(const SQLTypeInfo &arg_type, const TargetInfo &agg_info, llvm::Value *target)¶
-
llvm::Value *
codegenWindowRowPointer
(const Analyzer::WindowFunction *window_func, const QueryMemoryDescriptor &query_mem_desc, const CompilationOptions &co, DiamondCodegen &diamond_codegen)¶
-
llvm::Value *
codegenAggColumnPtr
(llvm::Value *output_buffer_byte_stream, llvm::Value *out_row_idx, const std::tuple<llvm::Value *, llvm::Value *> &agg_out_ptr_w_idx, const QueryMemoryDescriptor &query_mem_desc, const size_t chosen_bytes, const size_t agg_out_off, const size_t target_idx)¶ : returns the pointer to where the aggregation should be stored.
-
void
codegenEstimator
(std::stack<llvm::BasicBlock *> &array_loops, DiamondCodegen &diamond_codegen, const QueryMemoryDescriptor &query_mem_desc, const CompilationOptions &co)¶
-
void
codegenCountDistinct
(const size_t target_idx, const Analyzer::Expr *target_expr, std::vector<llvm::Value *> &agg_args, const QueryMemoryDescriptor &query_mem_desc, const ExecutorDeviceType device_type)¶
-
void
codegenApproxQuantile
(const size_t target_idx, const Analyzer::Expr *target_expr, std::vector<llvm::Value *> &agg_args, const QueryMemoryDescriptor &query_mem_desc, const ExecutorDeviceType device_type)¶
-
llvm::Value *
getAdditionalLiteral
(const int32_t off)¶
-
std::vector<llvm::Value *>
codegenAggArg
(const Analyzer::Expr *target_expr, const CompilationOptions &co)¶
-
llvm::Value *
emitCall
(const std::string &fname, const std::vector<llvm::Value *> &args)¶
-
void
checkErrorCode
(llvm::Value *retCode)¶
-
bool
needsUnnestDoublePatch
(llvm::Value const *val_ptr, const std::string &agg_base_name, const bool threads_share_memory, const CompilationOptions &co) const¶
-
void
prependForceSync
()¶
Private Members
-
const RelAlgExecutionUnit &
ra_exe_unit_
¶
-
const std::vector<InputTableInfo> &
query_infos_
¶
-
std::shared_ptr<RowSetMemoryOwner>
row_set_mem_owner_
¶
-
bool
output_columnar_
¶
-
const ExecutorDeviceType
device_type_
¶
-
const std::optional<int64_t>
group_cardinality_estimation_
¶
Private Static Functions
-
int64_t
getBucketedCardinality
(const ColRangeInfo &col_range_info)¶
Friends
-
friend
GroupByAndAggregate::Executor
-
friend
GroupByAndAggregate::QueryMemoryDescriptor
-
friend
GroupByAndAggregate::CodeGenerator
-
friend
GroupByAndAggregate::ExecutionKernel
-
friend
GroupByAndAggregate::TargetExprCodegen
-
friend
GroupByAndAggregate::TargetExprCodegenBuilder
-
size_t