Class QueryPlanDagExtractor

class QueryPlanDagExtractor

Public Functions

QueryPlanDagExtractor(QueryPlanDagCache &global_dag, std::unordered_map<unsigned, JoinQualsPerNestingLevel> left_deep_tree_infos, Executor *executor, bool analyze_join_ops)
HashTableBuildDagMap getHashTableBuildDag()
const JoinQualsPerNestingLevel *getPerNestingJoinQualInfo(std::optional<unsigned> left_deep_join_tree_id)
bool isDagExtractionAvailable()
std::string getExtractedQueryPlanDagStr(size_t start_pos = 0)
std::vector<InnerOuterOrLoopQual> normalizeColumnsPair(const Analyzer::BinOper *condition)
bool isEmptyQueryPlanDag(const std::string &dag)
TableIdToNodeMap getTableIdToNodeMap()
void addTableIdToNodeLink(const int table_id, const RelAlgNode *node)
void clearInternalStatus()

Public Static Functions

ExtractedJoinInfo extractJoinInfo(const RelAlgNode *top_node, std::optional<unsigned> left_deep_tree_id, std::unordered_map<unsigned, JoinQualsPerNestingLevel> left_deep_tree_infos, Executor *executor)
ExtractedQueryPlanDag extractQueryPlanDag(const RelAlgNode *top_node, Executor *executor)

Private Functions

void visit(const RelAlgNode *parent_node, const RelAlgNode *child_node)
std::vector<Analyzer::ColumnVar const *> getColVar(const Analyzer::Expr *col_info)
void register_and_visit(const RelAlgNode *parent_node, const RelAlgNode *child_node)
void handleLeftDeepJoinTree(const RelAlgNode *parent_node, const RelLeftDeepInnerJoin *rel_left_deep_join)
void handleTranslatedJoin(const RelAlgNode *parent_node, const RelTranslatedJoin *rel_trans_join)
bool validateNodeId(const RelAlgNode *node, std::optional<RelNodeId> retrieved_node_id)
bool registerNodeToDagCache(const RelAlgNode *parent_node, const RelAlgNode *child_node, std::optional<RelNodeId> retrieved_node_id)

Private Members

QueryPlanDagCache &global_dag_
bool contain_not_supported_rel_node_
std::unordered_map<unsigned, JoinQualsPerNestingLevel> left_deep_tree_infos_
Executor *executor_
bool analyze_join_ops_
std::shared_ptr<TranslatedJoinInfo> translated_join_info_
HashTableBuildDagMap hash_table_query_plan_dag_
TableIdToNodeMap table_id_to_node_map_
std::vector<std::string> extracted_dag_

Private Static Functions

void extractQueryPlanDagImpl(const RelAlgNode *top_npde, QueryPlanDagExtractor &dag_extractor)