timeseries_table_format/table/operations/coverage/
error.rs1use snafu::{Backtrace, Snafu};
2
3use crate::{
4 coverage::{
5 EntityIdentityError, index_interval::IndexIntervalMappingError, io::CoverageSidecarError,
6 },
7 metadata::{index::IndexValueError, schema_compat::SchemaCompatibilityError},
8};
9
10#[derive(Debug, Snafu)]
12#[snafu(visibility(pub(super)))]
13#[non_exhaustive]
14pub enum CoverageQueryError {
15 #[snafu(display("Invalid coverage query range: {source}"))]
17 InvalidRange {
18 source: IndexValueError,
20 backtrace: Box<Backtrace>,
22 },
23
24 #[snafu(display("Coverage query index interval mapping failed: {source}"))]
26 IndexIntervalMapping {
27 source: IndexIntervalMappingError,
29 backtrace: Box<Backtrace>,
31 },
32
33 #[snafu(display("Invalid coverage query entity identity: {source}"))]
35 InvalidEntityIdentity {
36 source: EntityIdentityError,
38 backtrace: Box<Backtrace>,
40 },
41
42 #[snafu(display("Coverage query schema compatibility error: {source}"))]
44 SchemaCompatibility {
45 #[snafu(source(from(SchemaCompatibilityError, Box::new)), backtrace)]
47 source: Box<SchemaCompatibilityError>,
48 },
49
50 #[snafu(display(
52 "Entity identity is required for coverage queries; configured entity columns: {entity_columns:?}"
53 ))]
54 EntityIdentityRequired {
55 entity_columns: Vec<String>,
57 backtrace: Box<Backtrace>,
59 },
60
61 #[snafu(display("Table has no configured entity columns"))]
63 EntityIdentityNotConfigured {
64 backtrace: Box<Backtrace>,
66 },
67
68 #[snafu(display("Missing entity identity component for column {column}"))]
70 MissingEntityIdentityColumn {
71 column: String,
73 backtrace: Box<Backtrace>,
75 },
76
77 #[snafu(display("Duplicate entity identity component for column {column}"))]
79 DuplicateEntityIdentityColumn {
80 column: String,
82 backtrace: Box<Backtrace>,
84 },
85
86 #[snafu(display("Unexpected entity identity component for column {column}"))]
88 UnexpectedEntityIdentityColumn {
89 column: String,
91 backtrace: Box<Backtrace>,
93 },
94
95 #[snafu(display("Failed to read table coverage sidecar {coverage_path}: {source}"))]
97 CoverageSnapshotRead {
98 coverage_path: String,
100 #[snafu(source(from(CoverageSidecarError, Box::new)), backtrace)]
102 source: Box<CoverageSidecarError>,
103 },
104
105 #[snafu(display("Existing segment {segment_path} is missing coverage_path"))]
107 ExistingSegmentMissingCoverageMetadata {
108 segment_path: String,
110 backtrace: Box<Backtrace>,
112 },
113
114 #[snafu(display(
116 "Failed to recover table coverage from segment {segment_path} sidecar {coverage_path}: {source}"
117 ))]
118 SegmentCoverageSidecarRead {
119 segment_path: String,
121 coverage_path: String,
123 #[snafu(source(from(CoverageSidecarError, Box::new)), backtrace)]
125 source: Box<CoverageSidecarError>,
126 },
127
128 #[snafu(display("Table has segments but no table coverage snapshot pointer"))]
130 MissingTableCoveragePointer {
131 backtrace: Box<Backtrace>,
133 },
134}