1use super::query_builder::MysqlQueryBuilder;
4use super::MysqlValue;
5use crate::backend::sql_dialect::on_conflict_clause::SupportsOnConflictClause;
6use crate::backend::*;
7use crate::query_builder::bind_collector::RawBytesBindCollector;
8use crate::sql_types::TypeMetadata;
9
10#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, Default)]
12pub struct Mysql;
13
14#[allow(missing_debug_implementations)]
15#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)]
18#[non_exhaustive]
19pub enum MysqlType {
20 Tiny,
22 UnsignedTiny,
24 Short,
26 UnsignedShort,
28 Long,
30 UnsignedLong,
32 LongLong,
34 UnsignedLongLong,
36 Float,
38 Double,
40 Numeric,
42 Time,
44 Date,
46 DateTime,
49 Timestamp,
52 String,
54 Blob,
56 Bit,
58 Set,
60 Enum,
62}
63
64impl Backend for Mysql {
65 type QueryBuilder = MysqlQueryBuilder;
66 type RawValue<'a> = MysqlValue<'a>;
67 type BindCollector<'a> = RawBytesBindCollector<Self>;
68}
69
70impl TypeMetadata for Mysql {
71 type TypeMetadata = MysqlType;
72 type MetadataLookup = ();
73}
74
75impl SqlDialect for Mysql {
76 type ReturningClause = sql_dialect::returning_clause::DoesNotSupportReturningClause;
77
78 type OnConflictClause = MysqlOnConflictClause;
79
80 type InsertWithDefaultKeyword = sql_dialect::default_keyword_for_insert::IsoSqlDefaultKeyword;
81 type BatchInsertSupport = sql_dialect::batch_insert_support::PostgresLikeBatchInsertSupport;
82 type DefaultValueClauseForInsert = MysqlStyleDefaultValueClause;
83
84 type EmptyFromClauseSyntax = sql_dialect::from_clause_syntax::AnsiSqlFromClauseSyntax;
85 type SelectStatementSyntax = sql_dialect::select_statement_syntax::AnsiSqlSelectStatement;
86
87 type ExistsSyntax = sql_dialect::exists_syntax::AnsiSqlExistsSyntax;
88 type ArrayComparison = sql_dialect::array_comparison::AnsiSqlArrayComparison;
89
90 type ConcatClause = MysqlConcatClause;
91 type AliasSyntax = sql_dialect::alias_syntax::AsAliasSyntax;
92}
93
94impl DieselReserveSpecialization for Mysql {}
95impl TrustedBackend for Mysql {}
96
97#[derive(Debug, Clone, Copy)]
98pub struct MysqlStyleDefaultValueClause;
99
100#[derive(Debug, Clone, Copy)]
101pub struct MysqlConcatClause;
102
103#[derive(Debug, Clone, Copy)]
104pub struct MysqlOnConflictClause;
105
106impl SupportsOnConflictClause for MysqlOnConflictClause {}