Skip to main content

ailake_core/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum AilakeError {
5    #[error("unsupported format version: {0}")]
6    UnsupportedFormatVersion(u16),
7
8    #[error("AI-Lake footer magic mismatch: expected AILK, got {0:?}")]
9    InvalidAilakeMagic([u8; 4]),
10
11    #[error("Parquet footer magic mismatch: expected PAR1, got {0:?}")]
12    InvalidParquetMagic([u8; 4]),
13
14    #[error("positional invariant violated: parquet rows {parquet} != HNSW nodes {hnsw}")]
15    RowCountMismatch { parquet: u64, hnsw: u64 },
16
17    #[error("vector dimension mismatch: expected {expected}, got {actual}")]
18    DimensionMismatch { expected: u32, actual: u32 },
19
20    #[error("centroid length mismatch: expected dim={expected_dim}, got {actual} bytes")]
21    InvalidCentroidLength { expected_dim: u32, actual: usize },
22
23    #[error("file is not a valid AI-Lake file (no AILK trailer)")]
24    NotAnAilakeFile,
25
26    #[error("invalid argument: {0}")]
27    InvalidArgument(String),
28
29    #[error("catalog error: {0}")]
30    Catalog(String),
31
32    #[error("store error: {0}")]
33    Store(String),
34
35    #[error("I/O error: {0}")]
36    Io(#[from] std::io::Error),
37
38    #[error("Parquet error: {0}")]
39    Parquet(String),
40
41    #[error("bincode error: {0}")]
42    Bincode(String),
43
44    #[error("Arrow error: {0}")]
45    Arrow(String),
46
47    #[error("JSON error: {0}")]
48    Json(#[from] serde_json::Error),
49}
50
51pub type AilakeResult<T> = Result<T, AilakeError>;