Skip to main content

deltalake_core/kernel/
error.rs

1//! Error types for Delta Lake operations.
2
3use super::DataType;
4
5/// A specialized [`Result`] type for Delta Lake operations.
6pub type DeltaResult<T, E = Error> = std::result::Result<T, E>;
7
8#[derive(thiserror::Error, Debug)]
9#[allow(missing_docs)]
10pub enum Error {
11    #[error("Arrow error: {0}")]
12    Arrow(#[from] arrow_schema::ArrowError),
13
14    #[error("Generic delta kernel error: {0}")]
15    Generic(String),
16
17    #[error("Generic error: {source}")]
18    GenericError {
19        /// Source error
20        source: Box<dyn std::error::Error + Send + Sync + 'static>,
21    },
22
23    #[error("Arrow error: {0}")]
24    Parquet(#[from] parquet::errors::ParquetError),
25
26    #[error("Error interacting with object store: {0}")]
27    ObjectStore(#[from] object_store::Error),
28
29    #[error("File not found: {0}")]
30    FileNotFound(String),
31
32    #[error("{0}")]
33    MissingColumn(String),
34
35    #[error("Expected column type: {0}")]
36    UnexpectedColumnType(String),
37
38    #[error("Expected is missing: {0}")]
39    MissingData(String),
40
41    #[error("No table version found.")]
42    MissingVersion,
43
44    #[error("Deletion Vector error: {0}")]
45    DeletionVector(String),
46
47    #[error("Schema error: {0}")]
48    Schema(String),
49
50    #[error("Invalid url: {0}")]
51    InvalidUrl(#[from] url::ParseError),
52
53    #[error("Invalid url: {0}")]
54    MalformedJson(#[from] serde_json::Error),
55
56    #[error("No table metadata found in delta log.")]
57    MissingMetadata,
58
59    /// Error returned when the log contains invalid stats JSON.
60    #[error("Invalid JSON in invariant expression, line=`{line}`, err=`{json_err}`")]
61    InvalidInvariantJson {
62        /// JSON error details returned when parsing the invariant expression JSON.
63        json_err: serde_json::error::Error,
64        /// Invariant expression.
65        line: String,
66    },
67
68    /// Error returned when the log contains invalid stats JSON.
69    #[error("Invalid JSON in generation expression, line=`{line}`, err=`{json_err}`")]
70    InvalidGenerationExpressionJson {
71        /// JSON error details returned when parsing the generation expression JSON.
72        json_err: serde_json::error::Error,
73        /// Generation expression.
74        line: String,
75    },
76
77    #[error("Table metadata is invalid: {0}")]
78    MetadataError(String),
79
80    #[error("Failed to parse value '{0}' as '{1}'")]
81    Parse(String, DataType),
82}