diff --git a/sqlx-core/src/mysql/connection.rs b/sqlx-core/src/mysql/connection.rs index d9dcb4da..24dc3c4f 100644 --- a/sqlx-core/src/mysql/connection.rs +++ b/sqlx-core/src/mysql/connection.rs @@ -8,7 +8,7 @@ use sha1::Sha1; use crate::connection::{Connect, Connection}; use crate::executor::Executor; use crate::mysql::protocol::{ - AuthPlugin, AuthSwitch, Capabilities, ComPing, Decode, Handshake, HandshakeResponse, + AuthPlugin, AuthSwitch, Capabilities, ComPing, Handshake, HandshakeResponse, }; use crate::mysql::stream::MySqlStream; use crate::mysql::util::xor_eq; @@ -149,7 +149,7 @@ async fn establish(stream: &mut MySqlStream, url: &Url) -> crate::Result<()> { // Read a [Handshake] packet. When connecting to the database server, this is immediately // received from the database server. - let handshake = Handshake::decode(stream.receive().await?)?; + let handshake = Handshake::read(stream.receive().await?)?; let mut auth_plugin = handshake.auth_plugin; let mut auth_plugin_data = handshake.auth_plugin_data; @@ -202,7 +202,7 @@ async fn establish(stream: &mut MySqlStream, url: &Url) -> crate::Result<()> { // AUTH_SWITCH 0xFE => { - let auth = AuthSwitch::decode(packet)?; + let auth = AuthSwitch::read(packet)?; auth_plugin = auth.auth_plugin; auth_plugin_data = auth.auth_plugin_data; diff --git a/sqlx-core/src/mysql/cursor.rs b/sqlx-core/src/mysql/cursor.rs index 936f38d9..7dc8b553 100644 --- a/sqlx-core/src/mysql/cursor.rs +++ b/sqlx-core/src/mysql/cursor.rs @@ -6,7 +6,7 @@ use futures_core::future::BoxFuture; use crate::connection::{ConnectionSource, MaybeOwnedConnection}; use crate::cursor::Cursor; use crate::executor::Execute; -use crate::mysql::protocol::{ColumnCount, ColumnDefinition, Decode, Row, Status, TypeId}; +use crate::mysql::protocol::{ColumnCount, ColumnDefinition, Row, Status, TypeId}; use crate::mysql::{MySql, MySqlArguments, MySqlConnection, MySqlRow}; use crate::pool::Pool; @@ -109,7 +109,7 @@ async fn next<'a, 'c: 'a, 'q: 'a>( // At the start of the results we expect to see a // COLUMN_COUNT followed by N COLUMN_DEF - let cc = ColumnCount::decode(conn.stream.packet())?; + let cc = ColumnCount::read(conn.stream.packet())?; // We use these definitions to get the actual column types that is critical // in parsing the rows coming back soon @@ -120,7 +120,7 @@ async fn next<'a, 'c: 'a, 'q: 'a>( let mut column_names = HashMap::with_capacity(cc.columns as usize); for i in 0..cc.columns { - let column = ColumnDefinition::decode(conn.stream.receive().await?)?; + let column = ColumnDefinition::read(conn.stream.receive().await?)?; cursor.column_types.push(column.type_id); @@ -142,15 +142,12 @@ async fn next<'a, 'c: 'a, 'q: 'a>( conn.stream.packet(), &cursor.column_types, &mut conn.current_row_values, - // TODO: Text mode cursor.binary, )?; let row = MySqlRow { row, columns: Arc::clone(&cursor.column_names), - // TODO: Text mode - binary: cursor.binary, }; return Ok(Some(row)); diff --git a/sqlx-core/src/mysql/executor.rs b/sqlx-core/src/mysql/executor.rs index 5a9a26f1..46800531 100644 --- a/sqlx-core/src/mysql/executor.rs +++ b/sqlx-core/src/mysql/executor.rs @@ -4,7 +4,7 @@ use crate::cursor::Cursor; use crate::describe::{Column, Describe}; use crate::executor::{Execute, Executor, RefExecutor}; use crate::mysql::protocol::{ - self, ColumnDefinition, ComQuery, ComStmtExecute, ComStmtPrepare, ComStmtPrepareOk, Decode, + self, ColumnDefinition, ComQuery, ComStmtExecute, ComStmtPrepare, ComStmtPrepareOk, FieldFlags, Status, }; use crate::mysql::{MySql, MySqlArguments, MySqlCursor, MySqlTypeInfo}; @@ -49,12 +49,12 @@ impl super::MySqlConnection { return self.stream.handle_err(); } - ComStmtPrepareOk::decode(packet) + ComStmtPrepareOk::read(packet) } async fn drop_column_defs(&mut self, count: usize) -> crate::Result<()> { for _ in 0..count { - let _column = ColumnDefinition::decode(self.stream.receive().await?)?; + let _column = ColumnDefinition::read(self.stream.receive().await?)?; } if count > 0 { @@ -168,7 +168,7 @@ impl super::MySqlConnection { let mut result_columns = Vec::with_capacity(stmt.columns as usize); for _ in 0..stmt.params { - let param = ColumnDefinition::decode(self.stream.receive().await?)?; + let param = ColumnDefinition::read(self.stream.receive().await?)?; param_types.push(MySqlTypeInfo::from_column_def(¶m)); } @@ -177,7 +177,7 @@ impl super::MySqlConnection { } for _ in 0..stmt.columns { - let column = ColumnDefinition::decode(self.stream.receive().await?)?; + let column = ColumnDefinition::read(self.stream.receive().await?)?; result_columns.push(Column:: { type_info: MySqlTypeInfo::from_column_def(&column), diff --git a/sqlx-core/src/mysql/protocol/auth_switch.rs b/sqlx-core/src/mysql/protocol/auth_switch.rs index 8c7315be..dfeb95f5 100644 --- a/sqlx-core/src/mysql/protocol/auth_switch.rs +++ b/sqlx-core/src/mysql/protocol/auth_switch.rs @@ -1,17 +1,15 @@ -use byteorder::LittleEndian; - use crate::io::Buf; -use crate::mysql::protocol::{AuthPlugin, Capabilities, Decode, Status}; +use crate::mysql::protocol::{AuthPlugin}; // https://dev.mysql.com/doc/dev/mysql-server/8.0.12/page_protocol_connection_phase_packets_protocol_auth_switch_request.html #[derive(Debug)] -pub struct AuthSwitch { - pub auth_plugin: AuthPlugin, - pub auth_plugin_data: Box<[u8]>, +pub(crate) struct AuthSwitch { + pub(crate) auth_plugin: AuthPlugin, + pub(crate) auth_plugin_data: Box<[u8]>, } -impl Decode for AuthSwitch { - fn decode(mut buf: &[u8]) -> crate::Result +impl AuthSwitch { + pub(crate) fn read(mut buf: &[u8]) -> crate::Result where Self: Sized, { diff --git a/sqlx-core/src/mysql/protocol/column_count.rs b/sqlx-core/src/mysql/protocol/column_count.rs index 85bf0891..3ed537d4 100644 --- a/sqlx-core/src/mysql/protocol/column_count.rs +++ b/sqlx-core/src/mysql/protocol/column_count.rs @@ -1,16 +1,14 @@ use byteorder::LittleEndian; -use crate::io::Buf; use crate::mysql::io::BufExt; -use crate::mysql::protocol::Decode; #[derive(Debug)] pub struct ColumnCount { pub columns: u64, } -impl Decode for ColumnCount { - fn decode(mut buf: &[u8]) -> crate::Result { +impl ColumnCount { + pub(crate) fn read(mut buf: &[u8]) -> crate::Result { let columns = buf.get_uint_lenenc::()?.unwrap_or(0); Ok(Self { columns }) diff --git a/sqlx-core/src/mysql/protocol/column_def.rs b/sqlx-core/src/mysql/protocol/column_def.rs index b3fb6f7c..e20a9e41 100644 --- a/sqlx-core/src/mysql/protocol/column_def.rs +++ b/sqlx-core/src/mysql/protocol/column_def.rs @@ -2,7 +2,7 @@ use byteorder::LittleEndian; use crate::io::Buf; use crate::mysql::io::BufExt; -use crate::mysql::protocol::{Decode, FieldFlags, TypeId}; +use crate::mysql::protocol::{FieldFlags, TypeId}; // https://dev.mysql.com/doc/dev/mysql-server/8.0.12/page_protocol_com_query_response_text_resultset_column_definition.html // https://mariadb.com/kb/en/resultset/#column-definition-packet @@ -33,8 +33,8 @@ impl ColumnDefinition { } } -impl Decode for ColumnDefinition { - fn decode(mut buf: &[u8]) -> crate::Result { +impl ColumnDefinition { + pub(crate) fn read(mut buf: &[u8]) -> crate::Result { // catalog : string let catalog = buf.get_str_lenenc::()?; diff --git a/sqlx-core/src/mysql/protocol/com_ping.rs b/sqlx-core/src/mysql/protocol/com_ping.rs index 8ebfed87..a90ce62b 100644 --- a/sqlx-core/src/mysql/protocol/com_ping.rs +++ b/sqlx-core/src/mysql/protocol/com_ping.rs @@ -1,7 +1,4 @@ -use byteorder::LittleEndian; - use crate::io::BufMut; -use crate::mysql::io::BufMutExt; use crate::mysql::protocol::{Capabilities, Encode}; // https://dev.mysql.com/doc/internals/en/com-ping.html diff --git a/sqlx-core/src/mysql/protocol/com_query.rs b/sqlx-core/src/mysql/protocol/com_query.rs index 512caa71..0a8a2055 100644 --- a/sqlx-core/src/mysql/protocol/com_query.rs +++ b/sqlx-core/src/mysql/protocol/com_query.rs @@ -1,7 +1,4 @@ -use byteorder::LittleEndian; - use crate::io::BufMut; -use crate::mysql::io::BufMutExt; use crate::mysql::protocol::{Capabilities, Encode}; // https://dev.mysql.com/doc/dev/mysql-server/8.0.12/page_protocol_com_query.html diff --git a/sqlx-core/src/mysql/protocol/com_set_option.rs b/sqlx-core/src/mysql/protocol/com_set_option.rs deleted file mode 100644 index 6ce7545c..00000000 --- a/sqlx-core/src/mysql/protocol/com_set_option.rs +++ /dev/null @@ -1,29 +0,0 @@ -use byteorder::LittleEndian; - -use crate::io::BufMut; -use crate::mysql::io::BufMutExt; -use crate::mysql::protocol::{Capabilities, Encode}; - -// https://dev.mysql.com/doc/dev/mysql-server/8.0.12/mysql__com_8h.html#a53f60000da139fc7d547db96635a2c02 -#[derive(Debug, Copy, Clone)] -#[repr(u16)] -pub enum SetOption { - MultiStatementsOn = 0x00, - MultiStatementsOff = 0x01, -} - -// https://dev.mysql.com/doc/internals/en/com-set-option.html -#[derive(Debug)] -pub struct ComSetOption { - pub option: SetOption, -} - -impl Encode for ComSetOption { - fn encode(&self, buf: &mut Vec, _: Capabilities) { - // COM_SET_OPTION : int<1> - buf.put_u8(0x1a); - - // option : int<2> - buf.put_u16::(self.option as u16); - } -} diff --git a/sqlx-core/src/mysql/protocol/com_stmt_execute.rs b/sqlx-core/src/mysql/protocol/com_stmt_execute.rs index 591a7e9a..3c6d36af 100644 --- a/sqlx-core/src/mysql/protocol/com_stmt_execute.rs +++ b/sqlx-core/src/mysql/protocol/com_stmt_execute.rs @@ -1,7 +1,6 @@ use byteorder::LittleEndian; use crate::io::BufMut; -use crate::mysql::io::BufMutExt; use crate::mysql::protocol::{Capabilities, Encode}; use crate::mysql::types::MySqlTypeInfo; @@ -27,7 +26,7 @@ pub struct ComStmtExecute<'a> { } impl Encode for ComStmtExecute<'_> { - fn encode(&self, buf: &mut Vec, capabilities: Capabilities) { + fn encode(&self, buf: &mut Vec, _: Capabilities) { // COM_STMT_EXECUTE : int<1> buf.put_u8(0x17); diff --git a/sqlx-core/src/mysql/protocol/com_stmt_prepare.rs b/sqlx-core/src/mysql/protocol/com_stmt_prepare.rs index 4bb95e1d..74371337 100644 --- a/sqlx-core/src/mysql/protocol/com_stmt_prepare.rs +++ b/sqlx-core/src/mysql/protocol/com_stmt_prepare.rs @@ -1,7 +1,4 @@ -use byteorder::LittleEndian; - use crate::io::BufMut; -use crate::mysql::io::BufMutExt; use crate::mysql::protocol::{Capabilities, Encode}; // https://dev.mysql.com/doc/dev/mysql-server/8.0.12/page_protocol_com_stmt_prepare.html diff --git a/sqlx-core/src/mysql/protocol/com_stmt_prepare_ok.rs b/sqlx-core/src/mysql/protocol/com_stmt_prepare_ok.rs index d2814582..ae34d2b6 100644 --- a/sqlx-core/src/mysql/protocol/com_stmt_prepare_ok.rs +++ b/sqlx-core/src/mysql/protocol/com_stmt_prepare_ok.rs @@ -1,27 +1,25 @@ use byteorder::LittleEndian; use crate::io::Buf; -use crate::mysql::io::BufExt; -use crate::mysql::protocol::Decode; // https://dev.mysql.com/doc/dev/mysql-server/8.0.12/page_protocol_com_stmt_prepare.html#sect_protocol_com_stmt_prepare_response_ok #[derive(Debug)] -pub struct ComStmtPrepareOk { - pub statement_id: u32, +pub(crate) struct ComStmtPrepareOk { + pub(crate) statement_id: u32, /// Number of columns in the returned result set (or 0 if statement /// does not return result set). - pub columns: u16, + pub(crate) columns: u16, /// Number of prepared statement parameters ('?' placeholders). - pub params: u16, + pub(crate) params: u16, /// Number of warnings. - pub warnings: u16, + pub(crate) warnings: u16, } -impl Decode for ComStmtPrepareOk { - fn decode(mut buf: &[u8]) -> crate::Result { +impl ComStmtPrepareOk { + pub(crate) fn read(mut buf: &[u8]) -> crate::Result { let header = buf.get_u8()?; if header != 0x00 { diff --git a/sqlx-core/src/mysql/protocol/decode.rs b/sqlx-core/src/mysql/protocol/decode.rs deleted file mode 100644 index 5a8dd601..00000000 --- a/sqlx-core/src/mysql/protocol/decode.rs +++ /dev/null @@ -1,7 +0,0 @@ -use std::io; - -pub trait Decode { - fn decode(buf: &[u8]) -> crate::Result - where - Self: Sized; -} diff --git a/sqlx-core/src/mysql/protocol/encode.rs b/sqlx-core/src/mysql/protocol/encode.rs deleted file mode 100644 index 154a577c..00000000 --- a/sqlx-core/src/mysql/protocol/encode.rs +++ /dev/null @@ -1,12 +0,0 @@ -use crate::io::BufMut; -use crate::mysql::protocol::Capabilities; - -pub trait Encode { - fn encode(&self, buf: &mut Vec, capabilities: Capabilities); -} - -impl Encode for &'_ [u8] { - fn encode(&self, buf: &mut Vec, _: Capabilities) { - buf.put_bytes(self); - } -} diff --git a/sqlx-core/src/mysql/protocol/eof.rs b/sqlx-core/src/mysql/protocol/eof.rs index 093b9f6d..cb168857 100644 --- a/sqlx-core/src/mysql/protocol/eof.rs +++ b/sqlx-core/src/mysql/protocol/eof.rs @@ -1,8 +1,7 @@ use byteorder::LittleEndian; use crate::io::Buf; -use crate::mysql::io::BufExt; -use crate::mysql::protocol::{Capabilities, Decode, Status}; +use crate::mysql::protocol::{Status}; // https://dev.mysql.com/doc/dev/mysql-server/8.0.12/page_protocol_basic_eof_packet.html // https://mariadb.com/kb/en/eof_packet/ @@ -12,8 +11,8 @@ pub struct EofPacket { pub status: Status, } -impl Decode for EofPacket { - fn decode(mut buf: &[u8]) -> crate::Result +impl EofPacket { + pub(crate) fn read(mut buf: &[u8]) -> crate::Result where Self: Sized, { diff --git a/sqlx-core/src/mysql/protocol/err.rs b/sqlx-core/src/mysql/protocol/err.rs index 965d5413..0dd782a2 100644 --- a/sqlx-core/src/mysql/protocol/err.rs +++ b/sqlx-core/src/mysql/protocol/err.rs @@ -1,8 +1,7 @@ use byteorder::LittleEndian; use crate::io::Buf; -use crate::mysql::io::BufExt; -use crate::mysql::protocol::{Capabilities, Decode, Status}; +use crate::mysql::protocol::{Capabilities}; // https://dev.mysql.com/doc/dev/mysql-server/8.0.12/page_protocol_basic_err_packet.html // https://mariadb.com/kb/en/err_packet/ @@ -14,7 +13,7 @@ pub struct ErrPacket { } impl ErrPacket { - pub(crate) fn decode(mut buf: &[u8], capabilities: Capabilities) -> crate::Result + pub(crate) fn read(mut buf: &[u8], capabilities: Capabilities) -> crate::Result where Self: Sized, { @@ -50,7 +49,7 @@ impl ErrPacket { #[cfg(test)] mod tests { - use super::{Capabilities, Decode, ErrPacket, Status}; + use super::{Capabilities, ErrPacket}; const ERR_PACKETS_OUT_OF_ORDER: &[u8] = b"\xff\x84\x04Got packets out of order"; @@ -58,7 +57,7 @@ mod tests { #[test] fn it_decodes_packets_out_of_order() { - let mut p = ErrPacket::decode(ERR_PACKETS_OUT_OF_ORDER, Capabilities::PROTOCOL_41).unwrap(); + let p = ErrPacket::read(ERR_PACKETS_OUT_OF_ORDER, Capabilities::PROTOCOL_41).unwrap(); assert_eq!(&*p.error_message, "Got packets out of order"); assert_eq!(p.error_code, 1156); @@ -67,7 +66,7 @@ mod tests { #[test] fn it_decodes_ok_handshake() { - let mut p = ErrPacket::decode(ERR_HANDSHAKE_UNKNOWN_DB, Capabilities::PROTOCOL_41).unwrap(); + let p = ErrPacket::read(ERR_HANDSHAKE_UNKNOWN_DB, Capabilities::PROTOCOL_41).unwrap(); assert_eq!(p.error_code, 1049); assert_eq!(p.sql_state.as_deref(), Some("42000")); diff --git a/sqlx-core/src/mysql/protocol/handshake.rs b/sqlx-core/src/mysql/protocol/handshake.rs index 9bfe3046..89364d38 100644 --- a/sqlx-core/src/mysql/protocol/handshake.rs +++ b/sqlx-core/src/mysql/protocol/handshake.rs @@ -1,24 +1,24 @@ use byteorder::LittleEndian; use crate::io::Buf; -use crate::mysql::protocol::{AuthPlugin, Capabilities, Decode, Status}; +use crate::mysql::protocol::{AuthPlugin, Capabilities, Status}; // https://dev.mysql.com/doc/dev/mysql-server/8.0.12/page_protocol_connection_phase_packets_protocol_handshake_v10.html // https://mariadb.com/kb/en/connection/#initial-handshake-packet #[derive(Debug)] -pub struct Handshake { - pub protocol_version: u8, - pub server_version: Box, - pub connection_id: u32, - pub server_capabilities: Capabilities, - pub server_default_collation: u8, - pub status: Status, - pub auth_plugin: AuthPlugin, - pub auth_plugin_data: Box<[u8]>, +pub(crate) struct Handshake { + pub(crate) protocol_version: u8, + pub(crate) server_version: Box, + pub(crate) connection_id: u32, + pub(crate) server_capabilities: Capabilities, + pub(crate) server_default_collation: u8, + pub(crate) status: Status, + pub(crate) auth_plugin: AuthPlugin, + pub(crate) auth_plugin_data: Box<[u8]>, } -impl Decode for Handshake { - fn decode(mut buf: &[u8]) -> crate::Result +impl Handshake { + pub(crate) fn read(mut buf: &[u8]) -> crate::Result where Self: Sized, { @@ -68,7 +68,7 @@ impl Decode for Handshake { } else { // capability_flags_3 : int<4> let capabilities_3 = buf.get_u32::()?; - capabilities |= Capabilities::from_bits_truncate((capabilities_2 as u64) << 32); + capabilities |= Capabilities::from_bits_truncate((capabilities_3 as u64) << 32); } if capabilities.contains(Capabilities::SECURE_CONNECTION) { @@ -102,15 +102,15 @@ impl Decode for Handshake { #[cfg(test)] mod tests { - use super::{AuthPlugin, Capabilities, Decode, Handshake, Status}; + use super::{AuthPlugin, Capabilities, Handshake, Status}; use matches::assert_matches; const HANDSHAKE_MARIA_DB_10_4_7: &[u8] = b"\n5.5.5-10.4.7-MariaDB-1:10.4.7+maria~bionic\x00\x0b\x00\x00\x00t6L\\j\"dS\x00\xfe\xf7\x08\x02\x00\xff\x81\x15\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00U14Oph9\", capabilities: Capabilities); +} + +impl Encode for &'_ [u8] { + fn encode(&self, buf: &mut Vec, _: Capabilities) { + use crate::io::BufMut; + + buf.put_bytes(self); + } +} diff --git a/sqlx-core/src/mysql/protocol/ok.rs b/sqlx-core/src/mysql/protocol/ok.rs index cd7986aa..30f3f974 100644 --- a/sqlx-core/src/mysql/protocol/ok.rs +++ b/sqlx-core/src/mysql/protocol/ok.rs @@ -2,21 +2,21 @@ use byteorder::LittleEndian; use crate::io::Buf; use crate::mysql::io::BufExt; -use crate::mysql::protocol::{Capabilities, Decode, Status}; +use crate::mysql::protocol::{Status}; // https://dev.mysql.com/doc/dev/mysql-server/8.0.12/page_protocol_basic_ok_packet.html // https://mariadb.com/kb/en/ok_packet/ #[derive(Debug)] -pub struct OkPacket { - pub affected_rows: u64, - pub last_insert_id: u64, - pub status: Status, - pub warnings: u16, - pub info: Box, +pub(crate) struct OkPacket { + pub(crate) affected_rows: u64, + pub(crate) last_insert_id: u64, + pub(crate) status: Status, + pub(crate) warnings: u16, + pub(crate) info: Box, } -impl Decode for OkPacket { - fn decode(mut buf: &[u8]) -> crate::Result +impl OkPacket { + pub(crate) fn read(mut buf: &[u8]) -> crate::Result where Self: Sized, { @@ -46,13 +46,13 @@ impl Decode for OkPacket { #[cfg(test)] mod tests { - use super::{Capabilities, Decode, OkPacket, Status}; + use super::{OkPacket, Status}; const OK_HANDSHAKE: &[u8] = b"\x00\x00\x00\x02@\x00\x00"; #[test] fn it_decodes_ok_handshake() { - let mut p = OkPacket::decode(OK_HANDSHAKE).unwrap(); + let p = OkPacket::read(OK_HANDSHAKE).unwrap(); assert_eq!(p.affected_rows, 0); assert_eq!(p.last_insert_id, 0); diff --git a/sqlx-core/src/mysql/protocol/row.rs b/sqlx-core/src/mysql/protocol/row.rs index 2c275a22..9d74dcd9 100644 --- a/sqlx-core/src/mysql/protocol/row.rs +++ b/sqlx-core/src/mysql/protocol/row.rs @@ -3,21 +3,20 @@ use std::ops::Range; use byteorder::{ByteOrder, LittleEndian}; use crate::io::Buf; -use crate::mysql::io::BufExt; -use crate::mysql::protocol::{Decode, TypeId}; +use crate::mysql::protocol::{TypeId}; -pub struct Row<'c> { +pub(crate) struct Row<'c> { buffer: &'c [u8], values: &'c [Option>], - binary: bool, + pub(crate) binary: bool, } impl<'c> Row<'c> { - pub fn len(&self) -> usize { + pub(crate) fn len(&self) -> usize { self.values.len() } - pub fn get(&self, index: usize) -> Option<&'c [u8]> { + pub(crate) fn get(&self, index: usize) -> Option<&'c [u8]> { let range = self.values[index].as_ref()?; Some(&self.buffer[(range.start as usize)..(range.end as usize)]) @@ -54,13 +53,13 @@ fn get_lenenc(buf: &[u8]) -> (usize, Option) { } impl<'c> Row<'c> { - pub fn read( + pub(crate) fn read( mut buf: &'c [u8], columns: &[TypeId], values: &'c mut Vec>>, binary: bool, ) -> crate::Result { - let mut buffer = &*buf; + let buffer = &*buf; values.clear(); values.reserve(columns.len()); @@ -68,7 +67,7 @@ impl<'c> Row<'c> { if !binary { let mut index = 0; - for column_idx in 0..columns.len() { + for _ in 0..columns.len() { let (len_size, size) = get_lenenc(&buf[index..]); if let Some(size) = size { @@ -77,7 +76,7 @@ impl<'c> Row<'c> { values.push(None); } - index += (len_size + size.unwrap_or_default()); + index += len_size + size.unwrap_or_default(); } return Ok(Self { diff --git a/sqlx-core/src/mysql/protocol/ssl_request.rs b/sqlx-core/src/mysql/protocol/ssl_request.rs index fea5ef8e..bbf781c6 100644 --- a/sqlx-core/src/mysql/protocol/ssl_request.rs +++ b/sqlx-core/src/mysql/protocol/ssl_request.rs @@ -1,8 +1,7 @@ use byteorder::LittleEndian; use crate::io::BufMut; -use crate::mysql::io::BufMutExt; -use crate::mysql::protocol::{AuthPlugin, Capabilities, Encode}; +use crate::mysql::protocol::{Capabilities, Encode}; // https://dev.mysql.com/doc/dev/mysql-server/8.0.12/page_protocol_connection_phase_packets_protocol_handshake_response.html // https://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::SSLRequest diff --git a/sqlx-core/src/mysql/protocol/type.rs b/sqlx-core/src/mysql/protocol/type.rs index b242ed02..38ecb453 100644 --- a/sqlx-core/src/mysql/protocol/type.rs +++ b/sqlx-core/src/mysql/protocol/type.rs @@ -49,7 +49,7 @@ type_id_consts! { pub const SMALL_INT: TypeId = TypeId(2); pub const INT: TypeId = TypeId(3); pub const BIG_INT: TypeId = TypeId(8); - pub const MEDIUM_INT: TypeId = TypeId(9); + // pub const MEDIUM_INT: TypeId = TypeId(9); // Numeric: FLOAT, DOUBLE pub const FLOAT: TypeId = TypeId(4); diff --git a/sqlx-core/src/mysql/row.rs b/sqlx-core/src/mysql/row.rs index 72338c60..73d19480 100644 --- a/sqlx-core/src/mysql/row.rs +++ b/sqlx-core/src/mysql/row.rs @@ -28,7 +28,6 @@ impl<'c> TryFrom>> for MySqlValue<'c> { pub struct MySqlRow<'c> { pub(super) row: protocol::Row<'c>, pub(super) columns: Arc, u16>>, - pub(super) binary: bool, } impl<'c> Row<'c> for MySqlRow<'c> { @@ -45,7 +44,7 @@ impl<'c> Row<'c> for MySqlRow<'c> { let index = index.resolve(self)?; Ok(self.row.get(index).map(|buf| { - if self.binary { + if self.row.binary { MySqlValue::Binary(buf) } else { MySqlValue::Text(buf) diff --git a/sqlx-core/src/mysql/stream.rs b/sqlx-core/src/mysql/stream.rs index d5ad18bc..4f85d74b 100644 --- a/sqlx-core/src/mysql/stream.rs +++ b/sqlx-core/src/mysql/stream.rs @@ -3,7 +3,7 @@ use std::net::Shutdown; use byteorder::{ByteOrder, LittleEndian}; use crate::io::{Buf, BufMut, BufStream, MaybeTlsStream}; -use crate::mysql::protocol::{Capabilities, Decode, Encode, EofPacket, ErrPacket, OkPacket}; +use crate::mysql::protocol::{Capabilities, Encode, EofPacket, ErrPacket, OkPacket}; use crate::mysql::MySqlError; use crate::url::Url; @@ -163,7 +163,7 @@ impl MySqlStream { impl MySqlStream { pub(crate) async fn maybe_receive_eof(&mut self) -> crate::Result<()> { if !self.capabilities.contains(Capabilities::DEPRECATE_EOF) { - let _eof = EofPacket::decode(self.receive().await?)?; + let _eof = EofPacket::read(self.receive().await?)?; } Ok(()) @@ -171,7 +171,7 @@ impl MySqlStream { pub(crate) fn maybe_handle_eof(&mut self) -> crate::Result> { if !self.capabilities.contains(Capabilities::DEPRECATE_EOF) && self.packet()[0] == 0xFE { - Ok(Some(EofPacket::decode(self.packet())?)) + Ok(Some(EofPacket::read(self.packet())?)) } else { Ok(None) } @@ -182,10 +182,10 @@ impl MySqlStream { } pub(crate) fn handle_err(&mut self) -> crate::Result { - Err(MySqlError(ErrPacket::decode(self.packet(), self.capabilities)?).into()) + Err(MySqlError(ErrPacket::read(self.packet(), self.capabilities)?).into()) } pub(crate) fn handle_ok(&mut self) -> crate::Result { - OkPacket::decode(self.packet()) + OkPacket::read(self.packet()) } }