diff --git a/sqlx-mysql/src/protocol/text/column.rs b/sqlx-mysql/src/protocol/text/column.rs index 6beb50feb..36778fec2 100644 --- a/sqlx-mysql/src/protocol/text/column.rs +++ b/sqlx-mysql/src/protocol/text/column.rs @@ -112,6 +112,7 @@ pub(crate) struct ColumnDefinition { table: Bytes, alias: Bytes, name: Bytes, + #[allow(unused)] pub(crate) collation: u16, pub(crate) max_size: u32, pub(crate) r#type: ColumnType, @@ -165,13 +166,8 @@ impl Decode<'_, Capabilities> for ColumnDefinition { } impl ColumnType { - pub(crate) fn name( - self, - collation: u16, - flags: ColumnFlags, - max_size: Option, - ) -> &'static str { - let is_binary = collation == 63; + pub(crate) fn name(self, flags: ColumnFlags, max_size: Option) -> &'static str { + let is_binary = flags.contains(ColumnFlags::BINARY); let is_unsigned = flags.contains(ColumnFlags::UNSIGNED); let is_enum = flags.contains(ColumnFlags::ENUM); diff --git a/sqlx-mysql/src/type_info.rs b/sqlx-mysql/src/type_info.rs index fcd8c2fd4..6b0bfff76 100644 --- a/sqlx-mysql/src/type_info.rs +++ b/sqlx-mysql/src/type_info.rs @@ -10,7 +10,6 @@ use crate::protocol::text::{ColumnDefinition, ColumnFlags, ColumnType}; pub struct MySqlTypeInfo { pub(crate) r#type: ColumnType, pub(crate) flags: ColumnFlags, - pub(crate) collation: u16, // [max_size] for integer types, this is (M) in BIT(M) or TINYINT(M) #[cfg_attr(feature = "offline", serde(default))] @@ -22,7 +21,6 @@ impl MySqlTypeInfo { Self { r#type: ty, flags: ColumnFlags::BINARY, - collation: 63, max_size: None, } } @@ -32,7 +30,6 @@ impl MySqlTypeInfo { Self { r#type: ColumnType::Enum, flags: ColumnFlags::BINARY, - collation: 63, max_size: None, } } @@ -55,7 +52,6 @@ impl MySqlTypeInfo { Self { r#type: column.r#type, flags: column.flags, - collation: column.collation, max_size: Some(column.max_size), } } @@ -73,7 +69,7 @@ impl TypeInfo for MySqlTypeInfo { } fn name(&self) -> &str { - self.r#type.name(self.collation, self.flags, self.max_size) + self.r#type.name(self.flags, self.max_size) } } @@ -102,9 +98,8 @@ impl PartialEq for MySqlTypeInfo { | ColumnType::String | ColumnType::VarString | ColumnType::Enum => { - return self.collation == other.collation; + return self.flags == other.flags; } - _ => {} } diff --git a/sqlx-mysql/src/types/bool.rs b/sqlx-mysql/src/types/bool.rs index 8a2de8428..7d8c243d3 100644 --- a/sqlx-mysql/src/types/bool.rs +++ b/sqlx-mysql/src/types/bool.rs @@ -12,7 +12,6 @@ impl Type for bool { // MySQL has no actual `BOOLEAN` type, the type is an alias of `TINYINT(1)` MySqlTypeInfo { flags: ColumnFlags::BINARY | ColumnFlags::UNSIGNED, - collation: 63, max_size: Some(1), r#type: ColumnType::Tiny, } diff --git a/sqlx-mysql/src/types/str.rs b/sqlx-mysql/src/types/str.rs index 858583a23..8233e9089 100644 --- a/sqlx-mysql/src/types/str.rs +++ b/sqlx-mysql/src/types/str.rs @@ -7,18 +7,10 @@ use crate::types::Type; use crate::{MySql, MySqlTypeInfo, MySqlValueRef}; use std::borrow::Cow; -const COLLATE_UTF8_GENERAL_CI: u16 = 33; -const COLLATE_UTF8_UNICODE_CI: u16 = 192; -const COLLATE_UTF8MB4_UNICODE_CI: u16 = 224; -const COLLATE_UTF8MB4_BIN: u16 = 46; -const COLLATE_UTF8MB4_GENERAL_CI: u16 = 45; -const COLLATE_UTF8MB4_0900_AI_CI: u16 = 255; - impl Type for str { fn type_info() -> MySqlTypeInfo { MySqlTypeInfo { - r#type: ColumnType::VarString, // VARCHAR - collation: COLLATE_UTF8MB4_UNICODE_CI, // utf8mb4_unicode_ci + r#type: ColumnType::VarString, // VARCHAR flags: ColumnFlags::empty(), max_size: None, } @@ -36,15 +28,7 @@ impl Type for str { | ColumnType::String | ColumnType::VarString | ColumnType::Enum - ) && matches!( - ty.collation, - COLLATE_UTF8MB4_UNICODE_CI - | COLLATE_UTF8_UNICODE_CI - | COLLATE_UTF8_GENERAL_CI - | COLLATE_UTF8MB4_BIN - | COLLATE_UTF8MB4_GENERAL_CI - | COLLATE_UTF8MB4_0900_AI_CI - ) + ) && !ty.flags.contains(ColumnFlags::BINARY) } } diff --git a/sqlx-mysql/src/types/uint.rs b/sqlx-mysql/src/types/uint.rs index 0ef15ab7b..ca8eb7534 100644 --- a/sqlx-mysql/src/types/uint.rs +++ b/sqlx-mysql/src/types/uint.rs @@ -10,7 +10,6 @@ fn uint_type_info(ty: ColumnType) -> MySqlTypeInfo { MySqlTypeInfo { r#type: ty, flags: ColumnFlags::BINARY | ColumnFlags::UNSIGNED, - collation: 63, max_size: None, } }