Skip to content

feat: full e2e pipeline #141

feat: full e2e pipeline

feat: full e2e pipeline #141

Triggered via pull request February 11, 2025 09:43
@yliang412yliang412
synchronize #26
yuchen/e2e
Status Failure
Total duration 2m 56s
Artifacts

check.yml

on: pull_request
stable / fmt
3s
stable / fmt
ubuntu / stable / features
2m 46s
ubuntu / stable / features
Matrix: clippy
Matrix: msrv
Fit to window
Zoom out
Zoom in

Annotations

1 error and 24 warnings
ubuntu / 1.78.0
Process completed with exit code 101.
[clippy] optd-core/src/cascades/mod.rs#L145: optd-core/src/cascades/mod.rs#L145
warning: using `clone` on type `ScalarGroupId` which implements the `Copy` trait --> optd-core/src/cascades/mod.rs:145:28 | 145 | predicate: scan.predicate.clone(), | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `scan.predicate` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy = note: `#[warn(clippy::clone_on_copy)]` on by default
[clippy] optd-core/src/cascades/mod.rs#L153: optd-core/src/cascades/mod.rs#L153
warning: using `clone` on type `RelationalGroupId` which implements the `Copy` trait --> optd-core/src/cascades/mod.rs:153:24 | 153 | child: filter.child.clone(), | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `filter.child` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
[clippy] optd-core/src/cascades/mod.rs#L154: optd-core/src/cascades/mod.rs#L154
warning: using `clone` on type `ScalarGroupId` which implements the `Copy` trait --> optd-core/src/cascades/mod.rs:154:28 | 154 | predicate: filter.predicate.clone(), | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `filter.predicate` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
[clippy] optd-datafusion/src/converter/from_optd.rs#L60: optd-datafusion/src/converter/from_optd.rs#L60
warning: unnecessary use of `to_vec` --> optd-datafusion/src/converter/from_optd.rs:60:38 | 60 | let physical_exprs = project | ______________________________________^ 61 | | .fields 62 | | .to_vec() 63 | | .into_iter() | |________________________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned = note: `#[warn(clippy::unnecessary_to_owned)]` on by default help: use | 60 ~ let physical_exprs = project 61 + .fields.iter().cloned() |
[clippy] optd-datafusion/src/converter/from_optd.rs#L130: optd-datafusion/src/converter/from_optd.rs#L130
warning: parameter is only used in recursion --> optd-datafusion/src/converter/from_optd.rs:130:10 | 130 | &self, | ^^^^ | note: parameter used here --> optd-datafusion/src/converter/from_optd.rs:152:28 | 152 | let left = self.conv_optd_to_df_scalar(&and.left, context); | ^^^^ 153 | let right = self.conv_optd_to_df_scalar(&and.right, context); | ^^^^ ... 158 | let left = self.conv_optd_to_df_scalar(&add.left, context); | ^^^^ 159 | let right = self.conv_optd_to_df_scalar(&add.right, context); | ^^^^ ... 164 | let left = self.conv_optd_to_df_scalar(&equal.left, context); | ^^^^ 165 | let right = self.conv_optd_to_df_scalar(&equal.right, context); | ^^^^ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion = note: `#[warn(clippy::only_used_in_recursion)]` on by default
[clippy] optd-datafusion/src/converter/into_optd.rs#L42: optd-datafusion/src/converter/into_optd.rs#L42
warning: using `clone` on type `Option<bool>` which implements the `Copy` trait --> optd-datafusion/src/converter/into_optd.rs:42:48 | 42 | value: OptdValue::Bool(val.clone().unwrap()), | ^^^^^^^^^^^ help: try dereferencing it: `(*val)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy = note: `#[warn(clippy::clone_on_copy)]` on by default
[clippy] optd-datafusion/src/converter/into_optd.rs#L46: optd-datafusion/src/converter/into_optd.rs#L46
warning: using `clone` on type `Option<i64>` which implements the `Copy` trait --> optd-datafusion/src/converter/into_optd.rs:46:77 | 46 | ScalarOperator::Constant(Constant::new(OptdValue::Int64(val.clone().unwrap()))) | ^^^^^^^^^^^ help: try dereferencing it: `(*val)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
[clippy] optd-datafusion/src/converter/into_optd.rs#L28: optd-datafusion/src/converter/into_optd.rs#L28
warning: parameter is only used in recursion --> optd-datafusion/src/converter/into_optd.rs:28:10 | 28 | &self, | ^^^^ | note: parameter used here --> optd-datafusion/src/converter/into_optd.rs:54:28 | 54 | let left = self.conv_df_to_optd_scalar(&binary_expr.left, context, col_offset)?; | ^^^^ 55 | let right = self.conv_df_to_optd_scalar(&binary_expr.right, context, col_offset)?; | ^^^^ ... 64 | return self.conv_df_to_optd_scalar(&cast.expr, context, col_offset); | ^^^^ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion
[clippy] optd-datafusion/src/converter/into_optd.rs#L97: optd-datafusion/src/converter/into_optd.rs#L97
warning: returning the result of a `let` binding from a block --> optd-datafusion/src/converter/into_optd.rs:105:17 | 97 | / let filter = LogicalOperator::Filter(Filter { 98 | | child: self.conv_df_to_optd_relational(&df_filter.input)?, 99 | | predicate: self.conv_df_to_optd_scalar( 100 | | &df_filter.predicate, ... | 103 | | )?, 104 | | }); | |___________________- unnecessary `let` binding 105 | filter | ^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return = note: `#[warn(clippy::let_and_return)]` on by default help: return the expression directly | 97 ~ 98 ~ LogicalOperator::Filter(Filter { 99 + child: self.conv_df_to_optd_relational(&df_filter.input)?, 100 + predicate: self.conv_df_to_optd_scalar( 101 + &df_filter.predicate, 102 + df_filter.input.schema(), 103 + 0, 104 + )?, 105 + }) |
[clippy] optd-datafusion/src/converter/into_optd.rs#L125: optd-datafusion/src/converter/into_optd.rs#L125
warning: returning the result of a `let` binding from a block --> optd-datafusion/src/converter/into_optd.rs:131:17 | 125 | / let join = LogicalOperator::Join(Join::new( 126 | | &join.join_type.to_string(), 127 | | self.conv_df_to_optd_relational(&join.left)?, 128 | | self.conv_df_to_optd_relational(&join.right)?, 129 | | Self::flatten_scalar_as_conjunction(join_cond, 0), 130 | | )); | |___________________- unnecessary `let` binding 131 | join | ^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return help: return the expression directly | 125 ~ 126 ~ LogicalOperator::Join(Join::new( 127 + &join.join_type.to_string(), 128 + self.conv_df_to_optd_relational(&join.left)?, 129 + self.conv_df_to_optd_relational(&join.right)?, 130 + Self::flatten_scalar_as_conjunction(join_cond, 0), 131 + )) |
[clippy] optd-datafusion/src/converter/into_optd.rs#L162: optd-datafusion/src/converter/into_optd.rs#L162
warning: returning the result of a `let` binding from a block --> optd-datafusion/src/converter/into_optd.rs:167:17 | 162 | / let project = LogicalOperator::Project(Project { 163 | | child: input, 164 | | fields: exprs, 165 | | }); | |___________________- unnecessary `let` binding 166 | 167 | project | ^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return help: return the expression directly | 162 ~ 163 | 164 ~ LogicalOperator::Project(Project { 165 + child: input, 166 + fields: exprs, 167 + }) |
[clippy] optd-datafusion/src/planner.rs#L80: optd-datafusion/src/planner.rs#L80
warning: empty line after doc comment --> optd-datafusion/src/planner.rs:52:5 | 52 | / /// * `PhysicalPlan` - The optimized physical plan. 53 | | // pub fn mock_optimize(&self, logical_plan: &LogicalPlan) -> Arc<PhysicalPlan> { 54 | | // let operator = match &logical_plan.operator { 55 | | // LogicalOperator::Scan(scan) => PhysicalOperator::TableScan(TableScan { ... | 78 | | // } 79 | | | |_^ 80 | / pub async fn mock_optimize( 81 | | &self, 82 | | logical_plan: &LogicalPlan, 83 | | ) -> anyhow::Result<Arc<PhysicalPlan>> { | |__________________________________________- the comment documents this method | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default = help: if the empty line is unintentional remove it help: if the doc comment should not document `mock_optimize` comment it out | 31 ~ // /// A mock optimization function for testing purposes. 32 ~ // /// 33 ~ // /// This function takes a logical plan, and for each node in the logical plan, it will 34 ~ // /// recursively traverse the node and its children and replace the node with a physical 35 ~ // /// operator. The physical operator is chosen based on the type of the logical operator. 36 ~ // /// For example, if the logical operator is a scan, the physical operator will be a 37 ~ // /// TableScan, if the logical operator is a filter, the physical operator will be a 38 ~ // /// Filter, and so on. 39 ~ // /// 40 ~ // /// The physical operators are chosen in a way that they mirror the structure of the 41 ~ // /// logical plan, but they are not actually optimized in any way. This is useful for 42 ~ // /// testing purposes, as it allows us to test the structure of the physical plan without 43 ~ // /// having to worry about the actual optimization process. 44 ~ // /// 45 ~ // /// The function returns a PhysicalPlan, which is a struct that contains the root node of 46 ~ // /// the physical plan. 47 ~ // /// 48 ~ // /// # Arguments 49 ~ // /// * `logical_plan` - The logical plan to optimize. 50 ~ // /// 51 ~ // /// # Returns 52 ~ // /// * `PhysicalPlan` - The optimized physical plan. |
[clippy] optd-core/src/cascades/mod.rs#L145: optd-core/src/cascades/mod.rs#L145
warning: using `clone` on type `ScalarGroupId` which implements the `Copy` trait --> optd-core/src/cascades/mod.rs:145:28 | 145 | predicate: scan.predicate.clone(), | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `scan.predicate` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy = note: `#[warn(clippy::clone_on_copy)]` on by default
[clippy] optd-core/src/cascades/mod.rs#L153: optd-core/src/cascades/mod.rs#L153
warning: using `clone` on type `RelationalGroupId` which implements the `Copy` trait --> optd-core/src/cascades/mod.rs:153:24 | 153 | child: filter.child.clone(), | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `filter.child` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
[clippy] optd-core/src/cascades/mod.rs#L154: optd-core/src/cascades/mod.rs#L154
warning: using `clone` on type `ScalarGroupId` which implements the `Copy` trait --> optd-core/src/cascades/mod.rs:154:28 | 154 | predicate: filter.predicate.clone(), | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `filter.predicate` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
[clippy] optd-datafusion/src/converter/from_optd.rs#L60: optd-datafusion/src/converter/from_optd.rs#L60
warning: unnecessary use of `to_vec` --> optd-datafusion/src/converter/from_optd.rs:60:38 | 60 | let physical_exprs = project | ______________________________________^ 61 | | .fields 62 | | .to_vec() 63 | | .into_iter() | |________________________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned = note: `#[warn(clippy::unnecessary_to_owned)]` on by default help: use | 60 ~ let physical_exprs = project 61 + .fields.iter().cloned() |
[clippy] optd-datafusion/src/converter/from_optd.rs#L130: optd-datafusion/src/converter/from_optd.rs#L130
warning: parameter is only used in recursion --> optd-datafusion/src/converter/from_optd.rs:130:10 | 130 | &self, | ^^^^ | note: parameter used here --> optd-datafusion/src/converter/from_optd.rs:152:28 | 152 | let left = self.conv_optd_to_df_scalar(&and.left, context); | ^^^^ 153 | let right = self.conv_optd_to_df_scalar(&and.right, context); | ^^^^ ... 158 | let left = self.conv_optd_to_df_scalar(&add.left, context); | ^^^^ 159 | let right = self.conv_optd_to_df_scalar(&add.right, context); | ^^^^ ... 164 | let left = self.conv_optd_to_df_scalar(&equal.left, context); | ^^^^ 165 | let right = self.conv_optd_to_df_scalar(&equal.right, context); | ^^^^ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion = note: `#[warn(clippy::only_used_in_recursion)]` on by default
[clippy] optd-datafusion/src/converter/into_optd.rs#L42: optd-datafusion/src/converter/into_optd.rs#L42
warning: using `clone` on type `Option<bool>` which implements the `Copy` trait --> optd-datafusion/src/converter/into_optd.rs:42:48 | 42 | value: OptdValue::Bool(val.clone().unwrap()), | ^^^^^^^^^^^ help: try dereferencing it: `(*val)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy = note: `#[warn(clippy::clone_on_copy)]` on by default
[clippy] optd-datafusion/src/converter/into_optd.rs#L46: optd-datafusion/src/converter/into_optd.rs#L46
warning: using `clone` on type `Option<i64>` which implements the `Copy` trait --> optd-datafusion/src/converter/into_optd.rs:46:77 | 46 | ScalarOperator::Constant(Constant::new(OptdValue::Int64(val.clone().unwrap()))) | ^^^^^^^^^^^ help: try dereferencing it: `(*val)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
[clippy] optd-datafusion/src/converter/into_optd.rs#L28: optd-datafusion/src/converter/into_optd.rs#L28
warning: parameter is only used in recursion --> optd-datafusion/src/converter/into_optd.rs:28:10 | 28 | &self, | ^^^^ | note: parameter used here --> optd-datafusion/src/converter/into_optd.rs:54:28 | 54 | let left = self.conv_df_to_optd_scalar(&binary_expr.left, context, col_offset)?; | ^^^^ 55 | let right = self.conv_df_to_optd_scalar(&binary_expr.right, context, col_offset)?; | ^^^^ ... 64 | return self.conv_df_to_optd_scalar(&cast.expr, context, col_offset); | ^^^^ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion
[clippy] optd-datafusion/src/converter/into_optd.rs#L97: optd-datafusion/src/converter/into_optd.rs#L97
warning: returning the result of a `let` binding from a block --> optd-datafusion/src/converter/into_optd.rs:105:17 | 97 | / let filter = LogicalOperator::Filter(Filter { 98 | | child: self.conv_df_to_optd_relational(&df_filter.input)?, 99 | | predicate: self.conv_df_to_optd_scalar( 100 | | &df_filter.predicate, ... | 103 | | )?, 104 | | }); | |___________________- unnecessary `let` binding 105 | filter | ^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return = note: `#[warn(clippy::let_and_return)]` on by default help: return the expression directly | 97 ~ 98 ~ LogicalOperator::Filter(Filter { 99 + child: self.conv_df_to_optd_relational(&df_filter.input)?, 100 + predicate: self.conv_df_to_optd_scalar( 101 + &df_filter.predicate, 102 + df_filter.input.schema(), 103 + 0, 104 + )?, 105 + }) |
[clippy] optd-datafusion/src/converter/into_optd.rs#L125: optd-datafusion/src/converter/into_optd.rs#L125
warning: returning the result of a `let` binding from a block --> optd-datafusion/src/converter/into_optd.rs:131:17 | 125 | / let join = LogicalOperator::Join(Join::new( 126 | | &join.join_type.to_string(), 127 | | self.conv_df_to_optd_relational(&join.left)?, 128 | | self.conv_df_to_optd_relational(&join.right)?, 129 | | Self::flatten_scalar_as_conjunction(join_cond, 0), 130 | | )); | |___________________- unnecessary `let` binding 131 | join | ^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return help: return the expression directly | 125 ~ 126 ~ LogicalOperator::Join(Join::new( 127 + &join.join_type.to_string(), 128 + self.conv_df_to_optd_relational(&join.left)?, 129 + self.conv_df_to_optd_relational(&join.right)?, 130 + Self::flatten_scalar_as_conjunction(join_cond, 0), 131 + )) |
[clippy] optd-datafusion/src/converter/into_optd.rs#L162: optd-datafusion/src/converter/into_optd.rs#L162
warning: returning the result of a `let` binding from a block --> optd-datafusion/src/converter/into_optd.rs:167:17 | 162 | / let project = LogicalOperator::Project(Project { 163 | | child: input, 164 | | fields: exprs, 165 | | }); | |___________________- unnecessary `let` binding 166 | 167 | project | ^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return help: return the expression directly | 162 ~ 163 | 164 ~ LogicalOperator::Project(Project { 165 + child: input, 166 + fields: exprs, 167 + }) |
[clippy] optd-datafusion/src/planner.rs#L80: optd-datafusion/src/planner.rs#L80
warning: empty line after doc comment --> optd-datafusion/src/planner.rs:52:5 | 52 | / /// * `PhysicalPlan` - The optimized physical plan. ... | 79 | | | |_^ 80 | / pub async fn mock_optimize( 81 | | &self, 82 | | logical_plan: &LogicalPlan, 83 | | ) -> anyhow::Result<Arc<PhysicalPlan>> { | |__________________________________________- the comment documents this method | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default = help: if the empty line is unintentional remove it help: if the doc comment should not document `mock_optimize` comment it out | 31 ~ // /// A mock optimization function for testing purposes. 32 ~ // /// 33 ~ // /// This function takes a logical plan, and for each node in the logical plan, it will 34 ~ // /// recursively traverse the node and its children and replace the node with a physical 35 ~ // /// operator. The physical operator is chosen based on the type of the logical operator. 36 ~ // /// For example, if the logical operator is a scan, the physical operator will be a 37 ~ // /// TableScan, if the logical operator is a filter, the physical operator will be a 38 ~ // /// Filter, and so on. 39 ~ // /// 40 ~ // /// The physical operators are chosen in a way that they mirror the structure of the 41 ~ // /// logical plan, but they are not actually optimized in any way. This is useful for 42 ~ // /// testing purposes, as it allows us to test the structure of the physical plan without 43 ~ // /// having to worry about the actual optimization process. 44 ~ // /// 45 ~ // /// The function returns a PhysicalPlan, which is a struct that contains the root node of 46 ~ // /// the physical plan. 47 ~ // /// 48 ~ // /// # Arguments 49 ~ // /// * `logical_plan` - The logical plan to optimize. 50 ~ // /// 51 ~ // /// # Returns 52 ~ // /// * `PhysicalPlan` - The optimized physical plan. |