Class RelAlgExecutor¶
-
class
RelAlgExecutor
: private StorageIOFacility¶ Public Types
-
using
TargetInfoList
= std::vector<TargetInfo>¶
Public Functions
-
size_t
getOuterFragmentCount
(const CompilationOptions &co, const ExecutionOptions &eo)¶
-
ExecutionResult
executeRelAlgQuery
(const CompilationOptions &co, const ExecutionOptions &eo, const bool just_explain_plan, RenderInfo *render_info)¶
-
ExecutionResult
executeRelAlgQueryWithFilterPushDown
(const RaExecutionSequence &seq, const CompilationOptions &co, const ExecutionOptions &eo, RenderInfo *render_info, const int64_t queue_time_ms)¶
-
void
prepareLeafExecution
(const AggregatedColRange &agg_col_range, const StringDictionaryGenerations &string_dictionary_generations, const TableGenerations &table_generations)¶
-
ExecutionResult
executeRelAlgSeq
(const RaExecutionSequence &seq, const CompilationOptions &co, const ExecutionOptions &eo, RenderInfo *render_info, const int64_t queue_time_ms, const bool with_existing_temp_tables = false)¶
-
ExecutionResult
executeRelAlgSubSeq
(const RaExecutionSequence &seq, const std::pair<size_t, size_t> interval, const CompilationOptions &co, const ExecutionOptions &eo, RenderInfo *render_info, const int64_t queue_time_ms)¶
-
QueryStepExecutionResult
executeRelAlgQuerySingleStep
(const RaExecutionSequence &seq, const size_t step_idx, const CompilationOptions &co, const ExecutionOptions &eo, RenderInfo *render_info)¶
-
void
addLeafResult
(const unsigned id, const AggregatedResult &result)¶
-
const RelAlgNode &
getRootRelAlgNode
() const¶
-
void
prepareForeignTables
()¶
-
std::shared_ptr<const RelAlgNode>
getRootRelAlgNodeShPtr
() const¶
-
std::pair<std::vector<unsigned>, std::unordered_map<unsigned, JoinQualsPerNestingLevel>>
getJoinInfo
(const RelAlgNode *root_node)¶
-
std::shared_ptr<RelAlgTranslator>
getRelAlgTranslator
(const RelAlgNode *root_node)¶
-
const std::vector<std::shared_ptr<RexSubQuery>> &
getSubqueries
() const¶
-
std::optional<RegisteredQueryHint>
getParsedQueryHint
(const RelAlgNode *node)¶
-
std::optional<std::unordered_map<size_t, std::unordered_map<unsigned, RegisteredQueryHint>>>
getParsedQueryHints
()¶
-
std::optional<RegisteredQueryHint>
getGlobalQueryHint
()¶
-
ExecutionResult
executeSimpleInsert
(const Analyzer::Query &insert_query)¶
-
AggregatedColRange
computeColRangesCache
()¶
-
StringDictionaryGenerations
computeStringDictionaryGenerations
()¶
-
TableGenerations
computeTableGenerations
()¶
-
void
cleanupPostExecution
()¶
-
void
executePostExecutionCallback
()¶
-
RaExecutionSequence
getRaExecutionSequence
(const RelAlgNode *root_node, Executor *executor)¶
-
void
prepareForeignTable
()¶
Public Static Functions
-
std::string
getErrorMessageFromCode
(const int32_t error_code)¶
Private Functions
-
void
initializeParallelismHints
()¶
-
ExecutionResult
executeRelAlgQueryNoRetry
(const CompilationOptions &co, const ExecutionOptions &eo, const bool just_explain_plan, RenderInfo *render_info)¶
-
void
executeRelAlgStep
(const RaExecutionSequence &seq, const size_t step_idx, const CompilationOptions &co, const ExecutionOptions &eo, RenderInfo *render_info, const int64_t queue_time_ms)¶
-
void
executeUpdate
(const RelAlgNode *node, const CompilationOptions &co, const ExecutionOptions &eo, const int64_t queue_time_ms)¶
-
void
executeDelete
(const RelAlgNode *node, const CompilationOptions &co, const ExecutionOptions &eo_in, const int64_t queue_time_ms)¶
-
ExecutionResult
executeCompound
(const RelCompound *compound, const CompilationOptions &co, const ExecutionOptions &eo, RenderInfo *render_info, const int64_t queue_time_ms)¶
-
ExecutionResult
executeAggregate
(const RelAggregate *aggregate, const CompilationOptions &co, const ExecutionOptions &eo, RenderInfo *render_info, const int64_t queue_time_ms)¶
-
ExecutionResult
executeProject
(const RelProject *project, const CompilationOptions &co, const ExecutionOptions &eo, RenderInfo *render_info, const int64_t queue_time_ms, const std::optional<size_t> previous_count)¶
-
ExecutionResult
executeTableFunction
(const RelTableFunction *table_func, const CompilationOptions &co_in, const ExecutionOptions &eo, const int64_t queue_time_ms)¶
-
void
computeWindow
(const RelAlgExecutionUnit &ra_exe_unit, const CompilationOptions &co, const ExecutionOptions &eo, ColumnCacheMap &column_cache_map, const int64_t queue_time_ms)¶
-
ExecutionResult
executeFilter
(const RelFilter *filter, const CompilationOptions &co, const ExecutionOptions &eo, RenderInfo *render_info, const int64_t queue_time_ms)¶
-
ExecutionResult
executeSort
(const RelSort *sort, const CompilationOptions &co, const ExecutionOptions &eo, RenderInfo *render_info, const int64_t queue_time_ms)¶
-
ExecutionResult
executeLogicalValues
(const RelLogicalValues *logical_values, const ExecutionOptions &eo)¶
-
ExecutionResult
executeModify
(const RelModify *modify, const ExecutionOptions &eo)¶
-
ExecutionResult
executeUnion
(const RelLogicalUnion *logical_union, const RaExecutionSequence &seq, const CompilationOptions &co, const ExecutionOptions &eo, RenderInfo *render_info, const int64_t queue_time_ms)¶
-
RelAlgExecutor::WorkUnit
createSortInputWorkUnit
(const RelSort *sort, std::list<Analyzer::OrderEntry> &order_entries, const ExecutionOptions &eo)¶
-
ExecutionResult
executeWorkUnit
(const WorkUnit &work_unit, const std::vector<TargetMetaInfo> &targets_meta, const bool is_agg, const CompilationOptions &co_in, const ExecutionOptions &eo_in, RenderInfo *render_info, const int64_t queue_time_ms, const std::optional<size_t> previous_count = std::nullopt)¶
-
size_t
getNDVEstimation
(const WorkUnit &work_unit, const int64_t range, const bool is_agg, const CompilationOptions &co, const ExecutionOptions &eo)¶
-
std::optional<size_t>
getFilteredCountAll
(const WorkUnit &work_unit, const bool is_agg, const CompilationOptions &co, const ExecutionOptions &eo)¶
Given a set of filter expressions for a table, it launches a new COUNT query to compute the number of passing rows, and then generates a set of statistics related to those filters. Later, these stats are used to decide whether a filter should be pushed down or not.
-
std::vector<PushedDownFilterInfo>
selectFiltersToBePushedDown
(const RelAlgExecutor::WorkUnit &work_unit, const CompilationOptions &co, const ExecutionOptions &eo)¶ Goes through all candidate filters and evaluate whether they pass the selectivity criteria or not.
-
ExecutionResult
handleOutOfMemoryRetry
(const RelAlgExecutor::WorkUnit &work_unit, const std::vector<TargetMetaInfo> &targets_meta, const bool is_agg, const CompilationOptions &co, const ExecutionOptions &eo, RenderInfo *render_info, const bool was_multifrag_kernel_launch, const int64_t queue_time_ms)¶
-
RelAlgExecutor::WorkUnit
createWorkUnit
(const RelAlgNode *node, const SortInfo &sort_info, const ExecutionOptions &eo)¶
-
RelAlgExecutor::WorkUnit
createCompoundWorkUnit
(const RelCompound *compound, const SortInfo &sort_info, const ExecutionOptions &eo)¶
-
RelAlgExecutor::WorkUnit
createAggregateWorkUnit
(const RelAggregate *aggregate, const SortInfo &sort_info, const bool just_explain)¶
-
RelAlgExecutor::WorkUnit
createProjectWorkUnit
(const RelProject *project, const SortInfo &sort_info, const ExecutionOptions &eo)¶
-
RelAlgExecutor::WorkUnit
createFilterWorkUnit
(const RelFilter *filter, const SortInfo &sort_info, const bool just_explain)¶
-
RelAlgExecutor::WorkUnit
createUnionWorkUnit
(const RelLogicalUnion *logical_union, const SortInfo &sort_info, const ExecutionOptions &eo)¶
-
RelAlgExecutor::TableFunctionWorkUnit
createTableFunctionWorkUnit
(const RelTableFunction *table_func, const bool just_explain, const bool is_gpu)¶
-
void
addTemporaryTable
(const int table_id, const ResultSetPtr &result)¶
-
void
eraseFromTemporaryTables
(const int table_id)¶
-
void
handleNop
(RaExecutionDesc &ed)¶
-
std::unordered_map<unsigned, JoinQualsPerNestingLevel> &
getLeftDeepJoinTreesInfo
()¶
-
JoinQualsPerNestingLevel
translateLeftDeepJoinFilter
(const RelLeftDeepInnerJoin *join, const std::vector<InputDescriptor> &input_descs, const std::unordered_map<const RelAlgNode *, int> &input_to_nest_level, const bool just_explain)¶
-
std::list<std::shared_ptr<Analyzer::Expr>>
makeJoinQuals
(const RexScalar *join_condition, const std::vector<JoinType> &join_types, const std::unordered_map<const RelAlgNode *, int> &input_to_nest_level, const bool just_explain) const¶
-
void
setHasStepForUnion
(bool flag)¶
-
bool
hasStepForUnion
() const¶
-
bool
canUseResultsetCache
(const ExecutionOptions &eo, RenderInfo *render_info) const¶
-
void
setupCaching
(const RelAlgNode *ra)¶
Private Members
-
std::unique_ptr<RelAlgDagBuilder>
query_dag_
¶
-
std::shared_ptr<const query_state::QueryState>
query_state_
¶
-
TemporaryTables
temporary_tables_
¶
-
time_t
now_
¶
-
std::unordered_map<unsigned, JoinQualsPerNestingLevel>
left_deep_join_info_
¶
-
std::unordered_map<unsigned, AggregatedResult>
leaf_results_
¶
-
int64_t
queue_time_ms_
¶
-
bool
has_step_for_union_
¶
-
std::unique_ptr<TransactionParameters>
dml_transaction_parameters_
¶
-
std::optional<std::function<void()>>
post_execution_callback_
¶
Private Static Functions
-
void
handlePersistentError
(const int32_t error_code)¶
Private Static Attributes
-
SpeculativeTopNBlacklist
speculative_topn_blacklist_
¶
Friends
-
friend
RelAlgExecutor::PendingExecutionClosure
-
struct
TableFunctionWorkUnit
¶
-
struct
WorkUnit
¶ Public Members
-
RelAlgExecutionUnit
exe_unit
¶
-
const RelAlgNode *
body
¶
-
const size_t
max_groups_buffer_entry_guess
¶
-
std::unique_ptr<QueryRewriter>
query_rewriter
¶
-
const std::vector<size_t>
input_permutation
¶
-
const std::vector<size_t>
left_deep_join_input_sizes
¶
-
RelAlgExecutionUnit
-
using