sqlx_core_oldapi/postgres/message/
query.rs

1use crate::io::{BufMutExt, Encode};
2
3#[derive(Debug)]
4pub struct Query<'a>(pub &'a str);
5
6impl Encode<'_> for Query<'_> {
7    fn encode_with(&self, buf: &mut Vec<u8>, _: ()) {
8        let len = 4 + self.0.len() + 1;
9        let len_i32 = i32::try_from(len).expect("buffer too large");
10        buf.reserve(len + 1);
11        buf.push(b'Q');
12        buf.extend_from_slice(&len_i32.to_be_bytes());
13        buf.put_str_nul(self.0);
14    }
15}
16
17#[test]
18fn test_encode_query() {
19    const EXPECTED: &[u8] = b"Q\0\0\0\rSELECT 1\0";
20
21    let mut buf = Vec::new();
22    let m = Query("SELECT 1");
23
24    m.encode(&mut buf);
25
26    assert_eq!(buf, EXPECTED);
27}