diff --git a/sqlx-core/src/decode.rs b/sqlx-core/src/decode.rs index 292df0cd..6851e678 100644 --- a/sqlx-core/src/decode.rs +++ b/sqlx-core/src/decode.rs @@ -3,7 +3,7 @@ use std::fmt::{self, Display, Formatter}; use std::str::Utf8Error; use crate::database::HasRawValue; -use crate::{Database, Type, TypeInfo}; +use crate::Database; /// A type that can be decoded from a SQL value. pub trait Decode<'r, Db: Database>: Sized + Send + Sync { diff --git a/sqlx-core/src/encode.rs b/sqlx-core/src/encode.rs index 6b9a3743..bd4c9381 100644 --- a/sqlx-core/src/encode.rs +++ b/sqlx-core/src/encode.rs @@ -2,7 +2,7 @@ use std::error::Error as StdError; use std::fmt::{self, Display, Formatter}; use crate::database::HasOutput; -use crate::{Database, Type, TypeInfo}; +use crate::Database; /// A type that can be encoded into a SQL value. pub trait Encode: Send + Sync { diff --git a/sqlx-core/src/raw_value.rs b/sqlx-core/src/raw_value.rs index 09c7b114..4593323e 100644 --- a/sqlx-core/src/raw_value.rs +++ b/sqlx-core/src/raw_value.rs @@ -1,7 +1,4 @@ -use std::any; - -use crate::database::HasRawValue; -use crate::{decode, Database, Decode, TypeDecode, TypeInfo}; +use crate::Database; // NOTE: Add decode() and decode_unchecked() to RawValue as provided methods // once Rust has lazy normalization and/or GATs. diff --git a/sqlx-core/src/type.rs b/sqlx-core/src/type.rs index fe3ce004..6ce525be 100644 --- a/sqlx-core/src/type.rs +++ b/sqlx-core/src/type.rs @@ -1,5 +1,4 @@ -use crate::database::{HasOutput, HasRawValue}; -use crate::{decode, encode, Database, Decode, Encode, RawValue, TypeInfo}; +use crate::{Database, Decode, Encode, TypeInfo}; /// Indicates that a SQL type is supported for a database. pub trait Type { diff --git a/sqlx-mysql/src/row.rs b/sqlx-mysql/src/row.rs index e7c1737f..7a8e9567 100644 --- a/sqlx-mysql/src/row.rs +++ b/sqlx-mysql/src/row.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use bytes::Bytes; -use sqlx_core::{ColumnIndex, Decode, Error, Result, Row, TypeDecode}; +use sqlx_core::{ColumnIndex, Result, Row, TypeDecode}; use crate::{protocol, MySql, MySqlColumn, MySqlRawValue, MySqlRawValueFormat}; @@ -42,12 +42,12 @@ impl MySqlRow { } /// Returns the column at the index, if available. - fn column>(&self, index: I) -> &MySqlColumn { + pub fn column>(&self, index: I) -> &MySqlColumn { Row::column(self, index) } /// Returns the column at the index, if available. - fn try_column>(&self, index: I) -> Result<&MySqlColumn> { + pub fn try_column>(&self, index: I) -> Result<&MySqlColumn> { Ok(&self.columns[index.get(self)?]) } diff --git a/sqlx-mysql/src/types/str.rs b/sqlx-mysql/src/types/str.rs index f7678a70..a7221c77 100644 --- a/sqlx-mysql/src/types/str.rs +++ b/sqlx-mysql/src/types/str.rs @@ -1,6 +1,3 @@ -use std::str::from_utf8_unchecked; - -use bytes::Bytes; use bytestring::ByteString; use sqlx_core::{decode, encode, Decode, Encode, Type}; diff --git a/sqlx-mysql/src/types/uint.rs b/sqlx-mysql/src/types/uint.rs index dea21d3b..e19a9b55 100644 --- a/sqlx-mysql/src/types/uint.rs +++ b/sqlx-mysql/src/types/uint.rs @@ -77,7 +77,9 @@ macro_rules! impl_type_uint { } impl Encode for $ty { - fn encode(&self, _ty: &MySqlTypeInfo, out: &mut MySqlOutput<'_>) -> encode::Result<()> { + fn encode(&self, ty: &MySqlTypeInfo, out: &mut MySqlOutput<'_>) -> encode::Result<()> { + ensure_not_too_large((*self).into(), ty)?; + out.buffer().extend_from_slice(&self.to_le_bytes()); Ok(())