OmniSciDB
c1a53651b2
|
#include <RelAlgExecutionUnit.h>
Public Member Functions | |
RelAlgExecutionUnit | createNdvExecutionUnit (const int64_t range) const |
RelAlgExecutionUnit | createCountAllExecutionUnit (Analyzer::Expr *replacement_target) const |
Public Attributes | |
std::vector< InputDescriptor > | input_descs |
std::list< std::shared_ptr < const InputColDescriptor > > | input_col_descs |
std::list< std::shared_ptr < Analyzer::Expr > > | simple_quals |
std::list< std::shared_ptr < Analyzer::Expr > > | quals |
const JoinQualsPerNestingLevel | join_quals |
const std::list < std::shared_ptr < Analyzer::Expr > > | groupby_exprs |
std::vector< Analyzer::Expr * > | target_exprs |
std::unordered_map< size_t, SQLTypeInfo > | target_exprs_original_type_infos |
const std::shared_ptr < Analyzer::Estimator > | estimator |
const SortInfo | sort_info |
size_t | scan_limit |
RegisteredQueryHint | query_hint |
QueryPlanHash | query_plan_dag_hash {EMPTY_HASHED_PLAN_DAG_KEY} |
HashTableBuildDagMap | hash_table_build_plan_dag {} |
TableIdToNodeMap | table_id_to_node_map {} |
bool | use_bump_allocator {false} |
const std::optional< bool > | union_all |
std::shared_ptr< const query_state::QueryState > | query_state |
std::vector< Analyzer::Expr * > | target_exprs_union |
Definition at line 131 of file RelAlgExecutionUnit.h.
RelAlgExecutionUnit RelAlgExecutionUnit::createCountAllExecutionUnit | ( | Analyzer::Expr * | replacement_target | ) | const |
Definition at line 117 of file CardinalityEstimator.cpp.
References Default, hash_table_build_plan_dag, input_col_descs, input_descs, join_quals, quals, query_hint, query_plan_dag_hash, query_state, simple_quals, strip_join_covered_filter_quals(), table_id_to_node_map, and union_all.
Referenced by RelAlgExecutor::getFilteredCountAll().
RelAlgExecutionUnit RelAlgExecutionUnit::createNdvExecutionUnit | ( | const int64_t | range | ) | const |
Definition at line 91 of file CardinalityEstimator.cpp.
References Default, g_large_ndv_threshold, groupby_exprs, hash_table_build_plan_dag, input_col_descs, input_descs, join_quals, quals, query_hint, query_plan_dag_hash, query_state, simple_quals, table_id_to_node_map, and union_all.
Referenced by RelAlgExecutor::getNDVEstimation().
const std::shared_ptr<Analyzer::Estimator> RelAlgExecutionUnit::estimator |
Definition at line 140 of file RelAlgExecutionUnit.h.
Referenced by GroupByAndAggregate::codegen(), GroupByAndAggregate::codegenEstimator(), Executor::executePlanWithoutGroupBy(), QueryExecutionContext::launchCpuCode(), QueryExecutionContext::launchGpuCode(), Executor::launchKernels(), operator<<(), QueryMemoryInitializer::QueryMemoryInitializer(), ra_exec_unit_desc_for_caching(), reduce_estimator_results(), Executor::reduceMultiDeviceResults(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteOverlapsJoin(), and ExecutionKernel::runImpl().
const std::list<std::shared_ptr<Analyzer::Expr> > RelAlgExecutionUnit::groupby_exprs |
Definition at line 137 of file RelAlgExecutionUnit.h.
Referenced by Executor::addTransientStringLiterals(), anonymous_namespace{Execute.cpp}::checkWorkUnitWatchdog(), GroupByAndAggregate::codegen(), GroupByAndAggregate::codegenGroupBy(), GroupByAndAggregate::codegenOutputSlot(), GroupByAndAggregate::codegenPerfectHashFunction(), anonymous_namespace{RelAlgExecutor.cpp}::compute_output_buffer_size(), createNdvExecutionUnit(), Executor::executePlanWithGroupBy(), get_count_distinct_sub_bitmap_count(), anonymous_namespace{RelAlgExecutor.cpp}::get_text_cast_counts(), GroupByAndAggregate::getColRangeInfo(), Executor::getDeviceTypeForTargets(), anonymous_namespace{SerializeToSql.cpp}::group_by_to_string(), GroupByAndAggregate::GroupByAndAggregate(), QueryMemoryDescriptor::init(), GroupByAndAggregate::initQueryMemoryDescriptorImpl(), anonymous_namespace{RelAlgExecutor.cpp}::is_projection(), anonymous_namespace{QueryFragmentDescriptor.cpp}::is_sample_query(), operator<<(), anonymous_namespace{QueryMemoryDescriptor.cpp}::pick_baseline_key_width(), QueryMemoryDescriptor::pick_target_compact_width(), ra_exec_unit_desc_for_caching(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteConstrainedByIn(), QueryRewriter::rewriteConstrainedByInImpl(), QueryRewriter::rewriteOverlapsJoin(), ExecutionKernel::runImpl(), GroupByAndAggregate::shard_count_for_top_groups(), and ScalarExprToSql::visitVar().
HashTableBuildDagMap RelAlgExecutionUnit::hash_table_build_plan_dag {} |
Definition at line 145 of file RelAlgExecutionUnit.h.
Referenced by Executor::buildCurrentLevelHashTable(), createCountAllExecutionUnit(), createNdvExecutionUnit(), RelAlgExecutor::createWindowFunctionContext(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteConstrainedByInImpl(), and QueryRewriter::rewriteOverlapsJoin().
std::list<std::shared_ptr<const InputColDescriptor> > RelAlgExecutionUnit::input_col_descs |
Definition at line 133 of file RelAlgExecutionUnit.h.
Referenced by createCountAllExecutionUnit(), createNdvExecutionUnit(), Executor::executePlanWithGroupBy(), Executor::fetchChunks(), Executor::fetchUnionChunks(), operator<<(), QueryMemoryDescriptor::pick_target_compact_width(), ra_exec_unit_desc_for_caching(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteConstrainedByInImpl(), and QueryRewriter::rewriteOverlapsJoin().
std::vector<InputDescriptor> RelAlgExecutionUnit::input_descs |
Definition at line 132 of file RelAlgExecutionUnit.h.
Referenced by QueryFragmentDescriptor::buildFragmentKernelMap(), QueryFragmentDescriptor::buildFragmentPerKernelForTable(), QueryFragmentDescriptor::buildFragmentPerKernelMap(), QueryFragmentDescriptor::buildFragmentPerKernelMapForUnion(), Executor::buildIsDeletedCb(), QueryFragmentDescriptor::buildMultifragKernelMap(), Executor::buildSelectedFragsMapping(), Executor::buildSelectedFragsMappingForUnion(), anonymous_namespace{IRCodegen.cpp}::check_if_loop_join_is_allowed(), anonymous_namespace{Execute.cpp}::checkWorkUnitWatchdog(), QueryFragmentDescriptor::computeAllTablesFragments(), RelAlgExecutor::computeWindow(), createCountAllExecutionUnit(), Executor::createKernels(), createNdvExecutionUnit(), RelAlgExecutor::createSortInputWorkUnit(), Executor::executePlanWithGroupBy(), RelAlgExecutor::executeWorkUnit(), Executor::fetchChunks(), Executor::fetchUnionChunks(), find_push_down_filters(), anonymous_namespace{SerializeToSql.cpp}::from_to_string(), anonymous_namespace{QueryMemoryInitializer.cpp}::get_input_idx(), get_loop_join_size(), get_table_infos(), Executor::getFragmentCount(), Executor::getTableFragmentIndices(), anonymous_namespace{QueryFragmentDescriptor.cpp}::is_sample_query(), RelAlgExecutor::isRowidLookup(), Executor::needFetchAllFragments(), QueryFragmentDescriptor::QueryFragmentDescriptor(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteConstrainedByInImpl(), QueryRewriter::rewriteOverlapsJoin(), ExecutionKernel::runImpl(), RelAlgExecutor::selectFiltersToBePushedDown(), Executor::skipFragmentPair(), and anonymous_namespace{QueryMemoryDescriptor.cpp}::target_expr_proj_indices().
const JoinQualsPerNestingLevel RelAlgExecutionUnit::join_quals |
Definition at line 136 of file RelAlgExecutionUnit.h.
Referenced by Executor::buildHoistLeftHandSideFiltersCb(), Executor::buildJoinLoops(), anonymous_namespace{IRCodegen.cpp}::check_if_loop_join_is_allowed(), GroupByAndAggregate::codegen(), createCountAllExecutionUnit(), createNdvExecutionUnit(), anonymous_namespace{RelAlgExecutor.cpp}::exe_unit_has_quals(), find_push_down_filters(), anonymous_namespace{RelAlgExecutor.cpp}::get_text_cast_counts(), Executor::getFragmentCount(), Executor::getRowCountAndOffsetForAllFrags(), anonymous_namespace{SerializeToSql.cpp}::join_condition_to_string(), Executor::needFetchAllFragments(), Executor::nukeOldState(), operator<<(), anonymous_namespace{ExecutionKernel.cpp}::query_has_inner_join(), ra_exec_unit_desc_for_caching(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteConstrainedByInImpl(), QueryRewriter::rewriteOverlapsJoin(), Executor::skipFragmentInnerJoins(), and Executor::skipFragmentPair().
std::list<std::shared_ptr<Analyzer::Expr> > RelAlgExecutionUnit::quals |
Definition at line 135 of file RelAlgExecutionUnit.h.
Referenced by anonymous_namespace{IRCodegen.cpp}::add_qualifier_to_execution_unit(), Executor::addTransientStringLiterals(), Executor::buildHoistLeftHandSideFiltersCb(), createCountAllExecutionUnit(), createNdvExecutionUnit(), anonymous_namespace{RelAlgExecutor.cpp}::exe_unit_has_quals(), anonymous_namespace{GroupByAndAggregate.cpp}::get_keyless_info(), anonymous_namespace{RelAlgExecutor.cpp}::get_text_cast_counts(), GroupByAndAggregate::getColRangeInfo(), anonymous_namespace{QueryFragmentDescriptor.cpp}::is_sample_query(), operator<<(), CodeGenerator::prioritizeQuals(), ra_exec_unit_desc_for_caching(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteConstrainedByIn(), QueryRewriter::rewriteConstrainedByInImpl(), QueryRewriter::rewriteOverlapsJoin(), anonymous_namespace{QueryMemoryDescriptor.cpp}::target_expr_proj_indices(), and anonymous_namespace{SerializeToSql.cpp}::where_to_string().
RegisteredQueryHint RelAlgExecutionUnit::query_hint |
Definition at line 143 of file RelAlgExecutionUnit.h.
Referenced by Executor::buildCurrentLevelHashTable(), anonymous_namespace{IRCodegen.cpp}::check_if_loop_join_is_allowed(), createCountAllExecutionUnit(), createNdvExecutionUnit(), RelAlgExecutor::createWindowFunctionContext(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteConstrainedByInImpl(), and QueryRewriter::rewriteOverlapsJoin().
QueryPlanHash RelAlgExecutionUnit::query_plan_dag_hash {EMPTY_HASHED_PLAN_DAG_KEY} |
Definition at line 144 of file RelAlgExecutionUnit.h.
Referenced by createCountAllExecutionUnit(), createNdvExecutionUnit(), operator<<(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteConstrainedByInImpl(), and QueryRewriter::rewriteOverlapsJoin().
std::shared_ptr<const query_state::QueryState> RelAlgExecutionUnit::query_state |
Definition at line 150 of file RelAlgExecutionUnit.h.
Referenced by createCountAllExecutionUnit(), createNdvExecutionUnit(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), and QueryRewriter::rewriteColumnarUpdate().
size_t RelAlgExecutionUnit::scan_limit |
Definition at line 142 of file RelAlgExecutionUnit.h.
Referenced by anonymous_namespace{Execute.cpp}::checkWorkUnitWatchdog(), anonymous_namespace{RelAlgExecutor.cpp}::compute_output_buffer_size(), Executor::executePlanWithGroupBy(), anonymous_namespace{QueryFragmentDescriptor.cpp}::is_sample_query(), operator<<(), ra_exec_unit_desc_for_caching(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteConstrainedByInImpl(), QueryRewriter::rewriteOverlapsJoin(), ExecutionKernel::runImpl(), and anonymous_namespace{RelAlgExecutor.cpp}::should_output_columnar().
std::list<std::shared_ptr<Analyzer::Expr> > RelAlgExecutionUnit::simple_quals |
Definition at line 134 of file RelAlgExecutionUnit.h.
Referenced by anonymous_namespace{IRCodegen.cpp}::add_qualifier_to_execution_unit(), Executor::addTransientStringLiterals(), QueryFragmentDescriptor::buildFragmentPerKernelForTable(), Executor::buildHoistLeftHandSideFiltersCb(), QueryFragmentDescriptor::buildMultifragKernelMap(), RelAlgExecutor::createCompoundWorkUnit(), createCountAllExecutionUnit(), createNdvExecutionUnit(), anonymous_namespace{RelAlgExecutor.cpp}::exe_unit_has_quals(), anonymous_namespace{GroupByAndAggregate.cpp}::get_expr_range_info(), anonymous_namespace{RelAlgExecutor.cpp}::get_text_cast_counts(), GroupByAndAggregate::getColRangeInfo(), anonymous_namespace{QueryFragmentDescriptor.cpp}::is_sample_query(), operator<<(), CodeGenerator::prioritizeQuals(), ra_exec_unit_desc_for_caching(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteConstrainedByIn(), QueryRewriter::rewriteConstrainedByInImpl(), QueryRewriter::rewriteOverlapsJoin(), anonymous_namespace{QueryMemoryDescriptor.cpp}::target_expr_proj_indices(), and anonymous_namespace{SerializeToSql.cpp}::where_to_string().
const SortInfo RelAlgExecutionUnit::sort_info |
Definition at line 141 of file RelAlgExecutionUnit.h.
Referenced by QueryMemoryInitializer::applyStreamingTopNOffsetCpu(), anonymous_namespace{RelAlgExecutor.cpp}::can_output_columnar(), anonymous_namespace{RelAlgExecutor.cpp}::can_use_bump_allocator(), anonymous_namespace{Execute.cpp}::checkWorkUnitWatchdog(), GroupByAndAggregate::codegenOutputSlot(), Executor::collectAllDeviceShardedTopResults(), QueryMemoryInitializer::copyGroupByBuffersFromGpu(), QueryMemoryInitializer::createAndInitializeGroupByBufferGpu(), RelAlgExecutor::executeWorkUnit(), QueryMemoryDescriptor::getBufferSizeBytes(), GroupByAndAggregate::getColRangeInfo(), QueryMemoryInitializer::initGroupByBuffer(), GroupByAndAggregate::initQueryMemoryDescriptor(), anonymous_namespace{QueryFragmentDescriptor.cpp}::is_sample_query(), QueryExecutionContext::launchGpuCode(), operator<<(), Executor::reduceSpeculativeTopN(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteConstrainedByInImpl(), QueryRewriter::rewriteOverlapsJoin(), GroupByAndAggregate::shard_count_for_top_groups(), anonymous_namespace{QueryMemoryDescriptor.cpp}::target_expr_proj_indices(), QueryFragmentDescriptor::terminateDispatchMaybe(), use_speculative_top_n(), and anonymous_namespace{QueryMemoryDescriptor.cpp}::use_streaming_top_n().
TableIdToNodeMap RelAlgExecutionUnit::table_id_to_node_map {} |
Definition at line 146 of file RelAlgExecutionUnit.h.
Referenced by Executor::buildCurrentLevelHashTable(), createCountAllExecutionUnit(), createNdvExecutionUnit(), RelAlgExecutor::createWindowFunctionContext(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteConstrainedByInImpl(), and QueryRewriter::rewriteOverlapsJoin().
std::vector<Analyzer::Expr*> RelAlgExecutionUnit::target_exprs |
Definition at line 138 of file RelAlgExecutionUnit.h.
Referenced by Executor::addTransientStringLiterals(), SpeculativeTopNMap::asRows(), anonymous_namespace{RelAlgExecutor.cpp}::can_output_columnar(), anonymous_namespace{Execute.cpp}::checkWorkUnitWatchdog(), GroupByAndAggregate::codegen(), GroupByAndAggregate::codegenAggCalls(), GroupByAndAggregate::codegenOutputSlot(), Executor::collectAllDeviceResults(), anonymous_namespace{RelAlgExecutor.cpp}::compute_output_buffer_size(), RelAlgExecutor::computeWindow(), Executor::createKernels(), anonymous_namespace{RelAlgExecutor.cpp}::decide_approx_count_distinct_implementation(), RelAlgExecutor::executeWorkUnit(), anonymous_namespace{GroupByAndAggregate.cpp}::get_keyless_info(), anonymous_namespace{RelAlgExecutor.cpp}::get_text_cast_counts(), GroupByAndAggregate::getColRangeInfo(), Executor::getDeviceTypeForTargets(), RowFunctionManager::getDictDbId(), RowFunctionManager::getDictId(), GroupByAndAggregate::gpuCanHandleOrderEntries(), anonymous_namespace{GroupByAndAggregate.cpp}::has_count_distinct(), QueryMemoryDescriptor::init(), anonymous_namespace{GroupByAndAggregate.cpp}::init_count_distinct_descriptors(), anonymous_namespace{RelAlgExecutor.cpp}::is_window_execution_unit(), anonymous_namespace{ExecutionKernel.cpp}::need_to_hold_chunk(), operator<<(), QueryMemoryDescriptor::pick_target_compact_width(), QueryMemoryDescriptor::QueryMemoryDescriptor(), QueryMemoryInitializer::QueryMemoryInitializer(), ra_exec_unit_desc_for_caching(), Executor::reduceMultiDeviceResults(), Executor::reduceSpeculativeTopN(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), Executor::resultsUnion(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteConstrainedByInImpl(), QueryRewriter::rewriteOverlapsJoin(), ExecutionKernel::runImpl(), anonymous_namespace{QueryMemoryDescriptor.cpp}::target_expr_proj_indices(), anonymous_namespace{SerializeToSql.cpp}::targets_to_string(), use_speculative_top_n(), and anonymous_namespace{QueryMemoryDescriptor.cpp}::use_streaming_top_n().
std::unordered_map<size_t, SQLTypeInfo> RelAlgExecutionUnit::target_exprs_original_type_infos |
Definition at line 139 of file RelAlgExecutionUnit.h.
Referenced by anonymous_namespace{GroupByAndAggregate.cpp}::init_count_distinct_descriptors(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), QueryRewriter::rewriteConstrainedByInImpl(), and QueryRewriter::rewriteOverlapsJoin().
std::vector<Analyzer::Expr*> RelAlgExecutionUnit::target_exprs_union |
Definition at line 151 of file RelAlgExecutionUnit.h.
Referenced by Executor::addTransientStringLiterals(), and QueryMemoryInitializer::QueryMemoryInitializer().
const std::optional<bool> RelAlgExecutionUnit::union_all |
Definition at line 149 of file RelAlgExecutionUnit.h.
Referenced by QueryFragmentDescriptor::buildFragmentKernelMap(), createCountAllExecutionUnit(), createNdvExecutionUnit(), Executor::executePlanWithGroupBy(), Executor::getRowCountAndOffsetForAllFrags(), operator<<(), QueryMemoryInitializer::QueryMemoryInitializer(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), and ExecutionKernel::runImpl().
bool RelAlgExecutionUnit::use_bump_allocator {false} |
Definition at line 147 of file RelAlgExecutionUnit.h.
Referenced by anonymous_namespace{Execute.cpp}::checkWorkUnitWatchdog(), QueryMemoryInitializer::createAndInitializeGroupByBufferGpu(), Executor::createKernels(), RelAlgExecutor::handleOutOfMemoryRetry(), QueryExecutionContext::launchGpuCode(), operator<<(), QueryMemoryDescriptor::QueryMemoryDescriptor(), QueryMemoryInitializer::QueryMemoryInitializer(), anonymous_namespace{Execute.cpp}::replace_scan_limit(), QueryRewriter::rewriteAggregateOnGroupByColumn(), QueryRewriter::rewriteColumnarDelete(), QueryRewriter::rewriteColumnarUpdate(), and QueryRewriter::rewriteOverlapsJoin().