vbarua commented on code in PR #13931: URL: https://github.com/apache/datafusion/pull/13931#discussion_r1899693626
########## datafusion/substrait/src/logical_plan/producer.rs: ########## @@ -185,257 +501,290 @@ pub fn to_substrait_extended_expr( })) } -/// Convert DataFusion LogicalPlan to Substrait Rel -#[allow(deprecated)] pub fn to_substrait_rel( + producer: &mut impl SubstraitProducer, plan: &LogicalPlan, - state: &dyn SubstraitPlanningState, - extensions: &mut Extensions, ) -> Result<Box<Rel>> { match plan { - LogicalPlan::TableScan(scan) => { - let projection = scan.projection.as_ref().map(|p| { - p.iter() - .map(|i| StructItem { - field: *i as i32, - child: None, - }) - .collect() - }); + LogicalPlan::Projection(plan) => producer.consume_projection(plan), + LogicalPlan::Filter(plan) => producer.consume_filter(plan), + LogicalPlan::Window(plan) => producer.consume_window(plan), + LogicalPlan::Aggregate(plan) => producer.consume_aggregate(plan), + LogicalPlan::Sort(plan) => producer.consume_sort(plan), + LogicalPlan::Join(plan) => producer.consume_join(plan), + LogicalPlan::Repartition(plan) => producer.consume_repartition(plan), + LogicalPlan::Union(plan) => producer.consume_union(plan), + LogicalPlan::TableScan(plan) => producer.consume_table_scan(plan), + LogicalPlan::EmptyRelation(plan) => producer.consume_empty_relation(plan), + LogicalPlan::SubqueryAlias(plan) => producer.consume_subquery_alias(plan), + LogicalPlan::Limit(plan) => producer.consume_limit(plan), + LogicalPlan::Values(plan) => producer.consume_values(plan), + LogicalPlan::Distinct(plan) => producer.consume_distinct(plan), + LogicalPlan::Extension(plan) => producer.consume_extension(plan), + _ => not_impl_err!("Unsupported plan type: {plan:?}")?, + } +} - let projection = projection.map(|struct_items| MaskExpression { - select: Some(StructSelect { struct_items }), - maintain_singular_struct: false, - }); +pub fn from_table_scan( + _producer: &mut impl SubstraitProducer, Review Comment: > since there's a risk it won't be used :) Looking at this again, the presences of the `filter` field on the TableScan https://github.com/apache/datafusion/blob/fb1d4bcf6f500a7689999606f49a4ffc1802bcaa/datafusion/expr/src/logical_plan/plan.rs#L2496 means that we can upgrade my "likely" to 100% as we'll need the producer to convert the filter expressions. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org For additional commands, e-mail: github-h...@datafusion.apache.org