Enum datafusion::common::DataFusionError

source ·
pub enum DataFusionError {
Show 15 variants ArrowError(ArrowError, Option<String>), ParquetError(ParquetError), ObjectStore(Error), 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 + Sync + Send>), 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

§

ParquetError(ParquetError)

Error when reading / writing Parquet data.

§

ObjectStore(Error)

Error when reading / writing to / from an object_store (e.g. S3 or LocalFile)

§

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 + Sync + Send>)

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

source

pub fn find_root(&self) -> &DataFusionError

Get deepest underlying DataFusionError

DataFusionErrors 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.

source

pub fn context(self, description: impl Into<String>) -> DataFusionError

wraps self in Self::Context with a description

source

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”

source

pub fn get_back_trace() -> String

To enable optional rust backtrace in DataFusion:

Example: cargo build –features ‘backtrace’ RUST_BACKTRACE=1 ./app

source

pub fn message(&self) -> Cow<'_, str>

Trait Implementations§

source§

impl Debug for DataFusionError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Display for DataFusionError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Error for DataFusionError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<ArrowError> for DataFusionError

source§

fn from(e: ArrowError) -> DataFusionError

Converts to this type from the input type.
source§

impl From<Box<dyn Error + Sync + Send>> for DataFusionError

source§

fn from(err: Box<dyn Error + Sync + Send>) -> DataFusionError

Converts to this type from the input type.
source§

impl From<BuilderError> for DataFusionError

source§

fn from(e: BuilderError) -> DataFusionError

Converts to this type from the input type.
source§

impl From<DataFusionError> for ArrowError

source§

fn from(e: DataFusionError) -> ArrowError

Converts to this type from the input type.
source§

impl From<Error> for DataFusionError

source§

fn from(_e: Error) -> DataFusionError

Converts to this type from the input type.
source§

impl From<Error> for DataFusionError

source§

fn from(e: Error) -> DataFusionError

Converts to this type from the input type.
source§

impl From<Error> for DataFusionError

source§

fn from(e: Error) -> DataFusionError

Converts to this type from the input type.
source§

impl From<Error> for DataFusionError

source§

fn from(e: Error) -> DataFusionError

Converts to this type from the input type.
source§

impl From<ParquetError> for DataFusionError

source§

fn from(e: ParquetError) -> DataFusionError

Converts to this type from the input type.
source§

impl From<ParserError> for DataFusionError

source§

fn from(e: ParserError) -> DataFusionError

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> AsErrorSource for T
where T: Error + 'static,

source§

fn as_error_source(&self) -> &(dyn Error + 'static)

For maximum effectiveness, this needs to be called as a method to benefit from Rust’s automatic dereferencing of method receivers.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V