2 unstable releases
0.1.0 | Sep 19, 2021 |
---|---|
0.0.0 | Aug 29, 2021 |
#985 in Database interfaces
52 downloads per month
51KB
1.5K
SLoC
Representations and parsing logic for SQLSTATE
return codes.
Examples
Parsing return codes according to the SQL standard:
use sqlstate::standard::{
class::{DataException::DivisionByZero, Warning::PrivilegeNotGranted},
SqlState,
};
assert_eq!("00000".parse::<SqlState>()?, SqlState::Success(None));
assert_eq!("01007".parse::<SqlState>()?, SqlState::Warning(Some(PrivilegeNotGranted)));
// Unknown codes are represented as `Other`
assert_eq!("XX001".parse::<SqlState>()?, SqlState::Other(String::from("XX001")));
Examining the pieces of a return code:
use sqlstate::standard::{class::Warning::PrivilegeNotGranted, SqlState};
let success = SqlState::Success(None);
let warning = SqlState::Warning(Some(PrivilegeNotGranted));
assert_eq!((success.class(), success.subclass()), ("00", None));
assert_eq!((warning.class(), warning.subclass()), ("01", Some("007")));
Parsing return codes specific to PostgreSQL:
use sqlstate::{
postgres::{
class::{
DataException::InvalidJsonText, InternalError::DataCorrupted,
OperatorIntervention::CrashShutdown,
},
SqlState::*,
},
standard,
PostgresSqlState,
};
assert_eq!("22032".parse::<PostgresSqlState>()?,
PostgresSqlState::Custom(DataException(Some(InvalidJsonText))));
assert_eq!("XX001".parse::<PostgresSqlState>()?,
PostgresSqlState::Custom(InternalError(Some(DataCorrupted))));
// Can also fall back to standard codes
assert_eq!("00000".parse::<PostgresSqlState>()?,
PostgresSqlState::Standard(standard::SqlState::Success(None)));
Features
postgres
: Enables PostgreSQL-specific types.
Dependencies
~245–700KB
~16K SLoC