pub enum DataFusionError {
Show 13 variants
ArrowError(ArrowError, Option<String>),
IoError(Error),
SQL(ParserError, Option<String>),
NotImplemented(String),
Internal(String),
Plan(String),
Configuration(String),
SchemaError(SchemaError, Box<Option<String>>),
Execution(String),
ResourcesExhausted(String),
External(Box<dyn Error + Send + Sync>),
Context(String, Box<DataFusionError>),
Substrait(String),
}
Expand description
DataFusion error
Variants§
ArrowError(ArrowError, Option<String>)
Error returned by arrow.
2nd argument is for optional backtrace
IoError(Error)
Error when an I/O operation fails
SQL(ParserError, Option<String>)
Error when SQL is syntactically incorrect.
2nd argument is for optional backtrace
NotImplemented(String)
Error when a feature is not yet implemented.
These errors are sometimes returned for features that are still in development and are not entirely complete. Often, these errors are tracked in our issue tracker.
Internal(String)
Error due to bugs in DataFusion
This error should not happen in normal usage of DataFusion. It results from something that wasn’t expected/anticipated by the implementation and that is most likely a bug (the error message even encourages users to open a bug report). A user should not be able to trigger internal errors under normal circumstances by feeding in malformed queries, bad data, etc.
Note that I/O errors (or any error that happens due to external systems)
do NOT fall under this category. See other variants such as
Self::IoError
and Self::External
.
DataFusions has internal invariants that the compiler is not always able to check. This error is raised when one of those invariants does not hold for some reason.
Plan(String)
Error during planning of the query.
This error happens when the user provides a bad query or plan, for example the user attempts to call a function that doesn’t exist, or if the types of a function call are not supported.
Configuration(String)
Error for invalid or unsupported configuration options.
SchemaError(SchemaError, Box<Option<String>>)
Error when there is a problem with the query related to schema.
This error can be returned in cases such as when schema inference is not possible and when column names are not unique.
2nd argument is for optional backtrace Boxing the optional backtrace to prevent https://rust-lang.github.io/rust-clippy/master/index.html#/result_large_err
Execution(String)
Error during execution of the query.
This error is returned when an error happens during execution due to a malformed input. For example, the user passed malformed arguments to a SQL method, opened a CSV file that is broken, or tried to divide an integer by zero.
ResourcesExhausted(String)
Error when resources (such as memory of scratch disk space) are exhausted.
This error is thrown when a consumer cannot acquire additional memory or other resources needed to execute the query from the Memory Manager.
External(Box<dyn Error + Send + Sync>)
Errors originating from outside DataFusion’s core codebase.
For example, a custom S3Error from the crate datafusion-objectstore-s3
Context(String, Box<DataFusionError>)
Error with additional context
Substrait(String)
Errors from either mapping LogicalPlans to/from Substrait plans or serializing/deserializing protobytes to Substrait plans
Implementations§
source§impl DataFusionError
impl DataFusionError
sourcepub const BACK_TRACE_SEP: &'static str = "\n\nbacktrace: "
pub const BACK_TRACE_SEP: &'static str = "\n\nbacktrace: "
The separator between the error message and the backtrace
sourcepub fn find_root(&self) -> &Self
pub fn find_root(&self) -> &Self
Get deepest underlying DataFusionError
DataFusionError
s sometimes form a chain, such as DataFusionError::ArrowError()
in order to conform
to the correct error signature. Thus sometimes there is a chain several layers deep that can obscure the
original error. This function finds the lowest level DataFusionError possible.
For example, find_root
will returnDataFusionError::ResourceExhausted
given the input
DataFusionError::ArrowError
ArrowError::External
Box(DataFusionError::Context)
DataFusionError::ResourceExhausted
This may be the same as self
.
sourcepub fn context(self, description: impl Into<String>) -> Self
pub fn context(self, description: impl Into<String>) -> Self
wraps self in Self::Context with a description
sourcepub fn strip_backtrace(&self) -> String
pub fn strip_backtrace(&self) -> String
Strips backtrace out of the error message
If backtrace enabled then error has a format “message” Self::BACK_TRACE_SEP
“backtrace”
The method strips the backtrace and outputs “message”
sourcepub fn get_back_trace() -> String
pub fn get_back_trace() -> String
To enable optional rust backtrace in DataFusion:
- [
Setup Env Variables
]https://doc.rust-lang.org/std/backtrace/index.html#environment-variables - Enable
backtrace
cargo feature
Example: cargo build –features ‘backtrace’ RUST_BACKTRACE=1 ./app