Skip to content

yutiansut/rust-opt-framework

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

An extensible query optimization framework written in rust. For detail design notes, please refer to src/lib.rs.

Example

To define a logical plan:

let plan = {
    let mut builder = LogicalPlanBuilder::new();
    let right = builder.scan(None, "t2").build().root();
    builder
        .scan(None, "t1")
        .join(
            JoinType::Inner,
            binary_expr(col("t1.c1"), Eq, col("t2.c2")),
            right,
        )
        .build()
};

Use cascades optimizer to find best plan:

let optimizer = CascadesOptimizer::new(
    PhysicalPropertySet::default(),
    vec![
        CommutateJoinRule::new().into(),
        Join2HashJoinRule::new().into(),
        Scan2TableScanRule::new().into(),
    ],
    plan,
    OptimizerContext {},
);
optimizer.find_best_plan().unwrap()

Current status

  • Heuristic optimizer framework.
  • Cascades style optimizer framework.
  • Cost model.
  • Statistics model.
  • Optimization rules. Implemented some simple rules to verify optimizer framework.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%