sqlx_core/mysql/protocol/statement/
execute.rs1use crate::io::Encode;
2use crate::mysql::protocol::text::ColumnFlags;
3use crate::mysql::protocol::Capabilities;
4use crate::mysql::MySqlArguments;
5
6#[derive(Debug)]
9pub struct Execute<'q> {
10 pub statement: u32,
11 pub arguments: &'q MySqlArguments,
12}
13
14impl<'q> Encode<'_, Capabilities> for Execute<'q> {
15 fn encode_with(&self, buf: &mut Vec<u8>, _: Capabilities) {
16 buf.push(0x17); buf.extend(&self.statement.to_le_bytes());
18 buf.push(0); buf.extend(&1_u32.to_le_bytes()); if !self.arguments.types.is_empty() {
22 buf.extend(&*self.arguments.null_bitmap);
23 buf.push(1); for ty in &self.arguments.types {
26 buf.push(ty.r#type as u8);
27
28 buf.push(if ty.flags.contains(ColumnFlags::UNSIGNED) {
29 0x80
30 } else {
31 0
32 });
33 }
34
35 buf.extend(&*self.arguments.values);
36 }
37 }
38}