1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
//! The MySQL backend
use byteorder::NativeEndian;
use super::bind_collector::MysqlBindCollector;
use super::query_builder::MysqlQueryBuilder;
use backend::*;
use sql_types::TypeMetadata;
/// The MySQL backend
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct Mysql;
#[allow(missing_debug_implementations)]
/// Represents the possible forms a bind parameter can be transmitted as.
/// Each variant represents one of the forms documented at
/// <https://dev.mysql.com/doc/refman/5.7/en/c-api-prepared-statement-type-codes.html>
///
/// The null variant is omitted, as we will never prepare a statement in which
/// one of the bind parameters can always be NULL
#[derive(Hash, PartialEq, Eq, Clone, Copy)]
pub enum MysqlType {
/// Sets `buffer_type` to `MYSQL_TYPE_TINY`
Tiny,
/// Sets `buffer_type` to `MYSQL_TYPE_SHORT`
Short,
/// Sets `buffer_type` to `MYSQL_TYPE_LONG`
Long,
/// Sets `buffer_type` to `MYSQL_TYPE_LONGLONG`
LongLong,
/// Sets `buffer_type` to `MYSQL_TYPE_FLOAT`
Float,
/// Sets `buffer_type` to `MYSQL_TYPE_DOUBLE`
Double,
/// Sets `buffer_type` to `MYSQL_TYPE_TIME`
Time,
/// Sets `buffer_type` to `MYSQL_TYPE_DATE`
Date,
/// Sets `buffer_type` to `MYSQL_TYPE_DATETIME`
DateTime,
/// Sets `buffer_type` to `MYSQL_TYPE_TIMESTAMP`
Timestamp,
/// Sets `buffer_type` to `MYSQL_TYPE_STRING`
String,
/// Sets `buffer_type` to `MYSQL_TYPE_BLOB`
Blob,
}
impl Backend for Mysql {
type QueryBuilder = MysqlQueryBuilder;
type BindCollector = MysqlBindCollector;
type RawValue = [u8];
type ByteOrder = NativeEndian;
}
impl TypeMetadata for Mysql {
type TypeMetadata = MysqlType;
type MetadataLookup = ();
}
impl SupportsDefaultKeyword for Mysql {}
impl UsesAnsiSavepointSyntax for Mysql {}