This is an automated email from the ASF dual-hosted git repository.

dheres pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git


The following commit(s) were added to refs/heads/master by this push:
     new 3987117fd improve optimizer error (#3403)
3987117fd is described below

commit 3987117fda8260fbe5df352169f63c49eb6a1a13
Author: Andy Grove <[email protected]>
AuthorDate: Thu Sep 8 15:16:41 2022 -0600

    improve optimizer error (#3403)
---
 datafusion/optimizer/src/optimizer.rs | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/datafusion/optimizer/src/optimizer.rs 
b/datafusion/optimizer/src/optimizer.rs
index 9d76cf5e7..9170035b7 100644
--- a/datafusion/optimizer/src/optimizer.rs
+++ b/datafusion/optimizer/src/optimizer.rs
@@ -18,7 +18,7 @@
 //! Query optimizer traits
 
 use chrono::{DateTime, Utc};
-use datafusion_common::Result;
+use datafusion_common::{DataFusionError, Result};
 use datafusion_expr::logical_plan::LogicalPlan;
 use log::{debug, trace, warn};
 use std::sync::Arc;
@@ -120,12 +120,16 @@ impl Optimizer {
                         // bug in the DataFusion optimizer. Please consider 
filing a ticket
                         // https://github.com/apache/arrow-datafusion
                         warn!(
-                            "Skipping optimizer rule {} due to unexpected 
error: {}",
+                            "Skipping optimizer rule '{}' due to unexpected 
error: {}",
                             rule.name(),
                             e
                         );
                     } else {
-                        return result;
+                        return Err(DataFusionError::Internal(format!(
+                            "Optimizer rule '{}' failed due to unexpected 
error: {}",
+                            rule.name(),
+                            e
+                        )));
                     }
                 }
             }
@@ -167,7 +171,9 @@ mod tests {
         });
         let result = opt.optimize(&plan, &mut config, &observe);
         assert_eq!(
-            "Error during planning: rule failed",
+            "Internal error: Optimizer rule 'bad rule' failed due to 
unexpected error: \
+            Error during planning: rule failed. This was likely caused by a 
bug in \
+            DataFusion's code and we would welcome that you file an bug report 
in our issue tracker",
             format!("{}", result.err().unwrap())
         );
         Ok(())

Reply via email to