#[non_exhaustive]pub enum SchemaCompatibilityError {
Show 17 variants
MissingTableSchema,
MissingColumn {
column: String,
},
MissingIndexColumn {
column: String,
},
MissingEntityColumn {
column: String,
},
UnsupportedEntityColumnType {
column: String,
actual: LogicalDataType,
},
EntityIdentityArityMismatch {
expected: usize,
actual: usize,
},
EntityIdentityTypeMismatch {
column: String,
expected: LogicalDataType,
actual: &'static str,
},
ExtraColumn {
column: String,
},
MissingIncomingColumn {
column: String,
},
ExtraIncomingColumn {
column: String,
},
DuplicateIncomingColumn {
column: String,
},
IncomingNullabilityMismatch {
column: String,
table_nullable: bool,
incoming_nullable: bool,
},
IncomingTypeMismatch {
column: String,
table_type: DataType,
incoming_type: DataType,
},
RegisteredSchemaConversion {
source: Box<LogicalToArrowSchemaError>,
},
TypeMismatch {
column: String,
table_type: LogicalDataType,
segment_type: LogicalDataType,
},
IndexColumnTypeMismatch {
column: String,
table_type: LogicalDataType,
segment_type: LogicalDataType,
},
IndexKindMismatch {
column: String,
expected: &'static str,
actual: LogicalDataType,
},
}Expand description
Errors raised when a segment’s schema is not compatible with the table.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
MissingTableSchema
The table does not yet have a canonical logical schema.
Many call sites (like append) may choose to not use this and instead adopt the first segment’s schema, but we keep the error available for operations that require a fixed schema.
MissingColumn
The segment is missing a column that exists in the table schema.
MissingIndexColumn
The logical schema does not contain the registered index column.
MissingEntityColumn
The logical schema does not contain a configured entity column.
UnsupportedEntityColumnType
A configured entity column has an unsupported logical type.
Fields
actual: LogicalDataTypeUnsupported logical type.
EntityIdentityArityMismatch
A persisted single-entity identity has the wrong component count.
Fields
EntityIdentityTypeMismatch
A persisted entity component has the wrong scalar type.
Fields
expected: LogicalDataTypeLogical type required by the table schema.
ExtraColumn
The segment has an extra column that does not exist in the table schema.
MissingIncomingColumn
An incoming Arrow schema is missing a registered table column.
ExtraIncomingColumn
An incoming Arrow schema contains an unregistered column.
DuplicateIncomingColumn
An incoming Arrow schema repeats one column name.
IncomingNullabilityMismatch
An incoming Arrow field changes the registered nullability.
Fields
IncomingTypeMismatch
An incoming Arrow type is neither exact nor an allowlisted widening.
Fields
RegisteredSchemaConversion
The registered logical schema cannot be represented as Arrow.
Fields
source: Box<LogicalToArrowSchemaError>The logical-to-Arrow conversion failure.
TypeMismatch
Column exists in both schemas, but the logical type / nullability differ.
Fields
table_type: LogicalDataTypeThe type in the table schema.
segment_type: LogicalDataTypeThe type in the segment schema.
IndexColumnTypeMismatch
Specialized version of TypeMismatch for the ordered index column.
Fields
table_type: LogicalDataTypeThe type in the table schema.
segment_type: LogicalDataTypeThe type in the segment schema.
IndexKindMismatch
The registered index kind disagrees with the logical schema.
Trait Implementations§
Source§impl Debug for SchemaCompatibilityError
impl Debug for SchemaCompatibilityError
Source§impl Display for SchemaCompatibilityError
impl Display for SchemaCompatibilityError
Source§impl Error for SchemaCompatibilityError
impl Error for SchemaCompatibilityError
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 SchemaCompatibilityError
impl ErrorCompat for SchemaCompatibilityError
Source§fn iter_chain(&self) -> ChainCompat<'_, '_> ⓘwhere
Self: AsErrorSource,
fn iter_chain(&self) -> ChainCompat<'_, '_> ⓘwhere
Self: AsErrorSource,
Error::source. Read moreSource§impl From<SchemaCompatibilityError> for CoverageSidecarError
impl From<SchemaCompatibilityError> for CoverageSidecarError
Source§fn from(error: SchemaCompatibilityError) -> Self
fn from(error: SchemaCompatibilityError) -> Self
Source§impl From<SchemaCompatibilityError> for AppendError
impl From<SchemaCompatibilityError> for AppendError
Source§fn from(error: SchemaCompatibilityError) -> Self
fn from(error: SchemaCompatibilityError) -> Self
Source§impl From<SchemaCompatibilityError> for CreateTableError
impl From<SchemaCompatibilityError> for CreateTableError
Source§fn from(error: SchemaCompatibilityError) -> Self
fn from(error: SchemaCompatibilityError) -> Self
Source§impl From<SchemaCompatibilityError> for OptimizeError
impl From<SchemaCompatibilityError> for OptimizeError
Source§fn from(error: SchemaCompatibilityError) -> Self
fn from(error: SchemaCompatibilityError) -> Self
Auto Trait Implementations§
impl Freeze for SchemaCompatibilityError
impl RefUnwindSafe for SchemaCompatibilityError
impl Send for SchemaCompatibilityError
impl Sync for SchemaCompatibilityError
impl Unpin for SchemaCompatibilityError
impl UnsafeUnpin for SchemaCompatibilityError
impl UnwindSafe for SchemaCompatibilityError
Blanket Implementations§
impl<T> Allocation for T
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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