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

jonah pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new 5316278cea propagate error instead of panicking on out of bounds in 
physical-expr/src/analysis.rs  (#10992)
5316278cea is described below

commit 5316278ceac6743fde8dfc94880eb63d0c4c3d2e
Author: Lorrens Pantelis <[email protected]>
AuthorDate: Thu Jun 20 17:39:49 2024 +0200

    propagate error instead of panicking on out of bounds in 
physical-expr/src/analysis.rs  (#10992)
    
    * propogate error instead of panicking
    
    * use macro for creating internal df error
---
 datafusion/physical-expr/src/analysis.rs | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/datafusion/physical-expr/src/analysis.rs 
b/datafusion/physical-expr/src/analysis.rs
index ca25bfd647..e7b199af37 100644
--- a/datafusion/physical-expr/src/analysis.rs
+++ b/datafusion/physical-expr/src/analysis.rs
@@ -27,7 +27,9 @@ use crate::PhysicalExpr;
 
 use arrow::datatypes::Schema;
 use datafusion_common::stats::Precision;
-use datafusion_common::{internal_err, ColumnStatistics, Result, ScalarValue};
+use datafusion_common::{
+    internal_datafusion_err, internal_err, ColumnStatistics, Result, 
ScalarValue,
+};
 use datafusion_expr::interval_arithmetic::{cardinality_ratio, Interval};
 
 /// The shared context used during the analysis of an expression. Includes
@@ -92,7 +94,13 @@ impl ExprBoundaries {
         col_stats: &ColumnStatistics,
         col_index: usize,
     ) -> Result<Self> {
-        let field = &schema.fields()[col_index];
+        let field = schema.fields().get(col_index).ok_or_else(|| {
+            internal_datafusion_err!(
+                "Could not create `ExprBoundaries`: in `try_from_column` 
`col_index` 
+                has gone out of bounds with a value of {col_index}, the schema 
has {} columns.",
+                schema.fields.len()
+            )
+        })?;
         let empty_field =
             
ScalarValue::try_from(field.data_type()).unwrap_or(ScalarValue::Null);
         let interval = Interval::try_new(


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to