mirror of
https://github.com/launchbadge/sqlx.git
synced 2025-12-29 21:00:54 +00:00
FIX: int<lenenc> encoding keyword bytes
This commit is contained in:
parent
f3598b1721
commit
18d5fa7ca2
@ -98,8 +98,17 @@ impl Encoder {
|
||||
self.encode_int_2(*value as u16);
|
||||
|
||||
} else if *value <= std::u8::MAX as usize {
|
||||
self.encode_int_1(*value as u8);
|
||||
match *value {
|
||||
// If the value is of size u8 and one of the key bytes used in length encoding
|
||||
// we must encode that single byte as a u16
|
||||
0xFB | 0xFC | 0xFD | 0xFE | 0xFF => {
|
||||
self.buf.put_u8(0xFC);
|
||||
self.buf.put_u8(*value as u8);
|
||||
self.buf.put_u8(0);
|
||||
}
|
||||
|
||||
v => self.buf.put_u8(v as u8),
|
||||
}
|
||||
} else {
|
||||
panic!("Value is too long");
|
||||
}
|
||||
@ -240,6 +249,46 @@ mod tests {
|
||||
assert_eq!(&encoder.buf[..], b"\xFE\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn it_encodes_int_lenenc_fb() {
|
||||
let mut encoder = Encoder::new(128);
|
||||
encoder.encode_int_lenenc(Some(&(0xFB as usize)));
|
||||
|
||||
assert_eq!(&encoder.buf[..], b"\xFC\xFB\x00");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn it_encodes_int_lenenc_fc() {
|
||||
let mut encoder = Encoder::new(128);
|
||||
encoder.encode_int_lenenc(Some(&(0xFC as usize)));
|
||||
|
||||
assert_eq!(&encoder.buf[..], b"\xFC\xFC\x00");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn it_encodes_int_lenenc_fd() {
|
||||
let mut encoder = Encoder::new(128);
|
||||
encoder.encode_int_lenenc(Some(&(0xFD as usize)));
|
||||
|
||||
assert_eq!(&encoder.buf[..], b"\xFC\xFD\x00");
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn it_encodes_int_lenenc_fe() {
|
||||
let mut encoder = Encoder::new(128);
|
||||
encoder.encode_int_lenenc(Some(&(0xFE as usize)));
|
||||
|
||||
assert_eq!(&encoder.buf[..], b"\xFC\xFE\x00");
|
||||
}
|
||||
|
||||
fn it_encodes_int_lenenc_ff() {
|
||||
let mut encoder = Encoder::new(128);
|
||||
encoder.encode_int_lenenc(Some(&(0xFF as usize)));
|
||||
|
||||
assert_eq!(&encoder.buf[..], b"\xFC\xFF\x00");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn it_encodes_int_u64() {
|
||||
let mut encoder = Encoder::new(128);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user