Skip to content

Commit 33aee07

Browse files
aluabonander
authored andcommitted
Remove compatibility check by collations.
1 parent ce6d752 commit 33aee07

File tree

5 files changed

+7
-34
lines changed

5 files changed

+7
-34
lines changed

sqlx-mysql/src/protocol/text/column.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ pub(crate) struct ColumnDefinition {
112112
table: Bytes,
113113
alias: Bytes,
114114
name: Bytes,
115+
#[allow(unused)]
115116
pub(crate) collation: u16,
116117
pub(crate) max_size: u32,
117118
pub(crate) r#type: ColumnType,
@@ -165,13 +166,8 @@ impl Decode<'_, Capabilities> for ColumnDefinition {
165166
}
166167

167168
impl ColumnType {
168-
pub(crate) fn name(
169-
self,
170-
collation: u16,
171-
flags: ColumnFlags,
172-
max_size: Option<u32>,
173-
) -> &'static str {
174-
let is_binary = collation == 63;
169+
pub(crate) fn name(self, flags: ColumnFlags, max_size: Option<u32>) -> &'static str {
170+
let is_binary = flags.contains(ColumnFlags::BINARY);
175171
let is_unsigned = flags.contains(ColumnFlags::UNSIGNED);
176172
let is_enum = flags.contains(ColumnFlags::ENUM);
177173

sqlx-mysql/src/type_info.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ use crate::protocol::text::{ColumnDefinition, ColumnFlags, ColumnType};
1010
pub struct MySqlTypeInfo {
1111
pub(crate) r#type: ColumnType,
1212
pub(crate) flags: ColumnFlags,
13-
pub(crate) collation: u16,
1413

1514
// [max_size] for integer types, this is (M) in BIT(M) or TINYINT(M)
1615
#[cfg_attr(feature = "offline", serde(default))]
@@ -22,7 +21,6 @@ impl MySqlTypeInfo {
2221
Self {
2322
r#type: ty,
2423
flags: ColumnFlags::BINARY,
25-
collation: 63,
2624
max_size: None,
2725
}
2826
}
@@ -32,7 +30,6 @@ impl MySqlTypeInfo {
3230
Self {
3331
r#type: ColumnType::Enum,
3432
flags: ColumnFlags::BINARY,
35-
collation: 63,
3633
max_size: None,
3734
}
3835
}
@@ -55,7 +52,6 @@ impl MySqlTypeInfo {
5552
Self {
5653
r#type: column.r#type,
5754
flags: column.flags,
58-
collation: column.collation,
5955
max_size: Some(column.max_size),
6056
}
6157
}
@@ -73,7 +69,7 @@ impl TypeInfo for MySqlTypeInfo {
7369
}
7470

7571
fn name(&self) -> &str {
76-
self.r#type.name(self.collation, self.flags, self.max_size)
72+
self.r#type.name(self.flags, self.max_size)
7773
}
7874
}
7975

@@ -102,9 +98,8 @@ impl PartialEq<MySqlTypeInfo> for MySqlTypeInfo {
10298
| ColumnType::String
10399
| ColumnType::VarString
104100
| ColumnType::Enum => {
105-
return self.collation == other.collation;
101+
return self.flags == other.flags;
106102
}
107-
108103
_ => {}
109104
}
110105

sqlx-mysql/src/types/bool.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ impl Type<MySql> for bool {
1212
// MySQL has no actual `BOOLEAN` type, the type is an alias of `TINYINT(1)`
1313
MySqlTypeInfo {
1414
flags: ColumnFlags::BINARY | ColumnFlags::UNSIGNED,
15-
collation: 63,
1615
max_size: Some(1),
1716
r#type: ColumnType::Tiny,
1817
}

sqlx-mysql/src/types/str.rs

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,10 @@ use crate::types::Type;
77
use crate::{MySql, MySqlTypeInfo, MySqlValueRef};
88
use std::borrow::Cow;
99

10-
const COLLATE_UTF8_GENERAL_CI: u16 = 33;
11-
const COLLATE_UTF8_UNICODE_CI: u16 = 192;
12-
const COLLATE_UTF8MB4_UNICODE_CI: u16 = 224;
13-
const COLLATE_UTF8MB4_BIN: u16 = 46;
14-
const COLLATE_UTF8MB4_GENERAL_CI: u16 = 45;
15-
const COLLATE_UTF8MB4_0900_AI_CI: u16 = 255;
16-
1710
impl Type<MySql> for str {
1811
fn type_info() -> MySqlTypeInfo {
1912
MySqlTypeInfo {
20-
r#type: ColumnType::VarString, // VARCHAR
21-
collation: COLLATE_UTF8MB4_UNICODE_CI, // utf8mb4_unicode_ci
13+
r#type: ColumnType::VarString, // VARCHAR
2214
flags: ColumnFlags::empty(),
2315
max_size: None,
2416
}
@@ -36,15 +28,7 @@ impl Type<MySql> for str {
3628
| ColumnType::String
3729
| ColumnType::VarString
3830
| ColumnType::Enum
39-
) && matches!(
40-
ty.collation,
41-
COLLATE_UTF8MB4_UNICODE_CI
42-
| COLLATE_UTF8_UNICODE_CI
43-
| COLLATE_UTF8_GENERAL_CI
44-
| COLLATE_UTF8MB4_BIN
45-
| COLLATE_UTF8MB4_GENERAL_CI
46-
| COLLATE_UTF8MB4_0900_AI_CI
47-
)
31+
) && !ty.flags.contains(ColumnFlags::BINARY)
4832
}
4933
}
5034

sqlx-mysql/src/types/uint.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ fn uint_type_info(ty: ColumnType) -> MySqlTypeInfo {
1010
MySqlTypeInfo {
1111
r#type: ty,
1212
flags: ColumnFlags::BINARY | ColumnFlags::UNSIGNED,
13-
collation: 63,
1413
max_size: None,
1514
}
1615
}

0 commit comments

Comments
 (0)