odbc_api

Enum Error

Source
pub enum Error {
    FailedSettingConnectionPooling,
    FailedAllocatingEnvironment,
    NoDiagnostics {
        function: &'static str,
    },
    Diagnostics {
        record: Record,
        function: &'static str,
    },
    AbortedConnectionStringCompletion,
    UnsupportedOdbcApiVersion(Record),
    FailedReadingInput(Error),
    InvalidRowArraySize {
        record: Record,
        size: usize,
    },
    UnableToRepresentNull(Record),
    OracleOdbcDriverDoesNotSupport64Bit(Record),
    TooLargeColumnBufferSize {
        buffer_index: u16,
        num_elements: usize,
        element_size: usize,
    },
    TooLargeValueForBuffer {
        indicator: Option<usize>,
        buffer_index: usize,
    },
}
Expand description

Error type used to indicate a low level ODBC call returned with SQL_ERROR.

Variants§

§

FailedSettingConnectionPooling

Setting connection pooling option failed. Exclusively emitted by crate::Environment::set_connection_pooling.

§

FailedAllocatingEnvironment

Allocating the environment itself fails. Further diagnostics are not available, as they would be retrieved using the envirorment handle. Exclusively emitted by crate::Environment::new.

§

NoDiagnostics

This should never happen, given that ODBC driver manager and ODBC driver do not have any Bugs. Since we may link vs a bunch of these, better to be on the safe side.

Fields

§function: &'static str

ODBC API call which returned error without producing a diagnostic record.

§

Diagnostics

SQL Error had been returned by a low level ODBC function call. A Diagnostic record is obtained and associated with this error.

Fields

§record: Record

Diagnostic record returned by the ODBC driver manager

§function: &'static str

ODBC API call which produced the diagnostic record

§

AbortedConnectionStringCompletion

A user dialog to complete the connection string has been aborted.

§

UnsupportedOdbcApiVersion(Record)

An error returned if we fail to set the ODBC version

§

FailedReadingInput(Error)

An error emitted by an std::io::ReadBuf implementation used as an input argument.

§

InvalidRowArraySize

Driver returned “invalid attribute” then setting the row array size. Most likely the array size is too large. Instead of returing “option value changed (SQLSTATE 01S02)” as suggested in https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlsetstmtattr-function the driver returned an error instead.

Fields

§record: Record
§size: usize
§

UnableToRepresentNull(Record)

§

OracleOdbcDriverDoesNotSupport64Bit(Record)

There are plenty of issues in the net about Oracle ODBC driver not supporting 64Bit. This message, should make it easier identify what is going on, since the message emmitted by, Oracles ODBC driver is a bit cryptic: [Oracle][ODBC]Invalid SQL data type <-25>.

§

TooLargeColumnBufferSize

Fields

§buffer_index: u16

Zero based column buffer index. Note that this is different from the 1 based column index.

§num_elements: usize
§element_size: usize

usize::MAX may be used to indicate a missing aupper bound of an element.

§

TooLargeValueForBuffer

Fields

§indicator: Option<usize>

Length of the complete value in bytes as reported by the ODBC driver. If the length is not known, this is None.

§buffer_index: usize

Index of the buffer in which the truncation occurred.

Trait Implementations§

Source§

impl Debug for Error

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for Error

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for Error

1.30.0 · Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more

Auto Trait Implementations§

§

impl Freeze for Error

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.