36 #include <boost/graph/adjacency_list.hpp>
44 using AdjacentList = boost::adjacency_list<boost::setS, boost::vecS, boost::directedS>;
65 size_t in_outer_cols_info,
78 std::unordered_set<size_t>
121 ,
limit(std::nullopt)
124 SortInfo(
const std::list<Analyzer::OrderEntry>& oe,
126 std::optional<size_t> l,
147 boost::hash_combine(hash,
limit.has_value());
148 boost::hash_combine(hash,
limit.value_or(0));
159 std::list<std::shared_ptr<Analyzer::Expr>>
quals;
169 std::list<std::shared_ptr<Analyzer::Expr>>
quals;
193 template <SQLAgg AggType>
196 for (
size_t target_idx = 0; target_idx <
target_exprs.size(); ++target_idx) {
198 if (
auto const* agg_expr = dynamic_cast<Analyzer::AggExpr const*>(target_expr)) {
199 if (agg_expr->get_aggtype() == AggType) {
200 lambda(agg_expr, target_idx);
std::vector< Analyzer::Expr * > target_exprs
std::list< Analyzer::OrderEntry > getOrderEntries() const
std::vector< Analyzer::Expr * > input_exprs
std::vector< Analyzer::ColumnVar * > table_func_inputs
QueryPlanHash query_plan_dag_hash
const std::optional< bool > union_all
const table_functions::TableFunction table_func
std::ostream & operator<<(std::ostream &os, const SessionInfo &session_info)
constexpr QueryPlanHash EMPTY_HASHED_PLAN_DAG_KEY
QueryPlanHash outer_cols_access_path
const std::vector< InputDescriptor > input_descs
std::vector< InputDescriptor > input_descs
QueryPlanHash query_plan_dag_hash
boost::adjacency_list< boost::setS, boost::vecS, boost::directedS > AdjacentList
std::vector< JoinCondition > JoinQualsPerNestingLevel
std::shared_ptr< ResultSet > ResultSetPtr
size_t output_buffer_size_param
const std::list< std::shared_ptr< Analyzer::Expr > > groupby_exprs
static SortInfo createFromSortNode(const RelSort *sort_node)
std::unordered_set< size_t > inputTableKeys
std::vector< Analyzer::Expr * > target_exprs_union
void eachAggTarget(std::function< void(Analyzer::AggExpr const *, size_t target_idx)> lambda) const
std::vector< std::pair< std::vector< size_t >, size_t > > per_device_cardinality
std::unordered_map< size_t, HashTableBuildDag > HashTableBuildDagMap
SortInfo & operator=(const SortInfo &other)
const JoinQualsPerNestingLevel join_quals
std::optional< size_t > limit
TableIdToNodeMap table_id_to_node_map
std::list< Analyzer::OrderEntry > order_entries
RelAlgExecutionUnit createCountAllExecutionUnit(Analyzer::Expr *replacement_target) const
const std::shared_ptr< Analyzer::Estimator > estimator
std::string toString() const
HashTableBuildDag(size_t in_inner_cols_info, size_t in_outer_cols_info, QueryPlanHash in_inner_cols_access_path, QueryPlanHash in_outer_cols_access_path, std::unordered_set< size_t > &&inputTableKeys)
std::unordered_map< shared::TableKey, const RelAlgNode * > TableIdToNodeMap
QueryPlanHash inner_cols_access_path
SortInfo(const std::list< Analyzer::OrderEntry > &oe, const SortAlgorithm sa, std::optional< size_t > l, size_t o)
size_t RelNodeExplainedHash
std::unordered_map< size_t, SQLTypeInfo > target_exprs_original_type_infos
RelAlgExecutionUnit createNdvExecutionUnit(const int64_t range) const
std::string typeName(const T *v)
std::list< std::shared_ptr< Analyzer::Expr > > quals
std::list< std::shared_ptr< Analyzer::Expr > > quals
RegisteredQueryHint query_hint
constexpr char const * EMPTY_QUERY_PLAN
std::list< std::shared_ptr< const InputColDescriptor > > input_col_descs
std::shared_ptr< const query_state::QueryState > query_state
Common Enum definitions for SQL processing.
std::vector< Analyzer::Expr * > target_exprs
std::list< std::shared_ptr< const InputColDescriptor > > input_col_descs
std::optional< size_t > getLimit() const
ResultSet(const std::vector< TargetInfo > &targets, const ExecutorDeviceType device_type, const QueryMemoryDescriptor &query_mem_desc, const std::shared_ptr< RowSetMemoryOwner > row_set_mem_owner, const unsigned block_size, const unsigned grid_size)
std::list< std::shared_ptr< Analyzer::Expr > > simple_quals
HashTableBuildDagMap hash_table_build_plan_dag