1mod fold;
17pub mod ops;
18mod ord;
19
20pub use self::fold::Foldable;
21pub use self::ord::SqlOrd;
22
23use crate::backend::Backend;
24use crate::expression::TypedExpressionType;
25use crate::query_builder::QueryId;
26
27#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Bool {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Bool")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Bool {
#[inline]
fn clone(&self) -> Bool { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Bool { }Copy, #[automatically_derived]
impl ::core::default::Default for Bool {
#[inline]
fn default() -> Bool { Bool {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for Bool {
type QueryId = Bool<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for Bool {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for Bool {}
impl diesel::sql_types::HasSqlType<Bool> for diesel::sqlite::Sqlite {
fn metadata(_: &mut ()) -> diesel::sqlite::SqliteType {
diesel::sqlite::SqliteType::Integer
}
}
impl diesel::sql_types::HasSqlType<Bool> for diesel::mysql::Mysql {
fn metadata(_: &mut ()) -> diesel::mysql::MysqlType {
diesel::mysql::MysqlType::Tiny
}
}
impl diesel::sql_types::HasSqlType<Bool> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(16, 1000)
}
}
};SqlType)]
42#[diesel(postgres_type(oid = 16, array_oid = 1000))]
43#[diesel(sqlite_type(name = "Integer"))]
44#[diesel(mysql_type(name = "Tiny"))]
45pub struct Bool;
46
47#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TinyInt {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "TinyInt")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TinyInt {
#[inline]
fn clone(&self) -> TinyInt { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for TinyInt { }Copy, #[automatically_derived]
impl ::core::default::Default for TinyInt {
#[inline]
fn default() -> TinyInt { TinyInt {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for TinyInt {
type QueryId = TinyInt<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for TinyInt {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for TinyInt {}
impl diesel::sql_types::HasSqlType<TinyInt> for diesel::mysql::Mysql {
fn metadata(_: &mut ()) -> diesel::mysql::MysqlType {
diesel::mysql::MysqlType::Tiny
}
}
};SqlType)]
63#[diesel(mysql_type(name = "Tiny"))]
64pub struct TinyInt;
65#[doc(hidden)]
66pub type Tinyint = TinyInt;
67
68#[derive(#[automatically_derived]
impl ::core::fmt::Debug for SmallInt {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "SmallInt")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for SmallInt {
#[inline]
fn clone(&self) -> SmallInt { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for SmallInt { }Copy, #[automatically_derived]
impl ::core::default::Default for SmallInt {
#[inline]
fn default() -> SmallInt { SmallInt {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for SmallInt {
type QueryId = SmallInt<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for SmallInt {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for SmallInt {}
impl diesel::sql_types::HasSqlType<SmallInt> for
diesel::sqlite::Sqlite {
fn metadata(_: &mut ()) -> diesel::sqlite::SqliteType {
diesel::sqlite::SqliteType::SmallInt
}
}
impl diesel::sql_types::HasSqlType<SmallInt> for diesel::mysql::Mysql
{
fn metadata(_: &mut ()) -> diesel::mysql::MysqlType {
diesel::mysql::MysqlType::Short
}
}
impl diesel::sql_types::HasSqlType<SmallInt> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(21, 1005)
}
}
};SqlType)]
80#[diesel(postgres_type(oid = 21, array_oid = 1005))]
81#[diesel(sqlite_type(name = "SmallInt"))]
82#[diesel(mysql_type(name = "Short"))]
83pub struct SmallInt;
84#[doc(hidden)]
85pub type Int2 = SmallInt;
86#[doc(hidden)]
87pub type Smallint = SmallInt;
88
89#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Integer {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Integer")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Integer {
#[inline]
fn clone(&self) -> Integer { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Integer { }Copy, #[automatically_derived]
impl ::core::default::Default for Integer {
#[inline]
fn default() -> Integer { Integer {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for Integer {
type QueryId = Integer<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for Integer {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for Integer {}
impl diesel::sql_types::HasSqlType<Integer> for diesel::sqlite::Sqlite
{
fn metadata(_: &mut ()) -> diesel::sqlite::SqliteType {
diesel::sqlite::SqliteType::Integer
}
}
impl diesel::sql_types::HasSqlType<Integer> for diesel::mysql::Mysql {
fn metadata(_: &mut ()) -> diesel::mysql::MysqlType {
diesel::mysql::MysqlType::Long
}
}
impl diesel::sql_types::HasSqlType<Integer> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(23, 1007)
}
}
};SqlType)]
101#[diesel(postgres_type(oid = 23, array_oid = 1007))]
102#[diesel(sqlite_type(name = "Integer"))]
103#[diesel(mysql_type(name = "Long"))]
104pub struct Integer;
105#[doc(hidden)]
106pub type Int4 = Integer;
107
108#[derive(#[automatically_derived]
impl ::core::fmt::Debug for BigInt {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "BigInt")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for BigInt {
#[inline]
fn clone(&self) -> BigInt { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for BigInt { }Copy, #[automatically_derived]
impl ::core::default::Default for BigInt {
#[inline]
fn default() -> BigInt { BigInt {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for BigInt {
type QueryId = BigInt<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for BigInt {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for BigInt {}
impl diesel::sql_types::HasSqlType<BigInt> for diesel::sqlite::Sqlite
{
fn metadata(_: &mut ()) -> diesel::sqlite::SqliteType {
diesel::sqlite::SqliteType::Long
}
}
impl diesel::sql_types::HasSqlType<BigInt> for diesel::mysql::Mysql {
fn metadata(_: &mut ()) -> diesel::mysql::MysqlType {
diesel::mysql::MysqlType::LongLong
}
}
impl diesel::sql_types::HasSqlType<BigInt> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(20, 1016)
}
}
};SqlType)]
120#[diesel(postgres_type(oid = 20, array_oid = 1016))]
121#[diesel(sqlite_type(name = "Long"))]
122#[diesel(mysql_type(name = "LongLong"))]
123pub struct BigInt;
124#[doc(hidden)]
125pub type Int8 = BigInt;
126#[doc(hidden)]
127pub type Bigint = BigInt;
128
129#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Float {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Float")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Float {
#[inline]
fn clone(&self) -> Float { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Float { }Copy, #[automatically_derived]
impl ::core::default::Default for Float {
#[inline]
fn default() -> Float { Float {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for Float {
type QueryId = Float<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for Float {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for Float {}
impl diesel::sql_types::HasSqlType<Float> for diesel::sqlite::Sqlite {
fn metadata(_: &mut ()) -> diesel::sqlite::SqliteType {
diesel::sqlite::SqliteType::Float
}
}
impl diesel::sql_types::HasSqlType<Float> for diesel::mysql::Mysql {
fn metadata(_: &mut ()) -> diesel::mysql::MysqlType {
diesel::mysql::MysqlType::Float
}
}
impl diesel::sql_types::HasSqlType<Float> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(700, 1021)
}
}
};SqlType)]
141#[diesel(postgres_type(oid = 700, array_oid = 1021))]
142#[diesel(sqlite_type(name = "Float"))]
143#[diesel(mysql_type(name = "Float"))]
144pub struct Float;
145#[doc(hidden)]
146pub type Float4 = Float;
147
148#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Double {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Double")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Double {
#[inline]
fn clone(&self) -> Double { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Double { }Copy, #[automatically_derived]
impl ::core::default::Default for Double {
#[inline]
fn default() -> Double { Double {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for Double {
type QueryId = Double<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for Double {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for Double {}
impl diesel::sql_types::HasSqlType<Double> for diesel::sqlite::Sqlite
{
fn metadata(_: &mut ()) -> diesel::sqlite::SqliteType {
diesel::sqlite::SqliteType::Double
}
}
impl diesel::sql_types::HasSqlType<Double> for diesel::mysql::Mysql {
fn metadata(_: &mut ()) -> diesel::mysql::MysqlType {
diesel::mysql::MysqlType::Double
}
}
impl diesel::sql_types::HasSqlType<Double> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(701, 1022)
}
}
};SqlType)]
160#[diesel(postgres_type(oid = 701, array_oid = 1022))]
161#[diesel(sqlite_type(name = "Double"))]
162#[diesel(mysql_type(name = "Double"))]
163pub struct Double;
164#[doc(hidden)]
165pub type Float8 = Double;
166
167#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Numeric {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Numeric")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Numeric {
#[inline]
fn clone(&self) -> Numeric { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Numeric { }Copy, #[automatically_derived]
impl ::core::default::Default for Numeric {
#[inline]
fn default() -> Numeric { Numeric {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for Numeric {
type QueryId = Numeric<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for Numeric {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for Numeric {}
impl diesel::sql_types::HasSqlType<Numeric> for diesel::sqlite::Sqlite
{
fn metadata(_: &mut ()) -> diesel::sqlite::SqliteType {
diesel::sqlite::SqliteType::Double
}
}
impl diesel::sql_types::HasSqlType<Numeric> for diesel::mysql::Mysql {
fn metadata(_: &mut ()) -> diesel::mysql::MysqlType {
diesel::mysql::MysqlType::Numeric
}
}
impl diesel::sql_types::HasSqlType<Numeric> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(1700, 1231)
}
}
};SqlType)]
182#[diesel(postgres_type(oid = 1700, array_oid = 1231))]
183#[diesel(mysql_type(name = "Numeric"))]
184#[diesel(sqlite_type(name = "Double"))]
185pub struct Numeric;
186
187pub type Decimal = Numeric;
189
190#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Text {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Text")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Text {
#[inline]
fn clone(&self) -> Text { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Text { }Copy, #[automatically_derived]
impl ::core::default::Default for Text {
#[inline]
fn default() -> Text { Text {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for Text {
type QueryId = Text<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for Text {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for Text {}
impl diesel::sql_types::HasSqlType<Text> for diesel::sqlite::Sqlite {
fn metadata(_: &mut ()) -> diesel::sqlite::SqliteType {
diesel::sqlite::SqliteType::Text
}
}
impl diesel::sql_types::HasSqlType<Text> for diesel::mysql::Mysql {
fn metadata(_: &mut ()) -> diesel::mysql::MysqlType {
diesel::mysql::MysqlType::String
}
}
impl diesel::sql_types::HasSqlType<Text> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(25, 1009)
}
}
};SqlType)]
209#[diesel(postgres_type(oid = 25, array_oid = 1009))]
210#[diesel(sqlite_type(name = "Text"))]
211#[diesel(mysql_type(name = "String"))]
212pub struct Text;
213
214pub type VarChar = Text;
224#[doc(hidden)]
225pub type Varchar = VarChar;
226#[doc(hidden)]
227pub type Char = Text;
228#[doc(hidden)]
229pub type Tinytext = Text;
230#[doc(hidden)]
231pub type Mediumtext = Text;
232#[doc(hidden)]
233pub type Longtext = Text;
234
235#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Binary {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Binary")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Binary {
#[inline]
fn clone(&self) -> Binary { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Binary { }Copy, #[automatically_derived]
impl ::core::default::Default for Binary {
#[inline]
fn default() -> Binary { Binary {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for Binary {
type QueryId = Binary<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for Binary {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for Binary {}
impl diesel::sql_types::HasSqlType<Binary> for diesel::sqlite::Sqlite
{
fn metadata(_: &mut ()) -> diesel::sqlite::SqliteType {
diesel::sqlite::SqliteType::Binary
}
}
impl diesel::sql_types::HasSqlType<Binary> for diesel::mysql::Mysql {
fn metadata(_: &mut ()) -> diesel::mysql::MysqlType {
diesel::mysql::MysqlType::Blob
}
}
impl diesel::sql_types::HasSqlType<Binary> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(17, 1001)
}
}
};SqlType)]
252#[diesel(postgres_type(oid = 17, array_oid = 1001))]
253#[diesel(sqlite_type(name = "Binary"))]
254#[diesel(mysql_type(name = "Blob"))]
255pub struct Binary;
256
257#[doc(hidden)]
258pub type Tinyblob = Binary;
259#[doc(hidden)]
260pub type Blob = Binary;
261#[doc(hidden)]
262pub type Mediumblob = Binary;
263#[doc(hidden)]
264pub type Longblob = Binary;
265#[doc(hidden)]
266pub type Varbinary = Binary;
267#[doc(hidden)]
268pub type Bit = Binary;
269
270#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Date {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Date")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Date {
#[inline]
fn clone(&self) -> Date { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Date { }Copy, #[automatically_derived]
impl ::core::default::Default for Date {
#[inline]
fn default() -> Date { Date {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for Date {
type QueryId = Date<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for Date {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for Date {}
impl diesel::sql_types::HasSqlType<Date> for diesel::sqlite::Sqlite {
fn metadata(_: &mut ()) -> diesel::sqlite::SqliteType {
diesel::sqlite::SqliteType::Text
}
}
impl diesel::sql_types::HasSqlType<Date> for diesel::mysql::Mysql {
fn metadata(_: &mut ()) -> diesel::mysql::MysqlType {
diesel::mysql::MysqlType::Date
}
}
impl diesel::sql_types::HasSqlType<Date> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(1082, 1182)
}
}
};SqlType)]
285#[diesel(postgres_type(oid = 1082, array_oid = 1182))]
286#[diesel(sqlite_type(name = "Text"))]
287#[diesel(mysql_type(name = "Date"))]
288pub struct Date;
289
290#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Interval {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Interval")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Interval {
#[inline]
fn clone(&self) -> Interval { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Interval { }Copy, #[automatically_derived]
impl ::core::default::Default for Interval {
#[inline]
fn default() -> Interval { Interval {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for Interval {
type QueryId = Interval<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for Interval {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for Interval {}
impl diesel::sql_types::HasSqlType<Interval> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(1186, 1187)
}
}
};SqlType)]
311#[diesel(postgres_type(oid = 1186, array_oid = 1187))]
312pub struct Interval;
313
314#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Time {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Time")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Time {
#[inline]
fn clone(&self) -> Time { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Time { }Copy, #[automatically_derived]
impl ::core::default::Default for Time {
#[inline]
fn default() -> Time { Time {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for Time {
type QueryId = Time<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for Time {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for Time {}
impl diesel::sql_types::HasSqlType<Time> for diesel::sqlite::Sqlite {
fn metadata(_: &mut ()) -> diesel::sqlite::SqliteType {
diesel::sqlite::SqliteType::Text
}
}
impl diesel::sql_types::HasSqlType<Time> for diesel::mysql::Mysql {
fn metadata(_: &mut ()) -> diesel::mysql::MysqlType {
diesel::mysql::MysqlType::Time
}
}
impl diesel::sql_types::HasSqlType<Time> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(1083, 1183)
}
}
};SqlType)]
329#[diesel(postgres_type(oid = 1083, array_oid = 1183))]
330#[diesel(sqlite_type(name = "Text"))]
331#[diesel(mysql_type(name = "Time"))]
332pub struct Time;
333
334#[cfg_attr(
352 feature = "chrono",
353 doc = " [NaiveDateTime]: chrono::naive::NaiveDateTime"
354)]
355#[cfg_attr(
356 not(feature = "chrono"),
357 doc = " [NaiveDateTime]: https://docs.rs/chrono/*/chrono/naive/struct.NaiveDateTime.html"
358)]
359#[cfg_attr(
360 feature = "time",
361 doc = " [`time::PrimitiveDateTime`]: time::PrimitiveDateTime"
362)]
363#[cfg_attr(
364 not(feature = "time"),
365 doc = " [`time::PrimitiveDateTime`]: https://docs.rs/time/0.3.9/time/struct.PrimitiveDateTime.html"
366)]
367#[cfg_attr(
368 feature = "time",
369 doc = " [`time::OffsetDateTime`]: time::OffsetDateTime"
370)]
371#[cfg_attr(
372 not(feature = "time"),
373 doc = " [`time::OffsetDateTime`]: https://docs.rs/time/0.3.9/time/struct.OffsetDateTime.html"
374)]
375#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Timestamp {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Timestamp")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Timestamp {
#[inline]
fn clone(&self) -> Timestamp { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Timestamp { }Copy, #[automatically_derived]
impl ::core::default::Default for Timestamp {
#[inline]
fn default() -> Timestamp { Timestamp {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for Timestamp {
type QueryId = Timestamp<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for Timestamp {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for Timestamp {}
impl diesel::sql_types::HasSqlType<Timestamp> for
diesel::sqlite::Sqlite {
fn metadata(_: &mut ()) -> diesel::sqlite::SqliteType {
diesel::sqlite::SqliteType::Text
}
}
impl diesel::sql_types::HasSqlType<Timestamp> for diesel::mysql::Mysql
{
fn metadata(_: &mut ()) -> diesel::mysql::MysqlType {
diesel::mysql::MysqlType::Timestamp
}
}
impl diesel::sql_types::HasSqlType<Timestamp> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(1114, 1115)
}
}
};SqlType)]
377#[diesel(postgres_type(oid = 1114, array_oid = 1115))]
378#[diesel(sqlite_type(name = "Text"))]
379#[diesel(mysql_type(name = "Timestamp"))]
380pub struct Timestamp;
381
382#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Json {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Json")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Json {
#[inline]
fn clone(&self) -> Json { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Json { }Copy, #[automatically_derived]
impl ::core::default::Default for Json {
#[inline]
fn default() -> Json { Json {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for Json {
type QueryId = Json<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for Json {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for Json {}
impl diesel::sql_types::HasSqlType<Json> for diesel::sqlite::Sqlite {
fn metadata(_: &mut ()) -> diesel::sqlite::SqliteType {
diesel::sqlite::SqliteType::Text
}
}
impl diesel::sql_types::HasSqlType<Json> for diesel::mysql::Mysql {
fn metadata(_: &mut ()) -> diesel::mysql::MysqlType {
diesel::mysql::MysqlType::String
}
}
impl diesel::sql_types::HasSqlType<Json> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(114, 199)
}
}
};SqlType)]
400#[diesel(postgres_type(oid = 114, array_oid = 199))]
401#[diesel(mysql_type(name = "String"))]
402#[diesel(sqlite_type(name = "Text"))]
403pub struct Json;
404
405#[cfg_attr(
456 feature = "serde_json",
457 doc = "[`serde_json::Value`]: serde_json::value::Value"
458)]
459#[cfg_attr(
460 not(feature = "serde_json"),
461 doc = "[`serde_json::Value`]: https://docs.rs/serde_json/1.0.64/serde_json/value/enum.Value.html"
462)]
463#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Jsonb {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Jsonb")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Jsonb {
#[inline]
fn clone(&self) -> Jsonb { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for Jsonb { }Copy, #[automatically_derived]
impl ::core::default::Default for Jsonb {
#[inline]
fn default() -> Jsonb { Jsonb {} }
}Default, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for Jsonb {
type QueryId = Jsonb<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};QueryId, const _: () =
{
use diesel;
impl diesel::sql_types::SqlType for Jsonb {
type IsNull = diesel::sql_types::is_nullable::NotNull;
const IS_ARRAY: bool = false;
}
impl diesel::sql_types::SingleValue for Jsonb {}
impl diesel::sql_types::HasSqlType<Jsonb> for diesel::sqlite::Sqlite {
fn metadata(_: &mut ()) -> diesel::sqlite::SqliteType {
diesel::sqlite::SqliteType::Binary
}
}
impl diesel::sql_types::HasSqlType<Jsonb> for diesel::pg::Pg {
fn metadata(_: &mut Self::MetadataLookup)
-> diesel::pg::PgTypeMetadata {
diesel::pg::PgTypeMetadata::new(3802, 3807)
}
}
};SqlType)]
526#[diesel(postgres_type(oid = 3802, array_oid = 3807))]
527#[diesel(sqlite_type(name = "Binary"))]
528pub struct Jsonb;
529
530#[derive(#[automatically_derived]
impl<ST: ::core::fmt::Debug> ::core::fmt::Debug for Nullable<ST> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Nullable",
&&self.0)
}
}Debug, #[automatically_derived]
impl<ST: ::core::clone::Clone> ::core::clone::Clone for Nullable<ST> {
#[inline]
fn clone(&self) -> Nullable<ST> {
Nullable(::core::clone::Clone::clone(&self.0))
}
}Clone, #[automatically_derived]
impl<ST: ::core::marker::Copy> ::core::marker::Copy for Nullable<ST> { }Copy, #[automatically_derived]
impl<ST: ::core::default::Default> ::core::default::Default for Nullable<ST> {
#[inline]
fn default() -> Nullable<ST> {
Nullable(::core::default::Default::default())
}
}Default)]
544pub struct Nullable<ST>(ST);
545
546impl<ST> SqlType for Nullable<ST>
547where
548 ST: SqlType,
549{
550 type IsNull = is_nullable::IsNullable;
551}
552
553#[doc(inline)]
554#[cfg(feature = "postgres_backend")]
555pub use crate::pg::sql_types::*;
556
557#[doc(inline)]
558#[cfg(feature = "mysql_backend")]
559pub use crate::mysql::sql_types::{Datetime, Unsigned};
560
561#[doc(inline)]
562#[cfg(feature = "__sqlite-shared")]
563pub use crate::sqlite::sql_types::Timestamptz as TimestamptzSqlite;
564
565pub trait HasSqlType<ST>: TypeMetadata {
579 fn metadata(lookup: &mut Self::MetadataLookup) -> Self::TypeMetadata;
584}
585
586pub trait TypeMetadata {
588 type TypeMetadata;
594 type MetadataLookup: ?Sized;
599}
600
601pub trait IntoNullable {
604 type Nullable;
608}
609
610impl<T> IntoNullable for T
611where
612 T: SqlType<IsNull = is_nullable::NotNull> + SingleValue,
613{
614 type Nullable = Nullable<T>;
615}
616
617impl<T> IntoNullable for Nullable<T>
618where
619 T: SqlType,
620{
621 type Nullable = Self;
622}
623
624pub trait IntoNotNullable {
627 type NotNullable;
631}
632
633impl<T> IntoNotNullable for T
634where
635 T: SqlType<IsNull = is_nullable::NotNull>,
636{
637 type NotNullable = T;
638}
639
640impl<T> IntoNotNullable for Nullable<T>
641where
642 T: SqlType,
643{
644 type NotNullable = T;
645}
646
647pub trait SingleValue: SqlType {}
658
659impl<T: SqlType + SingleValue> SingleValue for Nullable<T> {}
660
661#[doc(inline)]
662pub use diesel_derives::DieselNumericOps;
663#[doc(inline)]
664pub use diesel_derives::SqlType;
665
666pub trait SqlType: 'static {
673 type IsNull: OneIsNullable<is_nullable::IsNullable> + OneIsNullable<is_nullable::NotNull>;
680
681 #[doc(hidden)]
682 const IS_ARRAY: bool = false;
683}
684
685#[doc = " A marker trait for SQL types representing database side enums"]
#[doc = ""]
#[doc =
" This trait describes how an enum should be mapped to the underlying database storage type"]
#[doc = " by specifying one of a set of different strategies."]
#[doc = ""]
#[doc =
" The generic constant `HAS_EXPLICIT_DISCRIMINANT` can be used to enforce that for a given mapping"]
#[doc =
" the user needs to provide explicit discriminant values. The [`#[derive(Enum)]`](crate::types::Enum) macro"]
#[doc = " will pass the true only if this is the case."]
#[doc = ""]
#[doc =
" The generic type `DB` represents the database backend for which this mapping is valid"]
#[doc = ""]
#[doc = " # Deriving"]
#[doc = ""]
#[doc =
" This trait can be automatically derived by using [`#[derive(SqlType)]`](derive@SqlType)"]
#[doc = " with the `#[diesel(enum_type)]` attribute"]
pub trait EnumSqlType<const HAS_EXPLICIT_DISCRIMINANT : bool,
DB: Backend>: SqlType {
type Strategy: crate::types::enum_::EnumMapping<DB>;
}#[diesel_derives::__diesel_public_if(
701 feature = "i-implement-a-third-party-backend-and-opt-into-breaking-changes"
702)]
703pub trait EnumSqlType<const HAS_EXPLICIT_DISCRIMINANT: bool, DB: Backend>: SqlType {
705 type Strategy: crate::types::enum_::EnumMapping<DB>;
709}
710
711pub trait OneIsNullable<Other> {
715 type Out: OneIsNullable<is_nullable::IsNullable> + OneIsNullable<is_nullable::NotNull>;
717}
718
719pub trait AllAreNullable<Other> {
721 type Out: AllAreNullable<is_nullable::NotNull> + AllAreNullable<is_nullable::IsNullable>;
723}
724
725pub trait MaybeNullableType<O> {
730 type Out: SqlType + TypedExpressionType;
732}
733
734pub mod is_nullable {
736 use super::*;
737
738 #[derive(#[automatically_derived]
impl ::core::fmt::Debug for NotNull {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NotNull")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for NotNull {
#[inline]
fn clone(&self) -> NotNull { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for NotNull { }Copy)]
743 pub struct NotNull;
744
745 #[derive(#[automatically_derived]
impl ::core::fmt::Debug for IsNullable {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "IsNullable")
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for IsNullable {
#[inline]
fn clone(&self) -> IsNullable { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for IsNullable { }Copy)]
751 pub struct IsNullable;
752
753 impl OneIsNullable<NotNull> for NotNull {
754 type Out = NotNull;
755 }
756
757 impl OneIsNullable<IsNullable> for NotNull {
758 type Out = IsNullable;
759 }
760
761 impl OneIsNullable<NotNull> for IsNullable {
762 type Out = IsNullable;
763 }
764
765 impl OneIsNullable<IsNullable> for IsNullable {
766 type Out = IsNullable;
767 }
768
769 impl AllAreNullable<NotNull> for NotNull {
770 type Out = NotNull;
771 }
772
773 impl AllAreNullable<IsNullable> for NotNull {
774 type Out = NotNull;
775 }
776
777 impl AllAreNullable<NotNull> for IsNullable {
778 type Out = NotNull;
779 }
780
781 impl AllAreNullable<IsNullable> for IsNullable {
782 type Out = IsNullable;
783 }
784
785 impl<O> MaybeNullableType<O> for NotNull
786 where
787 O: SqlType + TypedExpressionType,
788 {
789 type Out = O;
790 }
791
792 impl<O> MaybeNullableType<O> for IsNullable
793 where
794 O: SqlType,
795 Nullable<O>: TypedExpressionType,
796 {
797 type Out = Nullable<O>;
798 }
799
800 pub type MaybeNullable<N, T> = <N as MaybeNullableType<T>>::Out;
802
803 pub type OneNullable<T1, T2> = <T1 as OneIsNullable<T2>>::Out;
805
806 pub type IsOneNullable<S1, S2> = OneNullable<IsSqlTypeNullable<S1>, IsSqlTypeNullable<S2>>;
809
810 pub type AreAllNullable<S1, S2> =
813 <IsSqlTypeNullable<S1> as AllAreNullable<IsSqlTypeNullable<S2>>>::Out;
814
815 pub type IsSqlTypeNullable<T> = <T as SqlType>::IsNull;
817}
818
819#[diagnostic::on_unimplemented(
822 message = "`{Self}` is neither `diesel::sql_types::Bool` nor `diesel::sql_types::Nullable<Bool>`",
823 note = "try to provide an expression that produces one of the expected sql types"
824)]
825pub trait BoolOrNullableBool {}
826
827impl BoolOrNullableBool for Bool {}
828impl BoolOrNullableBool for Nullable<Bool> {}
829
830#[doc(inline)]
831pub use crate::expression::expression_types::Untyped;
832
833pub(crate) mod helper {
834 use super::{MaybeNullableType, OneIsNullable, SingleValue};
835
836 pub trait CombinedNullableValue<O, Out>: SingleValue {
837 type Out: SingleValue;
838 }
839
840 impl<T, O, Out> CombinedNullableValue<O, Out> for T
841 where
842 T: SingleValue,
843 O: SingleValue,
844 T::IsNull: OneIsNullable<O::IsNull>,
845 <T::IsNull as OneIsNullable<O::IsNull>>::Out: MaybeNullableType<Out>,
846 <<T::IsNull as OneIsNullable<O::IsNull>>::Out as MaybeNullableType<Out>>::Out: SingleValue,
847 {
848 type Out = <<T::IsNull as OneIsNullable<O::IsNull>>::Out as MaybeNullableType<Out>>::Out;
849 }
850}