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]