You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ag...@apache.org on 2020/08/22 18:17:49 UTC
[arrow] branch master updated: ARROW-9831: [Rust][DataFusion] Fixed
compilation error
This is an automated email from the ASF dual-hosted git repository.
agrove pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 0a698c0 ARROW-9831: [Rust][DataFusion] Fixed compilation error
0a698c0 is described below
commit 0a698c06d1e49976133cb64681d627faf8967511
Author: Jorge C. Leitao <jo...@gmail.com>
AuthorDate: Sat Aug 22 12:17:22 2020 -0600
ARROW-9831: [Rust][DataFusion] Fixed compilation error
@andygrove , the commit that we just merged to master was not aligned with master, causing the code to fail to compile :(
This fixes the compilation, but there are still failing tests. I am working on them...
Closes #8026 from jorgecarleitao/fix_test
Authored-by: Jorge C. Leitao <jo...@gmail.com>
Signed-off-by: Andy Grove <an...@gmail.com>
---
.../datafusion/src/optimizer/projection_push_down.rs | 20 +++++++++++++-------
rust/datafusion/src/test/mod.rs | 1 -
2 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/rust/datafusion/src/optimizer/projection_push_down.rs b/rust/datafusion/src/optimizer/projection_push_down.rs
index 4ec2fa0..54eee2f 100644
--- a/rust/datafusion/src/optimizer/projection_push_down.rs
+++ b/rust/datafusion/src/optimizer/projection_push_down.rs
@@ -174,16 +174,14 @@ fn optimize_plan(
// Gather all columns needed for expressions in this Aggregate
let mut new_aggr_expr = Vec::new();
- let mut new_fields = Vec::new();
aggr_expr
.iter()
.map(|expr| {
let name = &expr.name(&schema)?;
- let field = schema.field_with_name(name)?;
if required_columns.contains(name) {
new_aggr_expr.push(expr.clone());
- new_fields.push(field.clone());
+ new_required_columns.insert(name.clone());
// add to the new set of required columns
utils::expr_to_column_names(expr, &mut new_required_columns)
@@ -192,7 +190,15 @@ fn optimize_plan(
}
})
.collect::<Result<()>>()?;
- let new_schema = Schema::new(new_fields);
+
+ let new_schema = Schema::new(
+ schema
+ .fields()
+ .iter()
+ .filter(|x| new_required_columns.contains(x.name()))
+ .cloned()
+ .collect(),
+ );
Ok(LogicalPlan::Aggregate {
group_expr: group_expr.clone(),
@@ -303,7 +309,7 @@ fn optimize_plan(
// all other nodes:
// * gather all used columns as required columns
LogicalPlan::Limit { .. }
- | LogicalPlan::Selection { .. }
+ | LogicalPlan::Filter { .. }
| LogicalPlan::EmptyRelation { .. }
| LogicalPlan::Sort { .. }
| LogicalPlan::CreateExternalTable { .. } => {
@@ -486,7 +492,7 @@ mod tests {
let expected = "\
Aggregate: groupBy=[[#c]], aggr=[[MAX(#a)]]\
- \n Selection: #c Gt Int32(1)\
+ \n Filter: #c Gt Int32(1)\
\n Projection: #c, #a\
\n TableScan: test projection=Some([0, 2])";
@@ -537,7 +543,7 @@ mod tests {
let expected = "\
Projection: #c, #a, #MAX(b)\
- \n Selection: #c Gt Int32(1)\
+ \n Filter: #c Gt Int32(1)\
\n Aggregate: groupBy=[[#a, #c]], aggr=[[MAX(#b)]]\
\n TableScan: test projection=Some([0, 1, 2])";
diff --git a/rust/datafusion/src/test/mod.rs b/rust/datafusion/src/test/mod.rs
index ed8f8b6..26d67fe 100644
--- a/rust/datafusion/src/test/mod.rs
+++ b/rust/datafusion/src/test/mod.rs
@@ -235,6 +235,5 @@ pub fn min(expr: Expr) -> Expr {
Expr::AggregateFunction {
name: "MIN".to_owned(),
args: vec![expr],
- return_type: DataType::Float64,
}
}