2 unstable releases

new 0.1.1 Nov 8, 2024
0.0.0 Feb 25, 2024

#5 in #optimizer

MIT license

595KB
13K SLoC

Usage

Update the test cases

cargo run -p optd-sqlplannertest --bin planner_test_apply
# or, supply a list of directories to scan from
cargo run -p optd-sqlplannertest --bin planner_test_apply -- subqueries

Verify the test cases

cargo test -p optd-sqlplannertest
# or use nextest
cargo nextest run -p optd-sqlplannertest

Tasks

The explain and execute task will be run with datafusion's logical optimizer disabled. Each task has some toggleable flags to control its behavior.

execute Task

Flags

Name Description
use_df_logical Enable Datafusion's logical optimizer

Explain Task

Flags

Name Description
use_df_logical Enable Datafusion's logical optimizer
verbose Display estimated cost in physical plan
logical_rules Only enable these logical rules (also disable heuristic optimizer)

Currently we have the following options for the explain task:

  • logical_datafusion: datafusion's logical plan.
  • logical_optd: optd's logical plan before optimization.
  • optimized_logical_optd: optd's logical plan after heuristics optimization and before cascades optimization.
  • physical_optd: optd's physical plan after optimization.
  • physical_datafusion: datafusion's physical plan.
  • join_orders: physical join orders.
  • logical_join_orders: logical join orders.

Tracing a query

RUST_BACKTRACE=1 RUST_LOG=optd_core=trace,optd_datafusion_bridge=trace cargo run -p optd-sqlplannertest --bin planner_test_apply -- pushdowns &> log

Dependencies

~86MB
~1.5M SLoC