pub enum TableError {
Show 42 variants
TransactionLog {
source: CommitError,
},
OptimizeNotApplicable {
table_root: String,
},
OptimizeRewrite {
source: EntityRewriteError,
},
OptimizeInvariant {
reason: String,
},
OptimizeCountOverflow {
field: &'static str,
},
OptimizeRollback {
source: Box<TableError>,
cleanup_errors: Vec<String>,
},
AppendRollback {
source: Box<TableError>,
cleanup_errors: Vec<String>,
},
ExternalParquetRollback {
path: String,
source: Box<TableError>,
cleanup_error: StorageError,
},
EmptyTable,
NotTimeSeries {
kind: TableKind,
},
UnsupportedFormatVersion {
expected: u32,
found: u32,
},
AlreadyExists {
current_version: u64,
},
IndexSpec {
source: IndexSpecError,
},
CoverageBucket {
source: BucketError,
},
InvalidSegmentBounds {
source: IndexValueError,
},
SegmentMeta {
source: SegmentError,
},
SchemaCompatibility {
source: SchemaCompatibilityError,
},
SegmentSchemaCompatibility {
path: String,
source: SchemaCompatibilityError,
},
MissingCanonicalSchema {
version: u64,
},
Storage {
source: StorageError,
},
InvalidRange {
source: IndexValueError,
},
EntityIdentityRequired {
entity_columns: Vec<String>,
},
EntityIdentityNotConfigured,
MissingEntityIdentityColumn {
column: String,
},
DuplicateEntityIdentityColumn {
column: String,
},
UnexpectedEntityIdentityColumn {
column: String,
},
ParquetRead {
path: String,
source: ParquetError,
},
Arrow {
path: String,
column: String,
source: ArrowError,
},
MissingIndexColumn {
path: String,
column: String,
},
IndexColumnTypeMismatch {
path: String,
column: String,
expected: &'static str,
datatype: DataType,
},
TimeConversionOverflow {
path: String,
column: String,
timestamp: DateTime<Utc>,
},
SegmentCoverage {
source: SegmentCoverageError,
},
TableCoverageIndexKindMismatch {
expected: IndexKind,
actual: IndexKind,
pointer_version: u64,
},
CoverageSidecar {
source: CoverageError,
},
CoverageOverlap {
segment_path: String,
overlap_count: u64,
example_bucket: Option<u64>,
example_bucket_range: LogicalBucketRange,
},
EntityCoverageOverlap {
segment_path: String,
overlap_count: u128,
example_identity: EntityIdentity,
example_bucket: u64,
example_bucket_range: LogicalBucketRange,
},
EmptySegmentEntityCoverage {
segment_path: String,
},
EntityWithoutIndexCoverage {
segment_path: String,
identity: EntityIdentity,
},
DuplicateSegmentPath {
path: String,
},
ExistingSegmentMissingCoverage {
path: String,
},
SegmentCoverageSidecarRead {
path: String,
coverage_path: String,
source: Box<CoverageError>,
},
MissingTableCoveragePointer,
}Expand description
Errors from high-level time-series table operations.
Each variant carries enough context for callers to surface actionable messages to users or implement retries where appropriate (for example, conflicts on optimistic concurrency control).
Variants§
TransactionLog
Any error coming from the transaction log / commit machinery (for example, OCC conflicts, storage failures, or corrupt commits).
Fields
source: CommitErrorUnderlying transaction log / commit error.
OptimizeNotApplicable
Entity-layout optimization does not apply to a table without entities.
OptimizeRewrite
Rewriting one mixed source into staged replacements failed.
Fields
source: EntityRewriteErrorStorage-level mixed segment rewrite failure.
OptimizeInvariant
A staged optimization plan violated an atomic publication invariant.
OptimizeCountOverflow
An optimization count could not be represented without wrapping.
OptimizeRollback
Optimization failed and one or more owned staged objects could not be removed.
Fields
source: Box<TableError>Original optimization failure.
AppendRollback
Append failed and one or more owned coverage sidecars could not be removed.
Fields
source: Box<TableError>Original append failure that triggered rollback.
ExternalParquetRollback
Append failed and its provisional external Parquet copy could not be removed.
Fields
source: Box<TableError>Original append failure that triggered rollback.
cleanup_error: StorageErrorStorage failure encountered while removing the provisional copy.
EmptyTable
Attempting to open a table that has no commits at all (CURRENT == 0).
NotTimeSeries
The underlying table is not a time-series table (TableKind mismatch).
UnsupportedFormatVersion
Attempting to create a table with an unsupported metadata format version.
Fields
AlreadyExists
Attempt to create a table where commits already exist (idempotency guard for create).
IndexSpec
The ordered-index specification is structurally invalid.
Fields
source: IndexSpecErrorStructural or bucket configuration failure.
CoverageBucket
An ordered value could not be mapped to its coverage bucket.
Fields
source: BucketErrorDomain, range, or bucket configuration failure.
InvalidSegmentBounds
Segment bounds cannot be ordered in one native index domain.
Fields
source: IndexValueErrorDomain or bound-order failure.
SegmentMeta
Segment-level metadata / Parquet error during append (for example, missing time column, unsupported type, corrupt stats).
Fields
source: SegmentErrorUnderlying segment metadata error.
SchemaCompatibility
Schema compatibility error when appending a segment with incompatible schema (no evolution allowed in v0.1).
Fields
source: SchemaCompatibilityErrorUnderlying schema compatibility error.
SegmentSchemaCompatibility
A segment’s schema is incompatible with the table or index specification.
Fields
source: SchemaCompatibilityErrorUnderlying schema compatibility error.
MissingCanonicalSchema
Table has progressed past the initial metadata commit but still lacks a canonical logical schema (invariant violation for v0.1).
Storage
Storage error while accessing table data (read/write failure at the storage layer).
Fields
source: StorageErrorUnderlying storage error while reading or writing table data.
InvalidRange
Ordered-index range validation failed.
Fields
source: IndexValueErrorDomain, kind, or bound-order failure.
EntityIdentityRequired
An identity-free coverage query was used on an entity-aware table.
EntityIdentityNotConfigured
An entity-aware coverage query was used on a table with global coverage.
MissingEntityIdentityColumn
A required entity column has no caller-provided value.
DuplicateEntityIdentityColumn
Caller input repeats one entity column.
UnexpectedEntityIdentityColumn
Caller input contains a column that is not part of the entity identity.
ParquetRead
Parquet read/IO error during scanning or schema extraction.
Fields
source: ParquetErrorUnderlying Parquet error raised during read or schema extraction.
Arrow
Arrow compute or conversion error while materializing or filtering batches.
Fields
source: ArrowErrorUnderlying Arrow error raised during batch conversion or filtering.
MissingIndexColumn
Segment is missing the configured ordered-index column required for scans.
Fields
IndexColumnTypeMismatch
Ordered-index column has an Arrow type that disagrees with the table index.
Fields
TimeConversionOverflow
Converting a timestamp to the requested unit would overflow i64.
Fields
SegmentCoverage
Segment Coverage error.
Fields
source: SegmentCoverageErrorUnderlying coverage error.
TableCoverageIndexKindMismatch
Table coverage pointer uses a different ordered-index descriptor.
Fields
CoverageSidecar
Coverage sidecar read/write or computation error.
Fields
source: CoverageErrorUnderlying Coverage error.
CoverageOverlap
Appending would overlap existing table coverage.
Fields
example_bucket_range: LogicalBucketRangeLogical ordered-index range covered by the example bucket.
EntityCoverageOverlap
Appending would overlap entity-scoped table coverage.
Fields
example_identity: EntityIdentityFirst overlapping identity in canonical order.
example_bucket_range: LogicalBucketRangeLogical ordered-index range covered by the example bucket.
EmptySegmentEntityCoverage
Entity-aware append produced no entity coverage.
EntityWithoutIndexCoverage
One entity has rows but no usable ordered-index coverage.
Fields
identity: EntityIdentityComplete identity whose rows all have null ordered-index values.
DuplicateSegmentPath
A live segment already uses the normalized path supplied for append.
ExistingSegmentMissingCoverage
Existing segment lacks a coverage_path when coverage is required.
SegmentCoverageSidecarRead
Reading the per-segment coverage sidecar failed while rebuilding coverage.
Fields
source: Box<CoverageError>Underlying coverage error (boxed to keep the variant size small).
MissingTableCoveragePointer
Table state is missing a coverage snapshot pointer when required.
Trait Implementations§
Source§impl Debug for TableError
impl Debug for TableError
Source§impl Display for TableError
impl Display for TableError
Source§impl Error for TableError
impl Error for TableError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl ErrorCompat for TableError
impl ErrorCompat for TableError
Source§fn iter_chain(&self) -> ChainCompat<'_, '_> ⓘwhere
Self: AsErrorSource,
fn iter_chain(&self) -> ChainCompat<'_, '_> ⓘwhere
Self: AsErrorSource,
Error::source. Read moreAuto Trait Implementations§
impl !Freeze for TableError
impl !RefUnwindSafe for TableError
impl !UnwindSafe for TableError
impl Send for TableError
impl Sync for TableError
impl Unpin for TableError
impl UnsafeUnpin for TableError
Blanket Implementations§
Source§impl<T> AsErrorSource for Twhere
T: Error + 'static,
impl<T> AsErrorSource for Twhere
T: Error + 'static,
Source§fn as_error_source(&self) -> &(dyn Error + 'static)
fn as_error_source(&self) -> &(dyn Error + 'static)
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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