diff --git a/.github/workflows/rustfmt.yaml b/.github/workflows/rustfmt.yaml new file mode 100644 index 00000000..d727d69f --- /dev/null +++ b/.github/workflows/rustfmt.yaml @@ -0,0 +1,18 @@ +on: pull_request + +name: Rustfmt + +jobs: + format: + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@nightly + with: + components: rustfmt + - uses: mbrobbel/rustfmt-check@master + with: + token: ${{ secrets.GITHUB_TOKEN }} + mode: review \ No newline at end of file diff --git a/datafusion-optd-cli/tests/cli_integration.rs b/datafusion-optd-cli/tests/cli_integration.rs index 8a9f7cee..663fa150 100644 --- a/datafusion-optd-cli/tests/cli_integration.rs +++ b/datafusion-optd-cli/tests/cli_integration.rs @@ -57,5 +57,8 @@ fn cli_test_tpch() { cmd.current_dir(".."); // all paths in `test.sql` assume we're in the base dir of the repo cmd.args(["--enable-logical", "--file", "tpch/test.sql"]); let status = cmd.status().unwrap(); - assert!(status.success(), "should not have crashed when running tpch"); -} \ No newline at end of file + assert!( + status.success(), + "should not have crashed when running tpch" + ); +} diff --git a/optd-core/src/cascades/optimizer.rs b/optd-core/src/cascades/optimizer.rs index c3871cdd..ad1e4c4b 100644 --- a/optd-core/src/cascades/optimizer.rs +++ b/optd-core/src/cascades/optimizer.rs @@ -214,9 +214,7 @@ impl CascadesOptimizer { group_id: GroupId, mut on_produce: impl FnMut(RelNodeRef, GroupId) -> RelNodeRef, ) -> Result> { - self - .memo - .get_best_group_binding(group_id, &mut on_produce) + self.memo.get_best_group_binding(group_id, &mut on_produce) } fn fire_optimize_tasks(&mut self, group_id: GroupId) -> Result<()> { diff --git a/optd-core/src/cascades/tasks/optimize_inputs.rs b/optd-core/src/cascades/tasks/optimize_inputs.rs index 6cb6b85a..f6b35ca7 100644 --- a/optd-core/src/cascades/tasks/optimize_inputs.rs +++ b/optd-core/src/cascades/tasks/optimize_inputs.rs @@ -243,12 +243,7 @@ impl Task for OptimizeInputsTask { } else { self.update_winner( &cost.sum( - &cost.compute_cost( - &expr.typ, - &expr.data, - &input_cost, - Some(context), - ), + &cost.compute_cost(&expr.typ, &expr.data, &input_cost, Some(context)), &input_cost, ), optimizer, diff --git a/optd-core/src/heuristics/optimizer.rs b/optd-core/src/heuristics/optimizer.rs index 4a081a0d..2c1b1bf8 100644 --- a/optd-core/src/heuristics/optimizer.rs +++ b/optd-core/src/heuristics/optimizer.rs @@ -49,10 +49,7 @@ fn match_node( assert!(res.is_none(), "dup pick"); } RuleMatcher::PickMany { pick_to } => { - let res = pick.insert( - *pick_to, - RelNode::new_list(node.children[idx..].to_vec()), - ); + let res = pick.insert(*pick_to, RelNode::new_list(node.children[idx..].to_vec())); assert!(res.is_none(), "dup pick"); should_end = true; } diff --git a/optd-datafusion-bridge/src/from_optd.rs b/optd-datafusion-bridge/src/from_optd.rs index a1968200..4d8eca38 100644 --- a/optd-datafusion-bridge/src/from_optd.rs +++ b/optd-datafusion-bridge/src/from_optd.rs @@ -351,7 +351,8 @@ impl OptdPlanContext<'_> { Schema::new_with_metadata(fields, HashMap::new()) }; - let physical_expr = Self::conv_from_optd_expr(node.cond(), &Arc::new(filter_schema.clone()))?; + let physical_expr = + Self::conv_from_optd_expr(node.cond(), &Arc::new(filter_schema.clone()))?; if let JoinType::Cross = node.join_type() { return Ok(Arc::new(CrossJoinExec::new(left_exec, right_exec)) @@ -495,7 +496,10 @@ impl OptdPlanContext<'_> { result.with_context(|| format!("when processing {}", rel_node_dbg)) } - pub async fn conv_from_optd(&mut self, root_rel: OptRelNodeRef) -> Result> { + pub async fn conv_from_optd( + &mut self, + root_rel: OptRelNodeRef, + ) -> Result> { self.conv_from_optd_plan_node(PlanNode::from_rel_node(root_rel).unwrap()) .await } diff --git a/optd-datafusion-repr/src/rules/joins.rs b/optd-datafusion-repr/src/rules/joins.rs index a0314140..5194d194 100644 --- a/optd-datafusion-repr/src/rules/joins.rs +++ b/optd-datafusion-repr/src/rules/joins.rs @@ -342,7 +342,7 @@ fn apply_projection_pull_up_join( .into_rel_node(), ); } - + Expr::from_rel_node( RelNode { typ: expr.typ.clone(),