OmniSciDB
a5dc49c757
|
#include <RelAlgDag.h>
Static Public Member Functions | |
static std::unique_ptr< RelAlgDag > | buildDag (const std::string &query_ra, const bool optimize_dag) |
static std::unique_ptr< RelAlgDag > | buildDagForSubquery (RelAlgDag &root_dag, const rapidjson::Value &query_ast) |
static void | optimizeDag (RelAlgDag &rel_alg_dag) |
Static Private Member Functions | |
static std::unique_ptr< RelAlgDag > | build (const rapidjson::Value &query_ast, RelAlgDag *root_dag, const bool optimize_dag) |
Additional Inherited Members | |
Static Protected Member Functions inherited from RelAlgDagModifier | |
static std::vector < std::shared_ptr< RelAlgNode > > & | getNodes (RelAlgDag &rel_alg_dag) |
static std::vector < std::shared_ptr< RexSubQuery > > & | getSubqueries (RelAlgDag &rel_alg_dag) |
static std::unordered_map < size_t, std::unordered_map < unsigned, RegisteredQueryHint > > & | getQueryHints (RelAlgDag &rel_alg_dag) |
static void | setBuildState (RelAlgDag &rel_alg_dag, const RelAlgDag::BuildState build_state) |
Builder struct to create a RelAlgDag instance. Can optionally apply high level optimizations which can be expressed through relational algebra extended with RelCompound. The RelCompound node is an equivalent representation for sequences of RelFilter, RelProject and RelAggregate nodes. This coalescing minimizes the amount of intermediate buffers required to evaluate a query. Lower level optimizations are taken care by lower levels, mainly RelAlgTranslator and the IR code generation.
Definition at line 3432 of file RelAlgDag.h.
|
staticprivate |
Definition at line 3384 of file RelAlgDag.cpp.
References anonymous_namespace{RelAlgDag.cpp}::bind_inputs(), CHECK, field(), RelAlgDagModifier::getNodes(), RelAlgDag::kBuiltNotOptimized, optimizeDag(), details::RelAlgDispatcher::run(), and RelAlgDagModifier::setBuildState().
Referenced by buildDag(), and buildDagForSubquery().
|
static |
Constructs a RelAlg DAG from a relative-algebra JSON representation.
query_ra | A JSON string representation of an RA tree from Calcite. |
cat | DB catalog for the current user. |
Definition at line 3358 of file RelAlgDag.cpp.
References build(), CHECK, logger::ERROR, LOG, RelAlgNode::resetRelAlgFirstId(), and VLOG.
|
static |
Constructs a rel-alg DAG for any subqueries. Should only be called during DAG building.
root_dag | The root DAG builder. The root stores pointers to all subqueries. |
query_ast | The current JSON node to build a DAG for. |
cat | DB catalog for the current user. |
Definition at line 3378 of file RelAlgDag.cpp.
References build().
Referenced by anonymous_namespace{RelAlgDag.cpp}::parse_subquery().
|
static |
Definition at line 3411 of file RelAlgDag.cpp.
References anonymous_namespace{RelAlgDag.cpp}::add_window_function_pre_project(), CHECK, anonymous_namespace{RelAlgDag.cpp}::coalesce_nodes(), anonymous_namespace{RelAlgDag.cpp}::compute_node_hash(), anonymous_namespace{RelLeftDeepInnerJoin.cpp}::create_left_deep_join(), eliminate_dead_columns(), eliminate_dead_subqueries(), eliminate_identical_copy(), anonymous_namespace{RelAlgDag.cpp}::eliminate_redundant_projection(), fold_filters(), g_cluster, get_left_deep_join_root(), RelAlgDag::getBuildState(), RelAlgDagModifier::getNodes(), RelAlgDagModifier::getQueryHints(), RelAlgDagModifier::getSubqueries(), anonymous_namespace{RelAlgDag.cpp}::handle_agg_over_join(), anonymous_namespace{RelAlgDag.cpp}::handle_query_hint(), hoist_filter_cond_to_cross_join(), RelAlgDag::kBuiltNotOptimized, RelAlgDag::kBuiltOptimized, anonymous_namespace{RelAlgDag.cpp}::mark_nops(), anonymous_namespace{RelAlgDag.cpp}::separate_window_function_expressions(), RelAlgDagModifier::setBuildState(), simplify_sort(), and sink_projected_boolean_expr_to_join().
Referenced by build().