Skip to content

Commit 732e82a

Browse files
committed
Improve numeric decoding in MSSQL by handling trailing zeros faster
1 parent 398771b commit 732e82a

File tree

1 file changed

+5
-2
lines changed
  • sqlx-core/src/mssql/types

1 file changed

+5
-2
lines changed

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,12 @@ fn decode_numeric(bytes: &[u8], _precision: u8, mut scale: u8) -> Result<i64, Bo
175175
let mut fixed_bytes = [0u8; 16];
176176
fixed_bytes[0..rest.len()].copy_from_slice(rest);
177177
let mut numerator = u128::from_le_bytes(fixed_bytes);
178-
while scale > 0 {
179-
scale -= 1;
178+
while numerator % 10 == 0 && scale > 0 {
180179
numerator /= 10;
180+
scale -= 1;
181+
}
182+
if scale > 0 {
183+
numerator /= 10u128.pow(scale as u32);
181184
}
182185
let n = i64::try_from(numerator)?;
183186
Ok(n * if negative { -1 } else { 1 })

0 commit comments

Comments
 (0)