pub enum SqlError {
Show 17 variants
Parse {
detail: String,
},
UnknownTable {
name: String,
},
UnknownColumn {
table: String,
column: String,
},
AmbiguousColumn {
column: String,
},
TypeMismatch {
detail: String,
},
Unsupported {
detail: String,
},
InvalidFunction {
detail: String,
},
InvalidWindowFrame {
detail: String,
},
MissingField {
field: String,
context: String,
},
RetryableSchemaChanged {
descriptor: String,
},
ReservedIdentifier {
name: String,
reason: &'static str,
},
UnsupportedConstraint {
feature: String,
hint: String,
},
InvalidRecursiveSetOp {
op: String,
},
InvalidRecursiveSelfRef {
cte_name: String,
reason: String,
},
RecursiveColumnMismatch {
cte_name: String,
anchor_cols: usize,
declared_cols: usize,
},
RecursionDepthExceeded {
cte_name: String,
max_depth: usize,
},
CollectionDeactivated {
name: String,
retention_expires_at_ns: u64,
undrop_hint: String,
},
}Expand description
Errors produced during SQL parsing, resolution, or planning.
Variants§
Parse
UnknownTable
UnknownColumn
AmbiguousColumn
TypeMismatch
Unsupported
InvalidFunction
InvalidWindowFrame
MissingField
RetryableSchemaChanged
A descriptor the planner depends on is being drained by
an in-flight DDL. Callers (pgwire handlers) should retry
the whole statement after a short backoff. Propagated
from SqlCatalogError::RetryableSchemaChanged.
ReservedIdentifier
Identifier is a NodeDB reserved keyword. Use a quoted identifier to bypass.
UnsupportedConstraint
An unsupported SQL constraint was used in a DDL statement.
Rendered as SQLSTATE 0A000 (feature_not_supported). The feature field
names the constraint keyword and hint points to the NodeDB equivalent.
InvalidRecursiveSetOp
WITH RECURSIVE used a set operator other than UNION or UNION ALL.
Only UNION and UNION ALL are permitted in the recursive term of a
WITH RECURSIVE CTE. INTERSECT and EXCEPT are rejected because
they cannot guarantee termination in standard iterative evaluation.
InvalidRecursiveSelfRef
The recursive self-reference is absent, appears more than once, or appears inside a subquery, aggregate, or the nullable side of an outer join.
RecursiveColumnMismatch
The anchor SELECT produces a different number of columns than the column list declared on the CTE (or the recursive arm).
RecursionDepthExceeded
The recursive CTE exceeded the configured max_recursion_depth.
This is a runtime error produced by the executor, not the planner.
CollectionDeactivated
Collection is soft-deleted (within retention window).
Propagated from SqlCatalogError::CollectionDeactivated;
the pgwire layer renders this as sqlstate 42P01 with an
UNDROP COLLECTION <name> hint in the message.
Trait Implementations§
Source§impl Error for SqlError
impl Error for SqlError
1.30.0 · 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 From<ExprParseError> for SqlError
impl From<ExprParseError> for SqlError
Source§fn from(e: ExprParseError) -> Self
fn from(e: ExprParseError) -> Self
Source§impl From<ParserError> for SqlError
impl From<ParserError> for SqlError
Source§fn from(e: ParserError) -> Self
fn from(e: ParserError) -> Self
Source§impl From<SqlCatalogError> for SqlError
impl From<SqlCatalogError> for SqlError
Source§fn from(e: SqlCatalogError) -> Self
fn from(e: SqlCatalogError) -> Self
impl StructuralPartialEq for SqlError
Auto Trait Implementations§
impl Freeze for SqlError
impl RefUnwindSafe for SqlError
impl Send for SqlError
impl Sync for SqlError
impl Unpin for SqlError
impl UnsafeUnpin for SqlError
impl UnwindSafe for SqlError
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.