Skip to content

Commit c875284

Browse files
Fix MSSQL decoding large unsigned u32 & u16
Tracking in #14
1 parent 438f815 commit c875284

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

sqlx-core/src/mssql/types/int.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ fn decode_numeric(bytes: &[u8], _precision: u8, mut scale: u8) -> Result<i64, Bo
172172
Ok(n * if negative { -1 } else { 1 })
173173
}
174174

175-
fn convert_integer<T>(i64_val: i64) -> Result<T, BoxDynError>
175+
pub(super) fn convert_integer<T>(i64_val: i64) -> Result<T, BoxDynError>
176176
where
177177
T: TryFrom<i64>,
178178
T::Error: std::error::Error + Send + Sync + 'static,

sqlx-core/src/mssql/types/uint.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ impl Encode<'_, Mssql> for u16 {
5353

5454
impl Decode<'_, Mssql> for u16 {
5555
fn decode(value: MssqlValueRef<'_>) -> Result<Self, BoxDynError> {
56-
let v = <i16 as Decode<'_, Mssql>>::decode(value)?;
57-
Ok(u16::try_from(v)?)
56+
let i64_val = <i64 as Decode<Mssql>>::decode(value)?;
57+
super::int::convert_integer::<Self>(i64_val)
5858
}
5959
}
6060

@@ -80,8 +80,8 @@ impl Encode<'_, Mssql> for u32 {
8080

8181
impl Decode<'_, Mssql> for u32 {
8282
fn decode(value: MssqlValueRef<'_>) -> Result<Self, BoxDynError> {
83-
let v = <i32 as Decode<'_, Mssql>>::decode(value)?;
84-
Ok(u32::try_from(v)?)
83+
let i64_val = <i64 as Decode<Mssql>>::decode(value)?;
84+
super::int::convert_integer::<Self>(i64_val)
8585
}
8686
}
8787

0 commit comments

Comments
 (0)