You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@arrow.apache.org by GitBox <gi...@apache.org> on 2022/06/19 03:27:27 UTC

[GitHub] [arrow-datafusion] viirya commented on a diff in pull request #2713: feat: async extension planner

viirya commented on code in PR #2713:
URL: https://github.com/apache/arrow-datafusion/pull/2713#discussion_r901041247


##########
datafusion/core/src/physical_plan/planner.rs:
##########
@@ -963,22 +964,28 @@ impl DefaultPhysicalPlanner {
                         .try_collect::<Vec<_>>()
                         .await?;
 
-                    let maybe_plan = self.extension_planners.iter().try_fold(
-                        None,
-                        |maybe_plan, planner| {
-                            if let Some(plan) = maybe_plan {
-                                Ok(Some(plan))
-                            } else {
-                                planner.plan_extension(
-                                    self,
-                                    e.node.as_ref(),
-                                    &e.node.inputs(),
-                                    &physical_inputs,
-                                    session_state,
-                                )
-                            }
-                        },
-                    )?;
+
+                    let mut maybe_plan = None;
+                    for planner in &self.extension_planners{
+                        if maybe_plan.is_some(){
+                            break;
+                        }

Review Comment:
   ```suggestion
                       for planner in &self.extension_planners {
                           if maybe_plan.is_some() {
                               break;
                           }
   ```



##########
datafusion/core/src/physical_plan/planner.rs:
##########
@@ -963,22 +964,28 @@ impl DefaultPhysicalPlanner {
                         .try_collect::<Vec<_>>()
                         .await?;
 
-                    let maybe_plan = self.extension_planners.iter().try_fold(
-                        None,
-                        |maybe_plan, planner| {
-                            if let Some(plan) = maybe_plan {
-                                Ok(Some(plan))
-                            } else {
-                                planner.plan_extension(
-                                    self,
-                                    e.node.as_ref(),
-                                    &e.node.inputs(),
-                                    &physical_inputs,
-                                    session_state,
-                                )
-                            }
-                        },
-                    )?;
+
+                    let mut maybe_plan = None;
+                    for planner in &self.extension_planners{
+                        if maybe_plan.is_some(){
+                            break;
+                        }
+
+                    let logical_input = e.node.inputs();
+                        let plan =  planner.plan_extension(

Review Comment:
   ```suggestion
                       let logical_input = e.node.inputs();
                       let plan =  planner.plan_extension(
   ```



##########
datafusion/core/src/physical_plan/planner.rs:
##########
@@ -963,22 +964,28 @@ impl DefaultPhysicalPlanner {
                         .try_collect::<Vec<_>>()
                         .await?;
 
-                    let maybe_plan = self.extension_planners.iter().try_fold(
-                        None,
-                        |maybe_plan, planner| {
-                            if let Some(plan) = maybe_plan {
-                                Ok(Some(plan))
-                            } else {
-                                planner.plan_extension(
-                                    self,
-                                    e.node.as_ref(),
-                                    &e.node.inputs(),
-                                    &physical_inputs,
-                                    session_state,
-                                )
-                            }
-                        },
-                    )?;
+
+                    let mut maybe_plan = None;
+                    for planner in &self.extension_planners{
+                        if maybe_plan.is_some(){
+                            break;
+                        }
+
+                    let logical_input = e.node.inputs();
+                        let plan =  planner.plan_extension(
+                            self,
+                            e.node.as_ref(),
+                            &logical_input,
+                            &physical_inputs,
+                            session_state,
+                        );
+                        let plan = plan.await;
+                        if plan.is_err(){
+                            continue;
+                        }

Review Comment:
   ```suggestion
                           if plan.is_err() {
                               continue;
                           }
   ```



-- 
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-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org