1#[macro_export]
2#[doc(hidden)]
3macro_rules! __diesel_operator_body {
4 (
5 notation = $notation:ident,
6 struct_name = $name:ident,
7 operator = $operator:expr,
8 return_ty = (ReturnBasedOnArgs),
9 ty_params = ($($ty_param:ident,)+),
10 field_names = $field_names:tt,
11 backend_ty_params = $backend_ty_params:tt,
12 backend_ty = $backend_ty:ty,
13 ) => {
14 $crate::__diesel_operator_body! {
15 notation = $notation,
16 struct_name = $name,
17 operator = $operator,
18 return_ty = (ST),
19 ty_params = ($($ty_param,)+),
20 field_names = $field_names,
21 backend_ty_params = $backend_ty_params,
22 backend_ty = $backend_ty,
23 expression_ty_params = (ST,),
24 expression_bounds = ($($ty_param: $crate::expression::Expression<SqlType = ST>,)+),
25 }
26 };
27
28 (
29 notation = $notation:ident,
30 struct_name = $name:ident,
31 operator = $operator:expr,
32 return_ty = ($($return_ty:tt)+),
33 ty_params = ($($ty_param:ident,)+),
34 field_names = $field_names:tt,
35 backend_ty_params = $backend_ty_params:tt,
36 backend_ty = $backend_ty:ty,
37 ) => {
38 $crate::__diesel_operator_body! {
39 notation = $notation,
40 struct_name = $name,
41 operator = $operator,
42 return_ty = ($($return_ty)*),
43 ty_params = ($($ty_param,)+),
44 field_names = $field_names,
45 backend_ty_params = $backend_ty_params,
46 backend_ty = $backend_ty,
47 expression_ty_params = (),
48 expression_bounds = ($($ty_param: $crate::expression::Expression,)+),
49 }
50 };
51
52 (
53 notation = $notation:ident,
54 struct_name = $name:ident,
55 operator = $operator:expr,
56 return_ty = ($($return_ty:tt)+),
57 ty_params = ($($ty_param:ident,)+),
58 field_names = ($($field_name:ident,)+),
59 backend_ty_params = ($($backend_ty_param:ident,)*),
60 backend_ty = $backend_ty:ty,
61 expression_ty_params = ($($expression_ty_params:ident,)*),
62 expression_bounds = ($($expression_bounds:tt)*),
63 ) => {
64 #[derive(
65 Debug,
66 Clone,
67 Copy,
68 $crate::query_builder::QueryId,
69 $crate::sql_types::DieselNumericOps,
70 $crate::expression::ValidGrouping
71 )]
72 #[doc(hidden)]
73 #[allow(unreachable_pub)]
74 pub struct $name<$($ty_param,)+> {
75 $(pub(crate) $field_name: $ty_param,)+
76 }
77
78 impl<$($ty_param,)+> $name<$($ty_param,)+> {
79 #[allow(dead_code)]
80 pub(crate) fn new($($field_name: $ty_param,)+) -> Self {
81 $name { $($field_name,)+ }
82 }
83 }
84
85 $crate::impl_selectable_expression!($name<$($ty_param),+>);
86
87 impl<$($ty_param,)+ $($expression_ty_params,)*> $crate::expression::Expression for $name<$($ty_param,)+> where
88 $($expression_bounds)*
89 {
90 type SqlType = $($return_ty)*;
91 }
92
93 impl<$($ty_param,)+ $($backend_ty_param,)*> $crate::query_builder::QueryFragment<$backend_ty>
94 for $name<$($ty_param,)+> where
95 $($ty_param: $crate::query_builder::QueryFragment<$backend_ty>,)+
96 $($backend_ty_param: $crate::backend::Backend,)*
97 {
98 fn walk_ast<'b>(
99 &'b self,
100 mut out: $crate::query_builder::AstPass<'_, 'b, $backend_ty>
101 ) -> $crate::result::QueryResult<()>
102 {
103 $crate::__diesel_operator_to_sql!(
104 notation = $notation,
105 operator_expr = out.push_sql($operator),
106 field_exprs = ($(self.$field_name.walk_ast(out.reborrow())?),+),
107 );
108 Ok(())
109 }
110 }
111
112 impl<S, $($ty_param,)+> $crate::internal::operators_macro::FieldAliasMapper<S> for $name<$($ty_param,)+>
113 where
114 S: $crate::query_source::AliasSource,
115 $($ty_param: $crate::internal::operators_macro::FieldAliasMapper<S>,)+
116 {
117 type Out = $name<
118 $(<$ty_param as $crate::internal::operators_macro::FieldAliasMapper<S>>::Out,)+
119 >;
120 fn map(self, alias: &$crate::query_source::Alias<S>) -> Self::Out {
121 $name {
122 $($field_name: self.$field_name.map(alias),)+
123 }
124 }
125 }
126 }
127}
128
129#[macro_export]
130#[doc(hidden)]
131macro_rules! __diesel_operator_to_sql {
132 (
133 notation = infix,
134 operator_expr = $op:expr,
135 field_exprs = ($left:expr, $right:expr),
136 ) => {
137 $left;
138 $op;
139 $right;
140 };
141
142 (
143 notation = postfix,
144 operator_expr = $op:expr,
145 field_exprs = ($expr:expr),
146 ) => {
147 $expr;
148 $op;
149 };
150
151 (
152 notation = prefix,
153 operator_expr = $op:expr,
154 field_exprs = ($expr:expr),
155 ) => {
156 $op;
157 $expr;
158 };
159}
160
161#[macro_export]
240macro_rules! infix_operator {
241 ($name:ident, $operator:expr) => {
242 $crate::infix_operator!($name, $operator, $crate::sql_types::Bool);
243 };
244
245 ($name:ident, $operator:expr, backend: $backend:ty) => {
246 $crate::infix_operator!($name, $operator, $crate::sql_types::Bool, backend: $backend);
247 };
248
249 ($name:ident, $operator:expr, $return_ty:ty) => {
250 $crate::__diesel_infix_operator!(
251 name = $name,
252 operator = $operator,
253 return_ty = NullableBasedOnArgs ($return_ty),
254 backend_ty_params = (DB,),
255 backend_ty = DB,
256 );
257 };
258
259 ($name:ident, $operator:expr, $return_ty:ty, backend: $backend:ty) => {
260 $crate::__diesel_infix_operator!(
261 name = $name,
262 operator = $operator,
263 return_ty = NullableBasedOnArgs ($return_ty),
264 backend_ty_params = (),
265 backend_ty = $backend,
266 );
267 };
268
269}
270#[macro_export]
271#[doc(hidden)]
272macro_rules! __diesel_infix_operator {
273 ($name:ident, $operator:expr, ConstantNullability $return_ty:ty) => {
274 $crate::__diesel_infix_operator!(
275 name = $name,
276 operator = $operator,
277 return_ty = ($return_ty),
278 backend_ty_params = (DB,),
279 backend_ty = DB,
280 );
281 };
282 ($name:ident, $operator:expr, __diesel_internal_SameResultAsInput, backend: $backend:ty) => {
283 $crate::__diesel_infix_operator!(
284 name = $name,
285 operator = $operator,
286 return_ty = (<T as $crate::expression::Expression>::SqlType),
287 backend_ty_params = (),
288 backend_ty = $backend,
289 );
290 };
291 ($name:ident, $operator:expr, ConstantNullability $return_ty:ty, backend: $backend:ty) => {
292 $crate::__diesel_infix_operator!(
293 name = $name,
294 operator = $operator,
295 return_ty = ($return_ty),
296 backend_ty_params = (),
297 backend_ty = $backend,
298 );
299 };
300
301 (
302 name = $name:ident,
303 operator = $operator:expr,
304 return_ty = NullableBasedOnArgs ($($return_ty:tt)+),
305 backend_ty_params = $backend_ty_params:tt,
306 backend_ty = $backend_ty:ty,
307 ) => {
308 $crate::__diesel_infix_operator!(
309 name = $name,
310 operator = $operator,
311 return_ty = (
312 $crate::sql_types::is_nullable::MaybeNullable<
313 $crate::sql_types::is_nullable::IsOneNullable<
314 <T as $crate::expression::Expression>::SqlType,
315 <U as $crate::expression::Expression>::SqlType
316 >,
317 $($return_ty)+
318 >
319 ),
320 expression_bounds = (
321 $crate::sql_types::is_nullable::IsSqlTypeNullable<
322 <T as $crate::expression::Expression>::SqlType
323 >: $crate::sql_types::OneIsNullable<
324 $crate::sql_types::is_nullable::IsSqlTypeNullable<
325 <U as $crate::expression::Expression>::SqlType
326 >
327 >,
328 $crate::sql_types::is_nullable::IsOneNullable<
329 <T as $crate::expression::Expression>::SqlType,
330 <U as $crate::expression::Expression>::SqlType
331 >: $crate::sql_types::MaybeNullableType<$($return_ty)+>,
332 ),
333 backend_ty_params = $backend_ty_params,
334 backend_ty = $backend_ty,
335 );
336 };
337
338 (
339 name = $name:ident,
340 operator = $operator:expr,
341 return_ty = ($($return_ty:tt)+),
342 backend_ty_params = $backend_ty_params:tt,
343 backend_ty = $backend_ty:ty,
344 ) => {
345 $crate::__diesel_infix_operator!(
346 name = $name,
347 operator = $operator,
348 return_ty = ($($return_ty)+),
349 expression_bounds = (),
350 backend_ty_params = $backend_ty_params,
351 backend_ty = $backend_ty,
352 );
353 };
354
355 (
356 name = $name:ident,
357 operator = $operator:expr,
358 return_ty = ($($return_ty:tt)+),
359 expression_bounds = ($($expression_bounds:tt)*),
360 backend_ty_params = $backend_ty_params:tt,
361 backend_ty = $backend_ty:ty,
362 ) => {
363 $crate::__diesel_operator_body!(
364 notation = infix,
365 struct_name = $name,
366 operator = $operator,
367 return_ty = ($($return_ty)+),
368 ty_params = (T, U,),
369 field_names = (left, right,),
370 backend_ty_params = $backend_ty_params,
371 backend_ty = $backend_ty,
372 expression_ty_params = (),
373 expression_bounds = (
374 T: $crate::expression::Expression,
375 U: $crate::expression::Expression,
376 <T as $crate::expression::Expression>::SqlType: $crate::sql_types::SqlType,
377 <U as $crate::expression::Expression>::SqlType: $crate::sql_types::SqlType,
378 $($expression_bounds)*
379 ),
380 );
381 };
382}
383
384#[macro_export]
385#[deprecated(since = "2.0.0", note = "use `diesel::infix_operator!` instead")]
386#[cfg(all(feature = "with-deprecated", not(feature = "without-deprecated")))]
387#[doc(hidden)]
388macro_rules! diesel_infix_operator {
389 ($($args:tt)*) => {
390 $crate::infix_operator!($($args)*);
391 }
392}
393
394#[macro_export]
401macro_rules! postfix_operator {
402 ($name:ident, $operator:expr) => {
403 $crate::postfix_operator!($name, $operator, $crate::sql_types::Bool);
404 };
405
406 ($name:ident, $operator:expr, backend: $backend:ty) => {
407 $crate::postfix_operator!($name, $operator, $crate::sql_types::Bool, backend: $backend);
408 };
409
410 ($name:ident, $operator:expr, ConditionalNullability $($return_ty:tt)::*) => {
411 $crate::postfix_operator!(
412 name = $name,
413 operator = $operator,
414 return_ty = NullableBasedOnArgs ($($return_ty)::*),
415 );
416 };
417
418 ($name:ident, $operator:expr, ConditionalNullability $($return_ty:tt)::*, backend: $backend:ty) => {
419 $crate::postfix_operator!(
420 $name,
421 $operator,
422 return_ty = NullableBasedOnArgs ($($return_ty)::*),
423 backend: $backend
424 );
425 };
426
427 ($name:ident, $operator:expr, return_ty = NullableBasedOnArgs($return_ty:ty)) => {
428 $crate::__diesel_operator_body!(
429 notation = postfix,
430 struct_name = $name,
431 operator = $operator,
432 return_ty = (
433 $crate::sql_types::is_nullable::MaybeNullable<
434 <<Expr as $crate::expression::Expression>::SqlType as $crate::sql_types::SqlType>::IsNull,
435 $return_ty
436 >
437 ),
438 ty_params = (Expr,),
439 field_names = (expr,),
440 backend_ty_params = (DB,),
441 backend_ty = DB,
442 expression_ty_params = (),
443 expression_bounds = (
444 Expr: $crate::expression::Expression,
445 <Expr as $crate::expression::Expression>::SqlType: $crate::sql_types::SqlType,
446 $crate::sql_types::is_nullable::IsOneNullable<
447 <Expr as $crate::expression::Expression>::SqlType,
448 $return_ty
449 >: $crate::sql_types::MaybeNullableType<$return_ty>,
450 ),
451 );
452 };
453
454 ($name:ident, $operator:expr, return_ty = NullableBasedOnArgs($return_ty:ty), backend: $backend:ty) => {
455 $crate::__diesel_operator_body!(
456 notation = postfix,
457 struct_name = $name,
458 operator = $operator,
459 return_ty = (
460 $crate::sql_types::is_nullable::MaybeNullable<
461 $crate::sql_types::is_nullable::IsOneNullable<
462 <Expr as $crate::expression::Expression>::SqlType,
463 $return_ty
464 >,
465 $return_ty
466 >
467 ),
468 ty_params = (Expr,),
469 field_names = (expr,),
470 backend_ty_params = (),
471 backend_ty = $backend,
472 expression_ty_params = (),
473 expression_bounds = (
474 Expr: $crate::expression::Expression,
475 <Expr as $crate::expression::Expression>::SqlType: $crate::sql_types::SqlType,
476 $crate::sql_types::is_nullable::IsOneNullable<
477 <Expr as $crate::expression::Expression>::SqlType,
478 $return_ty
479 >: $crate::sql_types::MaybeNullableType<$return_ty>,
480 ),
481 );
482 };
483
484 ($name:ident, $operator:expr, $return_ty:ty) => {
485 $crate::__diesel_operator_body!(
486 notation = postfix,
487 struct_name = $name,
488 operator = $operator,
489 return_ty = ($return_ty),
490 ty_params = (Expr,),
491 field_names = (expr,),
492 backend_ty_params = (DB,),
493 backend_ty = DB,
494 );
495 };
496
497 ($name:ident, $operator:expr, $return_ty:ty, backend: $backend:ty) => {
498 $crate::__diesel_operator_body!(
499 notation = postfix,
500 struct_name = $name,
501 operator = $operator,
502 return_ty = ($return_ty),
503 ty_params = (Expr,),
504 field_names = (expr,),
505 backend_ty_params = (),
506 backend_ty = $backend,
507 );
508 };
509}
510
511#[macro_export]
512#[deprecated(since = "2.0.0", note = "use `diesel::postfix_operator!` instead")]
513#[cfg(all(feature = "with-deprecated", not(feature = "without-deprecated")))]
514#[doc(hidden)]
515macro_rules! diesel_postfix_operator {
516 ($($args:tt)*) => {
517 $crate::postfix_operator!($($args)*);
518 }
519}
520
521#[macro_export]
528macro_rules! prefix_operator {
529 ($name:ident, $operator:expr) => {
530 $crate::prefix_operator!($name, $operator, $crate::sql_types::Bool);
531 };
532
533 ($name:ident, $operator:expr, backend: $backend:ty) => {
534 $crate::prefix_operator!($name, $operator, $crate::sql_types::Bool, backend: $backend);
535 };
536
537 ($name:ident, $operator:expr, $return_ty:ty) => {
538 $crate::__diesel_operator_body!(
539 notation = prefix,
540 struct_name = $name,
541 operator = $operator,
542 return_ty = (
543 $crate::sql_types::is_nullable::MaybeNullable<
544 $crate::sql_types::is_nullable::IsSqlTypeNullable<
545 <Expr as $crate::expression::Expression>::SqlType
546 >,
547 $return_ty,
548 >
549 ),
550 ty_params = (Expr,),
551 field_names = (expr,),
552 backend_ty_params = (DB,),
553 backend_ty = DB,
554 expression_ty_params = (),
555 expression_bounds = (
556 Expr: $crate::expression::Expression,
557 <Expr as $crate::expression::Expression>::SqlType: $crate::sql_types::SqlType,
558 $crate::sql_types::is_nullable::IsSqlTypeNullable<
559 <Expr as $crate::expression::Expression>::SqlType
560 >: $crate::sql_types::MaybeNullableType<$return_ty>,
561 ),
562 );
563 };
564
565 ($name:ident, $operator:expr, $return_ty:ty, backend: $backend:ty) => {
566 $crate::__diesel_operator_body!(
567 notation = prefix,
568 struct_name = $name,
569 operator = $operator,
570 return_ty = (
571 $crate::sql_types::is_nullable::MaybeNullable<
572 $crate::sql_types::is_nullable::IsSqlTypeNullable<
573 <Expr as $crate::expression::Expression>::SqlType
574 >,
575 $return_ty,
576 >
577 ),
578 ty_params = (Expr,),
579 field_names = (expr,),
580 backend_ty_params = (),
581 backend_ty = $backend,
582 expression_ty_params = (),
583 expression_bounds = (
584 Expr: $crate::expression::Expression,
585 <Expr as $crate::expression::Expression>::SqlType: $crate::sql_types::SqlType,
586 $crate::sql_types::is_nullable::IsSqlTypeNullable<
587 <Expr as $crate::expression::Expression>::SqlType
588 >: $crate::sql_types::MaybeNullableType<$return_ty>,
589 ),
590 );
591 };
592}
593
594#[macro_export]
595#[deprecated(since = "2.0.0", note = "use `diesel::prefix_operator!` instead")]
596#[cfg(all(feature = "with-deprecated", not(feature = "without-deprecated")))]
597#[doc(hidden)]
598macro_rules! diesel_prefix_operator {
599 ($($args:tt)*) => {
600 $crate::prefix_operator!($($args)*);
601 }
602}
603
604#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct And<T, U> {
pub(crate) left: T,
pub(crate) right: U,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::fmt::Debug, U: ::core::fmt::Debug> ::core::fmt::Debug for
And<T, U> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "And", "left",
&self.left, "right", &&self.right)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::clone::Clone, U: ::core::clone::Clone> ::core::clone::Clone
for And<T, U> {
#[inline]
fn clone(&self) -> And<T, U> {
And {
left: ::core::clone::Clone::clone(&self.left),
right: ::core::clone::Clone::clone(&self.right),
}
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::marker::Copy, U: ::core::marker::Copy> ::core::marker::Copy
for And<T, U> {
}
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<T: diesel::query_builder::QueryId,
U: diesel::query_builder::QueryId> diesel::query_builder::QueryId
for And<T, U> {
type QueryId =
And<<T as diesel::query_builder::QueryId>::QueryId,
<U as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<T as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID &&
<U as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<T as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
<U as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<T, U, __Rhs> ::std::ops::Add<__Rhs> for And<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Sub<__Rhs> for And<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Mul<__Rhs> for And<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Div<__Rhs> for And<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<T, U, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for And<T, U>
where T: diesel::expression::ValidGrouping<__GroupByClause>,
U: diesel::expression::ValidGrouping<__GroupByClause>,
<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate: diesel::expression::MixedAggregates<<U
as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>
{
type IsAggregate =
<<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate
as
diesel::expression::MixedAggregates<<U as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
};
impl<T, U> And<T, U> {
#[allow(dead_code)]
pub(crate) fn new(left: T, right: U) -> Self { And { left, right } }
}
impl<T, U, QS> crate::expression::SelectableExpression<QS> for And<T, U> where
And<T, U>: crate::expression::AppearsOnTable<QS>,
T: crate::expression::SelectableExpression<QS>,
U: crate::expression::SelectableExpression<QS> {}
impl<T, U, QS> crate::expression::AppearsOnTable<QS> for And<T, U> where
And<T, U>: crate::expression::Expression,
T: crate::expression::AppearsOnTable<QS>,
U: crate::expression::AppearsOnTable<QS> {}
impl<T, U> crate::expression::Expression for And<T, U> where
T: crate::expression::Expression, U: crate::expression::Expression,
<T as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
<U as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
crate::sql_types::is_nullable::IsSqlTypeNullable<<T as
crate::expression::Expression>::SqlType>: crate::sql_types::OneIsNullable<crate::sql_types::is_nullable::IsSqlTypeNullable<<U
as crate::expression::Expression>::SqlType>>,
crate::sql_types::is_nullable::IsOneNullable<<T as
crate::expression::Expression>::SqlType,
<U as
crate::expression::Expression>::SqlType>: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>
{
type SqlType =
crate::sql_types::is_nullable::MaybeNullable<crate::sql_types::is_nullable::IsOneNullable<<T
as crate::expression::Expression>::SqlType,
<U as crate::expression::Expression>::SqlType>,
crate::sql_types::Bool>;
}
impl<T, U, DB> crate::query_builder::QueryFragment<DB> for And<T, U> where
T: crate::query_builder::QueryFragment<DB>,
U: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend {
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.left.walk_ast(out.reborrow())?;
out.push_sql(" AND ");
self.right.walk_ast(out.reborrow())?;
;
Ok(())
}
}
impl<S, T, U> crate::internal::operators_macro::FieldAliasMapper<S> for
And<T, U> where S: crate::query_source::AliasSource,
T: crate::internal::operators_macro::FieldAliasMapper<S>,
U: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
And<<T as crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
<U as crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
And { left: self.left.map(alias), right: self.right.map(alias) }
}
}infix_operator!(And, " AND ");
605#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct Or<T, U> {
pub(crate) left: T,
pub(crate) right: U,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::fmt::Debug, U: ::core::fmt::Debug> ::core::fmt::Debug for
Or<T, U> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Or", "left",
&self.left, "right", &&self.right)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::clone::Clone, U: ::core::clone::Clone> ::core::clone::Clone
for Or<T, U> {
#[inline]
fn clone(&self) -> Or<T, U> {
Or {
left: ::core::clone::Clone::clone(&self.left),
right: ::core::clone::Clone::clone(&self.right),
}
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::marker::Copy, U: ::core::marker::Copy> ::core::marker::Copy
for Or<T, U> {
}
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<T: diesel::query_builder::QueryId,
U: diesel::query_builder::QueryId> diesel::query_builder::QueryId
for Or<T, U> {
type QueryId =
Or<<T as diesel::query_builder::QueryId>::QueryId,
<U as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<T as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID &&
<U as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<T as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
<U as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<T, U, __Rhs> ::std::ops::Add<__Rhs> for Or<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Sub<__Rhs> for Or<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Mul<__Rhs> for Or<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Div<__Rhs> for Or<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<T, U, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for Or<T, U>
where T: diesel::expression::ValidGrouping<__GroupByClause>,
U: diesel::expression::ValidGrouping<__GroupByClause>,
<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate: diesel::expression::MixedAggregates<<U
as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>
{
type IsAggregate =
<<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate
as
diesel::expression::MixedAggregates<<U as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
};
impl<T, U> Or<T, U> {
#[allow(dead_code)]
pub(crate) fn new(left: T, right: U) -> Self { Or { left, right } }
}
impl<T, U, QS> crate::expression::SelectableExpression<QS> for Or<T, U> where
Or<T, U>: crate::expression::AppearsOnTable<QS>,
T: crate::expression::SelectableExpression<QS>,
U: crate::expression::SelectableExpression<QS> {}
impl<T, U, QS> crate::expression::AppearsOnTable<QS> for Or<T, U> where
Or<T, U>: crate::expression::Expression,
T: crate::expression::AppearsOnTable<QS>,
U: crate::expression::AppearsOnTable<QS> {}
impl<T, U> crate::expression::Expression for Or<T, U> where
T: crate::expression::Expression, U: crate::expression::Expression,
<T as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
<U as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
crate::sql_types::is_nullable::IsSqlTypeNullable<<T as
crate::expression::Expression>::SqlType>: crate::sql_types::OneIsNullable<crate::sql_types::is_nullable::IsSqlTypeNullable<<U
as crate::expression::Expression>::SqlType>>,
crate::sql_types::is_nullable::IsOneNullable<<T as
crate::expression::Expression>::SqlType,
<U as
crate::expression::Expression>::SqlType>: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>
{
type SqlType =
crate::sql_types::is_nullable::MaybeNullable<crate::sql_types::is_nullable::IsOneNullable<<T
as crate::expression::Expression>::SqlType,
<U as crate::expression::Expression>::SqlType>,
crate::sql_types::Bool>;
}
impl<T, U, DB> crate::query_builder::QueryFragment<DB> for Or<T, U> where
T: crate::query_builder::QueryFragment<DB>,
U: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend {
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.left.walk_ast(out.reborrow())?;
out.push_sql(" OR ");
self.right.walk_ast(out.reborrow())?;
;
Ok(())
}
}
impl<S, T, U> crate::internal::operators_macro::FieldAliasMapper<S> for
Or<T, U> where S: crate::query_source::AliasSource,
T: crate::internal::operators_macro::FieldAliasMapper<S>,
U: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
Or<<T as crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
<U as crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
Or { left: self.left.map(alias), right: self.right.map(alias) }
}
}infix_operator!(Or, " OR ");
606#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct Escape<T, U> {
pub(crate) left: T,
pub(crate) right: U,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::fmt::Debug, U: ::core::fmt::Debug> ::core::fmt::Debug for
Escape<T, U> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Escape",
"left", &self.left, "right", &&self.right)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::clone::Clone, U: ::core::clone::Clone> ::core::clone::Clone
for Escape<T, U> {
#[inline]
fn clone(&self) -> Escape<T, U> {
Escape {
left: ::core::clone::Clone::clone(&self.left),
right: ::core::clone::Clone::clone(&self.right),
}
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::marker::Copy, U: ::core::marker::Copy> ::core::marker::Copy
for Escape<T, U> {
}
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<T: diesel::query_builder::QueryId,
U: diesel::query_builder::QueryId> diesel::query_builder::QueryId
for Escape<T, U> {
type QueryId =
Escape<<T as diesel::query_builder::QueryId>::QueryId,
<U as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<T as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID &&
<U as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<T as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
<U as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<T, U, __Rhs> ::std::ops::Add<__Rhs> for Escape<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Sub<__Rhs> for Escape<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Mul<__Rhs> for Escape<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Div<__Rhs> for Escape<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<T, U, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for
Escape<T, U> where
T: diesel::expression::ValidGrouping<__GroupByClause>,
U: diesel::expression::ValidGrouping<__GroupByClause>,
<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate: diesel::expression::MixedAggregates<<U
as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>
{
type IsAggregate =
<<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate
as
diesel::expression::MixedAggregates<<U as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
};
impl<T, U> Escape<T, U> {
#[allow(dead_code)]
pub(crate) fn new(left: T, right: U) -> Self { Escape { left, right } }
}
impl<T, U, QS> crate::expression::SelectableExpression<QS> for Escape<T, U>
where Escape<T, U>: crate::expression::AppearsOnTable<QS>,
T: crate::expression::SelectableExpression<QS>,
U: crate::expression::SelectableExpression<QS> {}
impl<T, U, QS> crate::expression::AppearsOnTable<QS> for Escape<T, U> where
Escape<T, U>: crate::expression::Expression,
T: crate::expression::AppearsOnTable<QS>,
U: crate::expression::AppearsOnTable<QS> {}
impl<T, U> crate::expression::Expression for Escape<T, U> where
T: crate::expression::Expression, U: crate::expression::Expression,
<T as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
<U as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
crate::sql_types::is_nullable::IsSqlTypeNullable<<T as
crate::expression::Expression>::SqlType>: crate::sql_types::OneIsNullable<crate::sql_types::is_nullable::IsSqlTypeNullable<<U
as crate::expression::Expression>::SqlType>>,
crate::sql_types::is_nullable::IsOneNullable<<T as
crate::expression::Expression>::SqlType,
<U as
crate::expression::Expression>::SqlType>: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>
{
type SqlType =
crate::sql_types::is_nullable::MaybeNullable<crate::sql_types::is_nullable::IsOneNullable<<T
as crate::expression::Expression>::SqlType,
<U as crate::expression::Expression>::SqlType>,
crate::sql_types::Bool>;
}
impl<T, U, DB> crate::query_builder::QueryFragment<DB> for Escape<T, U> where
T: crate::query_builder::QueryFragment<DB>,
U: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend {
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.left.walk_ast(out.reborrow())?;
out.push_sql(" ESCAPE ");
self.right.walk_ast(out.reborrow())?;
;
Ok(())
}
}
impl<S, T, U> crate::internal::operators_macro::FieldAliasMapper<S> for
Escape<T, U> where S: crate::query_source::AliasSource,
T: crate::internal::operators_macro::FieldAliasMapper<S>,
U: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
Escape<<T as
crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
<U as crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
Escape { left: self.left.map(alias), right: self.right.map(alias) }
}
}infix_operator!(Escape, " ESCAPE ");
607#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct Eq<T, U> {
pub(crate) left: T,
pub(crate) right: U,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::fmt::Debug, U: ::core::fmt::Debug> ::core::fmt::Debug for
Eq<T, U> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Eq", "left",
&self.left, "right", &&self.right)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::clone::Clone, U: ::core::clone::Clone> ::core::clone::Clone
for Eq<T, U> {
#[inline]
fn clone(&self) -> Eq<T, U> {
Eq {
left: ::core::clone::Clone::clone(&self.left),
right: ::core::clone::Clone::clone(&self.right),
}
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::marker::Copy, U: ::core::marker::Copy> ::core::marker::Copy
for Eq<T, U> {
}
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<T: diesel::query_builder::QueryId,
U: diesel::query_builder::QueryId> diesel::query_builder::QueryId
for Eq<T, U> {
type QueryId =
Eq<<T as diesel::query_builder::QueryId>::QueryId,
<U as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<T as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID &&
<U as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<T as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
<U as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<T, U, __Rhs> ::std::ops::Add<__Rhs> for Eq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Sub<__Rhs> for Eq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Mul<__Rhs> for Eq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Div<__Rhs> for Eq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<T, U, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for Eq<T, U>
where T: diesel::expression::ValidGrouping<__GroupByClause>,
U: diesel::expression::ValidGrouping<__GroupByClause>,
<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate: diesel::expression::MixedAggregates<<U
as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>
{
type IsAggregate =
<<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate
as
diesel::expression::MixedAggregates<<U as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
};
impl<T, U> Eq<T, U> {
#[allow(dead_code)]
pub(crate) fn new(left: T, right: U) -> Self { Eq { left, right } }
}
impl<T, U, QS> crate::expression::SelectableExpression<QS> for Eq<T, U> where
Eq<T, U>: crate::expression::AppearsOnTable<QS>,
T: crate::expression::SelectableExpression<QS>,
U: crate::expression::SelectableExpression<QS> {}
impl<T, U, QS> crate::expression::AppearsOnTable<QS> for Eq<T, U> where
Eq<T, U>: crate::expression::Expression,
T: crate::expression::AppearsOnTable<QS>,
U: crate::expression::AppearsOnTable<QS> {}
impl<T, U> crate::expression::Expression for Eq<T, U> where
T: crate::expression::Expression, U: crate::expression::Expression,
<T as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
<U as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
crate::sql_types::is_nullable::IsSqlTypeNullable<<T as
crate::expression::Expression>::SqlType>: crate::sql_types::OneIsNullable<crate::sql_types::is_nullable::IsSqlTypeNullable<<U
as crate::expression::Expression>::SqlType>>,
crate::sql_types::is_nullable::IsOneNullable<<T as
crate::expression::Expression>::SqlType,
<U as
crate::expression::Expression>::SqlType>: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>
{
type SqlType =
crate::sql_types::is_nullable::MaybeNullable<crate::sql_types::is_nullable::IsOneNullable<<T
as crate::expression::Expression>::SqlType,
<U as crate::expression::Expression>::SqlType>,
crate::sql_types::Bool>;
}
impl<T, U, DB> crate::query_builder::QueryFragment<DB> for Eq<T, U> where
T: crate::query_builder::QueryFragment<DB>,
U: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend {
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.left.walk_ast(out.reborrow())?;
out.push_sql(" = ");
self.right.walk_ast(out.reborrow())?;
;
Ok(())
}
}
impl<S, T, U> crate::internal::operators_macro::FieldAliasMapper<S> for
Eq<T, U> where S: crate::query_source::AliasSource,
T: crate::internal::operators_macro::FieldAliasMapper<S>,
U: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
Eq<<T as crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
<U as crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
Eq { left: self.left.map(alias), right: self.right.map(alias) }
}
}infix_operator!(Eq, " = ");
608#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct Gt<T, U> {
pub(crate) left: T,
pub(crate) right: U,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::fmt::Debug, U: ::core::fmt::Debug> ::core::fmt::Debug for
Gt<T, U> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Gt", "left",
&self.left, "right", &&self.right)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::clone::Clone, U: ::core::clone::Clone> ::core::clone::Clone
for Gt<T, U> {
#[inline]
fn clone(&self) -> Gt<T, U> {
Gt {
left: ::core::clone::Clone::clone(&self.left),
right: ::core::clone::Clone::clone(&self.right),
}
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::marker::Copy, U: ::core::marker::Copy> ::core::marker::Copy
for Gt<T, U> {
}
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<T: diesel::query_builder::QueryId,
U: diesel::query_builder::QueryId> diesel::query_builder::QueryId
for Gt<T, U> {
type QueryId =
Gt<<T as diesel::query_builder::QueryId>::QueryId,
<U as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<T as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID &&
<U as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<T as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
<U as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<T, U, __Rhs> ::std::ops::Add<__Rhs> for Gt<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Sub<__Rhs> for Gt<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Mul<__Rhs> for Gt<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Div<__Rhs> for Gt<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<T, U, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for Gt<T, U>
where T: diesel::expression::ValidGrouping<__GroupByClause>,
U: diesel::expression::ValidGrouping<__GroupByClause>,
<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate: diesel::expression::MixedAggregates<<U
as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>
{
type IsAggregate =
<<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate
as
diesel::expression::MixedAggregates<<U as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
};
impl<T, U> Gt<T, U> {
#[allow(dead_code)]
pub(crate) fn new(left: T, right: U) -> Self { Gt { left, right } }
}
impl<T, U, QS> crate::expression::SelectableExpression<QS> for Gt<T, U> where
Gt<T, U>: crate::expression::AppearsOnTable<QS>,
T: crate::expression::SelectableExpression<QS>,
U: crate::expression::SelectableExpression<QS> {}
impl<T, U, QS> crate::expression::AppearsOnTable<QS> for Gt<T, U> where
Gt<T, U>: crate::expression::Expression,
T: crate::expression::AppearsOnTable<QS>,
U: crate::expression::AppearsOnTable<QS> {}
impl<T, U> crate::expression::Expression for Gt<T, U> where
T: crate::expression::Expression, U: crate::expression::Expression,
<T as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
<U as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
crate::sql_types::is_nullable::IsSqlTypeNullable<<T as
crate::expression::Expression>::SqlType>: crate::sql_types::OneIsNullable<crate::sql_types::is_nullable::IsSqlTypeNullable<<U
as crate::expression::Expression>::SqlType>>,
crate::sql_types::is_nullable::IsOneNullable<<T as
crate::expression::Expression>::SqlType,
<U as
crate::expression::Expression>::SqlType>: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>
{
type SqlType =
crate::sql_types::is_nullable::MaybeNullable<crate::sql_types::is_nullable::IsOneNullable<<T
as crate::expression::Expression>::SqlType,
<U as crate::expression::Expression>::SqlType>,
crate::sql_types::Bool>;
}
impl<T, U, DB> crate::query_builder::QueryFragment<DB> for Gt<T, U> where
T: crate::query_builder::QueryFragment<DB>,
U: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend {
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.left.walk_ast(out.reborrow())?;
out.push_sql(" > ");
self.right.walk_ast(out.reborrow())?;
;
Ok(())
}
}
impl<S, T, U> crate::internal::operators_macro::FieldAliasMapper<S> for
Gt<T, U> where S: crate::query_source::AliasSource,
T: crate::internal::operators_macro::FieldAliasMapper<S>,
U: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
Gt<<T as crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
<U as crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
Gt { left: self.left.map(alias), right: self.right.map(alias) }
}
}infix_operator!(Gt, " > ");
609#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct GtEq<T, U> {
pub(crate) left: T,
pub(crate) right: U,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::fmt::Debug, U: ::core::fmt::Debug> ::core::fmt::Debug for
GtEq<T, U> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "GtEq", "left",
&self.left, "right", &&self.right)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::clone::Clone, U: ::core::clone::Clone> ::core::clone::Clone
for GtEq<T, U> {
#[inline]
fn clone(&self) -> GtEq<T, U> {
GtEq {
left: ::core::clone::Clone::clone(&self.left),
right: ::core::clone::Clone::clone(&self.right),
}
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::marker::Copy, U: ::core::marker::Copy> ::core::marker::Copy
for GtEq<T, U> {
}
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<T: diesel::query_builder::QueryId,
U: diesel::query_builder::QueryId> diesel::query_builder::QueryId
for GtEq<T, U> {
type QueryId =
GtEq<<T as diesel::query_builder::QueryId>::QueryId,
<U as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<T as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID &&
<U as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<T as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
<U as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<T, U, __Rhs> ::std::ops::Add<__Rhs> for GtEq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Sub<__Rhs> for GtEq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Mul<__Rhs> for GtEq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Div<__Rhs> for GtEq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<T, U, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for GtEq<T, U>
where T: diesel::expression::ValidGrouping<__GroupByClause>,
U: diesel::expression::ValidGrouping<__GroupByClause>,
<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate: diesel::expression::MixedAggregates<<U
as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>
{
type IsAggregate =
<<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate
as
diesel::expression::MixedAggregates<<U as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
};
impl<T, U> GtEq<T, U> {
#[allow(dead_code)]
pub(crate) fn new(left: T, right: U) -> Self { GtEq { left, right } }
}
impl<T, U, QS> crate::expression::SelectableExpression<QS> for GtEq<T, U>
where GtEq<T, U>: crate::expression::AppearsOnTable<QS>,
T: crate::expression::SelectableExpression<QS>,
U: crate::expression::SelectableExpression<QS> {}
impl<T, U, QS> crate::expression::AppearsOnTable<QS> for GtEq<T, U> where
GtEq<T, U>: crate::expression::Expression,
T: crate::expression::AppearsOnTable<QS>,
U: crate::expression::AppearsOnTable<QS> {}
impl<T, U> crate::expression::Expression for GtEq<T, U> where
T: crate::expression::Expression, U: crate::expression::Expression,
<T as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
<U as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
crate::sql_types::is_nullable::IsSqlTypeNullable<<T as
crate::expression::Expression>::SqlType>: crate::sql_types::OneIsNullable<crate::sql_types::is_nullable::IsSqlTypeNullable<<U
as crate::expression::Expression>::SqlType>>,
crate::sql_types::is_nullable::IsOneNullable<<T as
crate::expression::Expression>::SqlType,
<U as
crate::expression::Expression>::SqlType>: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>
{
type SqlType =
crate::sql_types::is_nullable::MaybeNullable<crate::sql_types::is_nullable::IsOneNullable<<T
as crate::expression::Expression>::SqlType,
<U as crate::expression::Expression>::SqlType>,
crate::sql_types::Bool>;
}
impl<T, U, DB> crate::query_builder::QueryFragment<DB> for GtEq<T, U> where
T: crate::query_builder::QueryFragment<DB>,
U: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend {
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.left.walk_ast(out.reborrow())?;
out.push_sql(" >= ");
self.right.walk_ast(out.reborrow())?;
;
Ok(())
}
}
impl<S, T, U> crate::internal::operators_macro::FieldAliasMapper<S> for
GtEq<T, U> where S: crate::query_source::AliasSource,
T: crate::internal::operators_macro::FieldAliasMapper<S>,
U: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
GtEq<<T as
crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
<U as crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
GtEq { left: self.left.map(alias), right: self.right.map(alias) }
}
}infix_operator!(GtEq, " >= ");
610#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct Lt<T, U> {
pub(crate) left: T,
pub(crate) right: U,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::fmt::Debug, U: ::core::fmt::Debug> ::core::fmt::Debug for
Lt<T, U> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Lt", "left",
&self.left, "right", &&self.right)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::clone::Clone, U: ::core::clone::Clone> ::core::clone::Clone
for Lt<T, U> {
#[inline]
fn clone(&self) -> Lt<T, U> {
Lt {
left: ::core::clone::Clone::clone(&self.left),
right: ::core::clone::Clone::clone(&self.right),
}
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::marker::Copy, U: ::core::marker::Copy> ::core::marker::Copy
for Lt<T, U> {
}
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<T: diesel::query_builder::QueryId,
U: diesel::query_builder::QueryId> diesel::query_builder::QueryId
for Lt<T, U> {
type QueryId =
Lt<<T as diesel::query_builder::QueryId>::QueryId,
<U as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<T as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID &&
<U as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<T as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
<U as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<T, U, __Rhs> ::std::ops::Add<__Rhs> for Lt<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Sub<__Rhs> for Lt<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Mul<__Rhs> for Lt<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Div<__Rhs> for Lt<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<T, U, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for Lt<T, U>
where T: diesel::expression::ValidGrouping<__GroupByClause>,
U: diesel::expression::ValidGrouping<__GroupByClause>,
<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate: diesel::expression::MixedAggregates<<U
as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>
{
type IsAggregate =
<<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate
as
diesel::expression::MixedAggregates<<U as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
};
impl<T, U> Lt<T, U> {
#[allow(dead_code)]
pub(crate) fn new(left: T, right: U) -> Self { Lt { left, right } }
}
impl<T, U, QS> crate::expression::SelectableExpression<QS> for Lt<T, U> where
Lt<T, U>: crate::expression::AppearsOnTable<QS>,
T: crate::expression::SelectableExpression<QS>,
U: crate::expression::SelectableExpression<QS> {}
impl<T, U, QS> crate::expression::AppearsOnTable<QS> for Lt<T, U> where
Lt<T, U>: crate::expression::Expression,
T: crate::expression::AppearsOnTable<QS>,
U: crate::expression::AppearsOnTable<QS> {}
impl<T, U> crate::expression::Expression for Lt<T, U> where
T: crate::expression::Expression, U: crate::expression::Expression,
<T as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
<U as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
crate::sql_types::is_nullable::IsSqlTypeNullable<<T as
crate::expression::Expression>::SqlType>: crate::sql_types::OneIsNullable<crate::sql_types::is_nullable::IsSqlTypeNullable<<U
as crate::expression::Expression>::SqlType>>,
crate::sql_types::is_nullable::IsOneNullable<<T as
crate::expression::Expression>::SqlType,
<U as
crate::expression::Expression>::SqlType>: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>
{
type SqlType =
crate::sql_types::is_nullable::MaybeNullable<crate::sql_types::is_nullable::IsOneNullable<<T
as crate::expression::Expression>::SqlType,
<U as crate::expression::Expression>::SqlType>,
crate::sql_types::Bool>;
}
impl<T, U, DB> crate::query_builder::QueryFragment<DB> for Lt<T, U> where
T: crate::query_builder::QueryFragment<DB>,
U: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend {
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.left.walk_ast(out.reborrow())?;
out.push_sql(" < ");
self.right.walk_ast(out.reborrow())?;
;
Ok(())
}
}
impl<S, T, U> crate::internal::operators_macro::FieldAliasMapper<S> for
Lt<T, U> where S: crate::query_source::AliasSource,
T: crate::internal::operators_macro::FieldAliasMapper<S>,
U: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
Lt<<T as crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
<U as crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
Lt { left: self.left.map(alias), right: self.right.map(alias) }
}
}infix_operator!(Lt, " < ");
611#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct LtEq<T, U> {
pub(crate) left: T,
pub(crate) right: U,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::fmt::Debug, U: ::core::fmt::Debug> ::core::fmt::Debug for
LtEq<T, U> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "LtEq", "left",
&self.left, "right", &&self.right)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::clone::Clone, U: ::core::clone::Clone> ::core::clone::Clone
for LtEq<T, U> {
#[inline]
fn clone(&self) -> LtEq<T, U> {
LtEq {
left: ::core::clone::Clone::clone(&self.left),
right: ::core::clone::Clone::clone(&self.right),
}
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::marker::Copy, U: ::core::marker::Copy> ::core::marker::Copy
for LtEq<T, U> {
}
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<T: diesel::query_builder::QueryId,
U: diesel::query_builder::QueryId> diesel::query_builder::QueryId
for LtEq<T, U> {
type QueryId =
LtEq<<T as diesel::query_builder::QueryId>::QueryId,
<U as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<T as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID &&
<U as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<T as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
<U as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<T, U, __Rhs> ::std::ops::Add<__Rhs> for LtEq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Sub<__Rhs> for LtEq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Mul<__Rhs> for LtEq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Div<__Rhs> for LtEq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<T, U, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for LtEq<T, U>
where T: diesel::expression::ValidGrouping<__GroupByClause>,
U: diesel::expression::ValidGrouping<__GroupByClause>,
<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate: diesel::expression::MixedAggregates<<U
as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>
{
type IsAggregate =
<<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate
as
diesel::expression::MixedAggregates<<U as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
};
impl<T, U> LtEq<T, U> {
#[allow(dead_code)]
pub(crate) fn new(left: T, right: U) -> Self { LtEq { left, right } }
}
impl<T, U, QS> crate::expression::SelectableExpression<QS> for LtEq<T, U>
where LtEq<T, U>: crate::expression::AppearsOnTable<QS>,
T: crate::expression::SelectableExpression<QS>,
U: crate::expression::SelectableExpression<QS> {}
impl<T, U, QS> crate::expression::AppearsOnTable<QS> for LtEq<T, U> where
LtEq<T, U>: crate::expression::Expression,
T: crate::expression::AppearsOnTable<QS>,
U: crate::expression::AppearsOnTable<QS> {}
impl<T, U> crate::expression::Expression for LtEq<T, U> where
T: crate::expression::Expression, U: crate::expression::Expression,
<T as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
<U as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
crate::sql_types::is_nullable::IsSqlTypeNullable<<T as
crate::expression::Expression>::SqlType>: crate::sql_types::OneIsNullable<crate::sql_types::is_nullable::IsSqlTypeNullable<<U
as crate::expression::Expression>::SqlType>>,
crate::sql_types::is_nullable::IsOneNullable<<T as
crate::expression::Expression>::SqlType,
<U as
crate::expression::Expression>::SqlType>: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>
{
type SqlType =
crate::sql_types::is_nullable::MaybeNullable<crate::sql_types::is_nullable::IsOneNullable<<T
as crate::expression::Expression>::SqlType,
<U as crate::expression::Expression>::SqlType>,
crate::sql_types::Bool>;
}
impl<T, U, DB> crate::query_builder::QueryFragment<DB> for LtEq<T, U> where
T: crate::query_builder::QueryFragment<DB>,
U: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend {
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.left.walk_ast(out.reborrow())?;
out.push_sql(" <= ");
self.right.walk_ast(out.reborrow())?;
;
Ok(())
}
}
impl<S, T, U> crate::internal::operators_macro::FieldAliasMapper<S> for
LtEq<T, U> where S: crate::query_source::AliasSource,
T: crate::internal::operators_macro::FieldAliasMapper<S>,
U: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
LtEq<<T as
crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
<U as crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
LtEq { left: self.left.map(alias), right: self.right.map(alias) }
}
}infix_operator!(LtEq, " <= ");
612#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct NotEq<T, U> {
pub(crate) left: T,
pub(crate) right: U,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::fmt::Debug, U: ::core::fmt::Debug> ::core::fmt::Debug for
NotEq<T, U> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "NotEq", "left",
&self.left, "right", &&self.right)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::clone::Clone, U: ::core::clone::Clone> ::core::clone::Clone
for NotEq<T, U> {
#[inline]
fn clone(&self) -> NotEq<T, U> {
NotEq {
left: ::core::clone::Clone::clone(&self.left),
right: ::core::clone::Clone::clone(&self.right),
}
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::marker::Copy, U: ::core::marker::Copy> ::core::marker::Copy
for NotEq<T, U> {
}
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<T: diesel::query_builder::QueryId,
U: diesel::query_builder::QueryId> diesel::query_builder::QueryId
for NotEq<T, U> {
type QueryId =
NotEq<<T as diesel::query_builder::QueryId>::QueryId,
<U as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<T as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID &&
<U as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<T as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
<U as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<T, U, __Rhs> ::std::ops::Add<__Rhs> for NotEq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Sub<__Rhs> for NotEq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Mul<__Rhs> for NotEq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Div<__Rhs> for NotEq<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<T, U, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for NotEq<T, U>
where T: diesel::expression::ValidGrouping<__GroupByClause>,
U: diesel::expression::ValidGrouping<__GroupByClause>,
<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate: diesel::expression::MixedAggregates<<U
as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>
{
type IsAggregate =
<<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate
as
diesel::expression::MixedAggregates<<U as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
};
impl<T, U> NotEq<T, U> {
#[allow(dead_code)]
pub(crate) fn new(left: T, right: U) -> Self { NotEq { left, right } }
}
impl<T, U, QS> crate::expression::SelectableExpression<QS> for NotEq<T, U>
where NotEq<T, U>: crate::expression::AppearsOnTable<QS>,
T: crate::expression::SelectableExpression<QS>,
U: crate::expression::SelectableExpression<QS> {}
impl<T, U, QS> crate::expression::AppearsOnTable<QS> for NotEq<T, U> where
NotEq<T, U>: crate::expression::Expression,
T: crate::expression::AppearsOnTable<QS>,
U: crate::expression::AppearsOnTable<QS> {}
impl<T, U> crate::expression::Expression for NotEq<T, U> where
T: crate::expression::Expression, U: crate::expression::Expression,
<T as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
<U as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
crate::sql_types::is_nullable::IsSqlTypeNullable<<T as
crate::expression::Expression>::SqlType>: crate::sql_types::OneIsNullable<crate::sql_types::is_nullable::IsSqlTypeNullable<<U
as crate::expression::Expression>::SqlType>>,
crate::sql_types::is_nullable::IsOneNullable<<T as
crate::expression::Expression>::SqlType,
<U as
crate::expression::Expression>::SqlType>: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>
{
type SqlType =
crate::sql_types::is_nullable::MaybeNullable<crate::sql_types::is_nullable::IsOneNullable<<T
as crate::expression::Expression>::SqlType,
<U as crate::expression::Expression>::SqlType>,
crate::sql_types::Bool>;
}
impl<T, U, DB> crate::query_builder::QueryFragment<DB> for NotEq<T, U> where
T: crate::query_builder::QueryFragment<DB>,
U: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend {
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.left.walk_ast(out.reborrow())?;
out.push_sql(" != ");
self.right.walk_ast(out.reborrow())?;
;
Ok(())
}
}
impl<S, T, U> crate::internal::operators_macro::FieldAliasMapper<S> for
NotEq<T, U> where S: crate::query_source::AliasSource,
T: crate::internal::operators_macro::FieldAliasMapper<S>,
U: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
NotEq<<T as
crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
<U as crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
NotEq { left: self.left.map(alias), right: self.right.map(alias) }
}
}infix_operator!(NotEq, " != ");
613#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct NotLike<T, U> {
pub(crate) left: T,
pub(crate) right: U,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::fmt::Debug, U: ::core::fmt::Debug> ::core::fmt::Debug for
NotLike<T, U> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "NotLike",
"left", &self.left, "right", &&self.right)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::clone::Clone, U: ::core::clone::Clone> ::core::clone::Clone
for NotLike<T, U> {
#[inline]
fn clone(&self) -> NotLike<T, U> {
NotLike {
left: ::core::clone::Clone::clone(&self.left),
right: ::core::clone::Clone::clone(&self.right),
}
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::marker::Copy, U: ::core::marker::Copy> ::core::marker::Copy
for NotLike<T, U> {
}
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<T: diesel::query_builder::QueryId,
U: diesel::query_builder::QueryId> diesel::query_builder::QueryId
for NotLike<T, U> {
type QueryId =
NotLike<<T as diesel::query_builder::QueryId>::QueryId,
<U as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<T as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID &&
<U as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<T as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
<U as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<T, U, __Rhs> ::std::ops::Add<__Rhs> for NotLike<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Sub<__Rhs> for NotLike<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Mul<__Rhs> for NotLike<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Div<__Rhs> for NotLike<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<T, U, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for
NotLike<T, U> where
T: diesel::expression::ValidGrouping<__GroupByClause>,
U: diesel::expression::ValidGrouping<__GroupByClause>,
<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate: diesel::expression::MixedAggregates<<U
as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>
{
type IsAggregate =
<<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate
as
diesel::expression::MixedAggregates<<U as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
};
impl<T, U> NotLike<T, U> {
#[allow(dead_code)]
pub(crate) fn new(left: T, right: U) -> Self { NotLike { left, right } }
}
impl<T, U, QS> crate::expression::SelectableExpression<QS> for NotLike<T, U>
where NotLike<T, U>: crate::expression::AppearsOnTable<QS>,
T: crate::expression::SelectableExpression<QS>,
U: crate::expression::SelectableExpression<QS> {}
impl<T, U, QS> crate::expression::AppearsOnTable<QS> for NotLike<T, U> where
NotLike<T, U>: crate::expression::Expression,
T: crate::expression::AppearsOnTable<QS>,
U: crate::expression::AppearsOnTable<QS> {}
impl<T, U> crate::expression::Expression for NotLike<T, U> where
T: crate::expression::Expression, U: crate::expression::Expression,
<T as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
<U as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
crate::sql_types::is_nullable::IsSqlTypeNullable<<T as
crate::expression::Expression>::SqlType>: crate::sql_types::OneIsNullable<crate::sql_types::is_nullable::IsSqlTypeNullable<<U
as crate::expression::Expression>::SqlType>>,
crate::sql_types::is_nullable::IsOneNullable<<T as
crate::expression::Expression>::SqlType,
<U as
crate::expression::Expression>::SqlType>: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>
{
type SqlType =
crate::sql_types::is_nullable::MaybeNullable<crate::sql_types::is_nullable::IsOneNullable<<T
as crate::expression::Expression>::SqlType,
<U as crate::expression::Expression>::SqlType>,
crate::sql_types::Bool>;
}
impl<T, U, DB> crate::query_builder::QueryFragment<DB> for NotLike<T, U> where
T: crate::query_builder::QueryFragment<DB>,
U: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend {
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.left.walk_ast(out.reborrow())?;
out.push_sql(" NOT LIKE ");
self.right.walk_ast(out.reborrow())?;
;
Ok(())
}
}
impl<S, T, U> crate::internal::operators_macro::FieldAliasMapper<S> for
NotLike<T, U> where S: crate::query_source::AliasSource,
T: crate::internal::operators_macro::FieldAliasMapper<S>,
U: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
NotLike<<T as
crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
<U as crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
NotLike { left: self.left.map(alias), right: self.right.map(alias) }
}
}infix_operator!(NotLike, " NOT LIKE ");
614#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct Between<T, U> {
pub(crate) left: T,
pub(crate) right: U,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::fmt::Debug, U: ::core::fmt::Debug> ::core::fmt::Debug for
Between<T, U> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Between",
"left", &self.left, "right", &&self.right)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::clone::Clone, U: ::core::clone::Clone> ::core::clone::Clone
for Between<T, U> {
#[inline]
fn clone(&self) -> Between<T, U> {
Between {
left: ::core::clone::Clone::clone(&self.left),
right: ::core::clone::Clone::clone(&self.right),
}
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::marker::Copy, U: ::core::marker::Copy> ::core::marker::Copy
for Between<T, U> {
}
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<T: diesel::query_builder::QueryId,
U: diesel::query_builder::QueryId> diesel::query_builder::QueryId
for Between<T, U> {
type QueryId =
Between<<T as diesel::query_builder::QueryId>::QueryId,
<U as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<T as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID &&
<U as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<T as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
<U as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<T, U, __Rhs> ::std::ops::Add<__Rhs> for Between<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Sub<__Rhs> for Between<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Mul<__Rhs> for Between<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Div<__Rhs> for Between<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<T, U, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for
Between<T, U> where
T: diesel::expression::ValidGrouping<__GroupByClause>,
U: diesel::expression::ValidGrouping<__GroupByClause>,
<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate: diesel::expression::MixedAggregates<<U
as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>
{
type IsAggregate =
<<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate
as
diesel::expression::MixedAggregates<<U as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
};
impl<T, U> Between<T, U> {
#[allow(dead_code)]
pub(crate) fn new(left: T, right: U) -> Self { Between { left, right } }
}
impl<T, U, QS> crate::expression::SelectableExpression<QS> for Between<T, U>
where Between<T, U>: crate::expression::AppearsOnTable<QS>,
T: crate::expression::SelectableExpression<QS>,
U: crate::expression::SelectableExpression<QS> {}
impl<T, U, QS> crate::expression::AppearsOnTable<QS> for Between<T, U> where
Between<T, U>: crate::expression::Expression,
T: crate::expression::AppearsOnTable<QS>,
U: crate::expression::AppearsOnTable<QS> {}
impl<T, U> crate::expression::Expression for Between<T, U> where
T: crate::expression::Expression, U: crate::expression::Expression,
<T as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
<U as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
crate::sql_types::is_nullable::IsSqlTypeNullable<<T as
crate::expression::Expression>::SqlType>: crate::sql_types::OneIsNullable<crate::sql_types::is_nullable::IsSqlTypeNullable<<U
as crate::expression::Expression>::SqlType>>,
crate::sql_types::is_nullable::IsOneNullable<<T as
crate::expression::Expression>::SqlType,
<U as
crate::expression::Expression>::SqlType>: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>
{
type SqlType =
crate::sql_types::is_nullable::MaybeNullable<crate::sql_types::is_nullable::IsOneNullable<<T
as crate::expression::Expression>::SqlType,
<U as crate::expression::Expression>::SqlType>,
crate::sql_types::Bool>;
}
impl<T, U, DB> crate::query_builder::QueryFragment<DB> for Between<T, U> where
T: crate::query_builder::QueryFragment<DB>,
U: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend {
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.left.walk_ast(out.reborrow())?;
out.push_sql(" BETWEEN ");
self.right.walk_ast(out.reborrow())?;
;
Ok(())
}
}
impl<S, T, U> crate::internal::operators_macro::FieldAliasMapper<S> for
Between<T, U> where S: crate::query_source::AliasSource,
T: crate::internal::operators_macro::FieldAliasMapper<S>,
U: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
Between<<T as
crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
<U as crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
Between { left: self.left.map(alias), right: self.right.map(alias) }
}
}infix_operator!(Between, " BETWEEN ");
615#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct NotBetween<T, U> {
pub(crate) left: T,
pub(crate) right: U,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::fmt::Debug, U: ::core::fmt::Debug> ::core::fmt::Debug for
NotBetween<T, U> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "NotBetween",
"left", &self.left, "right", &&self.right)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::clone::Clone, U: ::core::clone::Clone> ::core::clone::Clone
for NotBetween<T, U> {
#[inline]
fn clone(&self) -> NotBetween<T, U> {
NotBetween {
left: ::core::clone::Clone::clone(&self.left),
right: ::core::clone::Clone::clone(&self.right),
}
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::marker::Copy, U: ::core::marker::Copy> ::core::marker::Copy
for NotBetween<T, U> {
}
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<T: diesel::query_builder::QueryId,
U: diesel::query_builder::QueryId> diesel::query_builder::QueryId
for NotBetween<T, U> {
type QueryId =
NotBetween<<T as diesel::query_builder::QueryId>::QueryId,
<U as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<T as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID &&
<U as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<T as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
<U as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<T, U, __Rhs> ::std::ops::Add<__Rhs> for NotBetween<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Sub<__Rhs> for NotBetween<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Mul<__Rhs> for NotBetween<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Div<__Rhs> for NotBetween<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<T, U, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for
NotBetween<T, U> where
T: diesel::expression::ValidGrouping<__GroupByClause>,
U: diesel::expression::ValidGrouping<__GroupByClause>,
<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate: diesel::expression::MixedAggregates<<U
as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>
{
type IsAggregate =
<<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate
as
diesel::expression::MixedAggregates<<U as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
};
impl<T, U> NotBetween<T, U> {
#[allow(dead_code)]
pub(crate) fn new(left: T, right: U) -> Self {
NotBetween { left, right }
}
}
impl<T, U, QS> crate::expression::SelectableExpression<QS> for
NotBetween<T, U> where
NotBetween<T, U>: crate::expression::AppearsOnTable<QS>,
T: crate::expression::SelectableExpression<QS>,
U: crate::expression::SelectableExpression<QS> {}
impl<T, U, QS> crate::expression::AppearsOnTable<QS> for NotBetween<T, U>
where NotBetween<T, U>: crate::expression::Expression,
T: crate::expression::AppearsOnTable<QS>,
U: crate::expression::AppearsOnTable<QS> {}
impl<T, U> crate::expression::Expression for NotBetween<T, U> where
T: crate::expression::Expression, U: crate::expression::Expression,
<T as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
<U as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
crate::sql_types::is_nullable::IsSqlTypeNullable<<T as
crate::expression::Expression>::SqlType>: crate::sql_types::OneIsNullable<crate::sql_types::is_nullable::IsSqlTypeNullable<<U
as crate::expression::Expression>::SqlType>>,
crate::sql_types::is_nullable::IsOneNullable<<T as
crate::expression::Expression>::SqlType,
<U as
crate::expression::Expression>::SqlType>: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>
{
type SqlType =
crate::sql_types::is_nullable::MaybeNullable<crate::sql_types::is_nullable::IsOneNullable<<T
as crate::expression::Expression>::SqlType,
<U as crate::expression::Expression>::SqlType>,
crate::sql_types::Bool>;
}
impl<T, U, DB> crate::query_builder::QueryFragment<DB> for NotBetween<T, U>
where T: crate::query_builder::QueryFragment<DB>,
U: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend {
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.left.walk_ast(out.reborrow())?;
out.push_sql(" NOT BETWEEN ");
self.right.walk_ast(out.reborrow())?;
;
Ok(())
}
}
impl<S, T, U> crate::internal::operators_macro::FieldAliasMapper<S> for
NotBetween<T, U> where S: crate::query_source::AliasSource,
T: crate::internal::operators_macro::FieldAliasMapper<S>,
U: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
NotBetween<<T as
crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
<U as crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
NotBetween {
left: self.left.map(alias),
right: self.right.map(alias),
}
}
}infix_operator!(NotBetween, " NOT BETWEEN ");
616
617#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct IsNull<Expr> {
pub(crate) expr: Expr,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::fmt::Debug> ::core::fmt::Debug for IsNull<Expr> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "IsNull",
"expr", &&self.expr)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::clone::Clone> ::core::clone::Clone for IsNull<Expr> {
#[inline]
fn clone(&self) -> IsNull<Expr> {
IsNull { expr: ::core::clone::Clone::clone(&self.expr) }
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::marker::Copy> ::core::marker::Copy for IsNull<Expr> { }
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<Expr: diesel::query_builder::QueryId>
diesel::query_builder::QueryId for IsNull<Expr> {
type QueryId =
IsNull<<Expr as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<Expr as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<Expr as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION
|| false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<Expr, __Rhs> ::std::ops::Add<__Rhs> for IsNull<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Sub<__Rhs> for IsNull<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Mul<__Rhs> for IsNull<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Div<__Rhs> for IsNull<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<Expr, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for
IsNull<Expr> where
Expr: diesel::expression::ValidGrouping<__GroupByClause> {
type IsAggregate =
<Expr as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate;
}
};
impl<Expr> IsNull<Expr> {
#[allow(dead_code)]
pub(crate) fn new(expr: Expr) -> Self { IsNull { expr } }
}
impl<Expr, QS> crate::expression::SelectableExpression<QS> for IsNull<Expr>
where IsNull<Expr>: crate::expression::AppearsOnTable<QS>,
Expr: crate::expression::SelectableExpression<QS> {}
impl<Expr, QS> crate::expression::AppearsOnTable<QS> for IsNull<Expr> where
IsNull<Expr>: crate::expression::Expression,
Expr: crate::expression::AppearsOnTable<QS> {}
impl<Expr> crate::expression::Expression for IsNull<Expr> where
Expr: crate::expression::Expression {
type SqlType = crate::sql_types::Bool;
}
impl<Expr, DB> crate::query_builder::QueryFragment<DB> for IsNull<Expr> where
Expr: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend
{
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.expr.walk_ast(out.reborrow())?;
out.push_sql(" IS NULL");
;
Ok(())
}
}
impl<S, Expr> crate::internal::operators_macro::FieldAliasMapper<S> for
IsNull<Expr> where S: crate::query_source::AliasSource,
Expr: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
IsNull<<Expr as
crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
IsNull { expr: self.expr.map(alias) }
}
}postfix_operator!(IsNull, " IS NULL");
618#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct IsNotNull<Expr> {
pub(crate) expr: Expr,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::fmt::Debug> ::core::fmt::Debug for IsNotNull<Expr> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "IsNotNull",
"expr", &&self.expr)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::clone::Clone> ::core::clone::Clone for IsNotNull<Expr> {
#[inline]
fn clone(&self) -> IsNotNull<Expr> {
IsNotNull { expr: ::core::clone::Clone::clone(&self.expr) }
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::marker::Copy> ::core::marker::Copy for IsNotNull<Expr> { }
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<Expr: diesel::query_builder::QueryId>
diesel::query_builder::QueryId for IsNotNull<Expr> {
type QueryId =
IsNotNull<<Expr as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<Expr as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<Expr as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION
|| false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<Expr, __Rhs> ::std::ops::Add<__Rhs> for IsNotNull<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Sub<__Rhs> for IsNotNull<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Mul<__Rhs> for IsNotNull<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Div<__Rhs> for IsNotNull<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<Expr, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for
IsNotNull<Expr> where
Expr: diesel::expression::ValidGrouping<__GroupByClause> {
type IsAggregate =
<Expr as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate;
}
};
impl<Expr> IsNotNull<Expr> {
#[allow(dead_code)]
pub(crate) fn new(expr: Expr) -> Self { IsNotNull { expr } }
}
impl<Expr, QS> crate::expression::SelectableExpression<QS> for IsNotNull<Expr>
where IsNotNull<Expr>: crate::expression::AppearsOnTable<QS>,
Expr: crate::expression::SelectableExpression<QS> {}
impl<Expr, QS> crate::expression::AppearsOnTable<QS> for IsNotNull<Expr> where
IsNotNull<Expr>: crate::expression::Expression,
Expr: crate::expression::AppearsOnTable<QS> {}
impl<Expr> crate::expression::Expression for IsNotNull<Expr> where
Expr: crate::expression::Expression {
type SqlType = crate::sql_types::Bool;
}
impl<Expr, DB> crate::query_builder::QueryFragment<DB> for IsNotNull<Expr>
where Expr: crate::query_builder::QueryFragment<DB>,
DB: crate::backend::Backend {
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.expr.walk_ast(out.reborrow())?;
out.push_sql(" IS NOT NULL");
;
Ok(())
}
}
impl<S, Expr> crate::internal::operators_macro::FieldAliasMapper<S> for
IsNotNull<Expr> where S: crate::query_source::AliasSource,
Expr: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
IsNotNull<<Expr as
crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
IsNotNull { expr: self.expr.map(alias) }
}
}postfix_operator!(IsNotNull, " IS NOT NULL");
619#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct Asc<Expr> {
pub(crate) expr: Expr,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::fmt::Debug> ::core::fmt::Debug for Asc<Expr> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "Asc", "expr",
&&self.expr)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::clone::Clone> ::core::clone::Clone for Asc<Expr> {
#[inline]
fn clone(&self) -> Asc<Expr> {
Asc { expr: ::core::clone::Clone::clone(&self.expr) }
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::marker::Copy> ::core::marker::Copy for Asc<Expr> { }
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<Expr: diesel::query_builder::QueryId>
diesel::query_builder::QueryId for Asc<Expr> {
type QueryId =
Asc<<Expr as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<Expr as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<Expr as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION
|| false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<Expr, __Rhs> ::std::ops::Add<__Rhs> for Asc<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Sub<__Rhs> for Asc<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Mul<__Rhs> for Asc<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Div<__Rhs> for Asc<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<Expr, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for Asc<Expr>
where Expr: diesel::expression::ValidGrouping<__GroupByClause> {
type IsAggregate =
<Expr as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate;
}
};
impl<Expr> Asc<Expr> {
#[allow(dead_code)]
pub(crate) fn new(expr: Expr) -> Self { Asc { expr } }
}
impl<Expr, QS> crate::expression::SelectableExpression<QS> for Asc<Expr> where
Asc<Expr>: crate::expression::AppearsOnTable<QS>,
Expr: crate::expression::SelectableExpression<QS> {}
impl<Expr, QS> crate::expression::AppearsOnTable<QS> for Asc<Expr> where
Asc<Expr>: crate::expression::Expression,
Expr: crate::expression::AppearsOnTable<QS> {}
impl<Expr> crate::expression::Expression for Asc<Expr> where
Expr: crate::expression::Expression {
type SqlType = crate::expression::expression_types::NotSelectable;
}
impl<Expr, DB> crate::query_builder::QueryFragment<DB> for Asc<Expr> where
Expr: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend
{
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.expr.walk_ast(out.reborrow())?;
out.push_sql(" ASC");
;
Ok(())
}
}
impl<S, Expr> crate::internal::operators_macro::FieldAliasMapper<S> for
Asc<Expr> where S: crate::query_source::AliasSource,
Expr: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
Asc<<Expr as
crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
Asc { expr: self.expr.map(alias) }
}
}postfix_operator!(
620 Asc,
621 " ASC",
622 crate::expression::expression_types::NotSelectable
623);
624#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct Desc<Expr> {
pub(crate) expr: Expr,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::fmt::Debug> ::core::fmt::Debug for Desc<Expr> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "Desc", "expr",
&&self.expr)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::clone::Clone> ::core::clone::Clone for Desc<Expr> {
#[inline]
fn clone(&self) -> Desc<Expr> {
Desc { expr: ::core::clone::Clone::clone(&self.expr) }
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::marker::Copy> ::core::marker::Copy for Desc<Expr> { }
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<Expr: diesel::query_builder::QueryId>
diesel::query_builder::QueryId for Desc<Expr> {
type QueryId =
Desc<<Expr as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<Expr as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<Expr as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION
|| false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<Expr, __Rhs> ::std::ops::Add<__Rhs> for Desc<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Sub<__Rhs> for Desc<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Mul<__Rhs> for Desc<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Div<__Rhs> for Desc<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<Expr, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for Desc<Expr>
where Expr: diesel::expression::ValidGrouping<__GroupByClause> {
type IsAggregate =
<Expr as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate;
}
};
impl<Expr> Desc<Expr> {
#[allow(dead_code)]
pub(crate) fn new(expr: Expr) -> Self { Desc { expr } }
}
impl<Expr, QS> crate::expression::SelectableExpression<QS> for Desc<Expr>
where Desc<Expr>: crate::expression::AppearsOnTable<QS>,
Expr: crate::expression::SelectableExpression<QS> {}
impl<Expr, QS> crate::expression::AppearsOnTable<QS> for Desc<Expr> where
Desc<Expr>: crate::expression::Expression,
Expr: crate::expression::AppearsOnTable<QS> {}
impl<Expr> crate::expression::Expression for Desc<Expr> where
Expr: crate::expression::Expression {
type SqlType = crate::expression::expression_types::NotSelectable;
}
impl<Expr, DB> crate::query_builder::QueryFragment<DB> for Desc<Expr> where
Expr: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend
{
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
self.expr.walk_ast(out.reborrow())?;
out.push_sql(" DESC");
;
Ok(())
}
}
impl<S, Expr> crate::internal::operators_macro::FieldAliasMapper<S> for
Desc<Expr> where S: crate::query_source::AliasSource,
Expr: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
Desc<<Expr as
crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
Desc { expr: self.expr.map(alias) }
}
}postfix_operator!(
625 Desc,
626 " DESC",
627 crate::expression::expression_types::NotSelectable
628);
629
630#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct Not<Expr> {
pub(crate) expr: Expr,
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::fmt::Debug> ::core::fmt::Debug for Not<Expr> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "Not", "expr",
&&self.expr)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::clone::Clone> ::core::clone::Clone for Not<Expr> {
#[inline]
fn clone(&self) -> Not<Expr> {
Not { expr: ::core::clone::Clone::clone(&self.expr) }
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<Expr: ::core::marker::Copy> ::core::marker::Copy for Not<Expr> { }
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<Expr: diesel::query_builder::QueryId>
diesel::query_builder::QueryId for Not<Expr> {
type QueryId =
Not<<Expr as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<Expr as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<Expr as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION
|| false;
}
};
const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<Expr, __Rhs> ::std::ops::Add<__Rhs> for Not<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Sub<__Rhs> for Not<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Mul<__Rhs> for Not<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<Expr, __Rhs> ::std::ops::Div<__Rhs> for Not<Expr> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};
const _: () =
{
use diesel;
impl<Expr, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for Not<Expr>
where Expr: diesel::expression::ValidGrouping<__GroupByClause> {
type IsAggregate =
<Expr as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate;
}
};
impl<Expr> Not<Expr> {
#[allow(dead_code)]
pub(crate) fn new(expr: Expr) -> Self { Not { expr } }
}
impl<Expr, QS> crate::expression::SelectableExpression<QS> for Not<Expr> where
Not<Expr>: crate::expression::AppearsOnTable<QS>,
Expr: crate::expression::SelectableExpression<QS> {}
impl<Expr, QS> crate::expression::AppearsOnTable<QS> for Not<Expr> where
Not<Expr>: crate::expression::Expression,
Expr: crate::expression::AppearsOnTable<QS> {}
impl<Expr> crate::expression::Expression for Not<Expr> where
Expr: crate::expression::Expression,
<Expr as
crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
crate::sql_types::is_nullable::IsSqlTypeNullable<<Expr as
crate::expression::Expression>::SqlType>: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>
{
type SqlType =
crate::sql_types::is_nullable::MaybeNullable<crate::sql_types::is_nullable::IsSqlTypeNullable<<Expr
as crate::expression::Expression>::SqlType>, crate::sql_types::Bool>;
}
impl<Expr, DB> crate::query_builder::QueryFragment<DB> for Not<Expr> where
Expr: crate::query_builder::QueryFragment<DB>, DB: crate::backend::Backend
{
fn walk_ast<'b>(&'b self,
mut out: crate::query_builder::AstPass<'_, 'b, DB>)
-> crate::result::QueryResult<()> {
out.push_sql(" NOT ");
self.expr.walk_ast(out.reborrow())?;
;
Ok(())
}
}
impl<S, Expr> crate::internal::operators_macro::FieldAliasMapper<S> for
Not<Expr> where S: crate::query_source::AliasSource,
Expr: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
Not<<Expr as
crate::internal::operators_macro::FieldAliasMapper<S>>::Out>;
fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
Not { expr: self.expr.map(alias) }
}
}prefix_operator!(Not, " NOT ");
631
632use crate::backend::{sql_dialect, Backend, SqlDialect};
633use crate::expression::{TypedExpressionType, ValidGrouping};
634use crate::insertable::{ColumnInsertValue, Insertable};
635use crate::query_builder::{QueryFragment, QueryId, ValuesClause};
636use crate::query_source::Column;
637use crate::sql_types::{DieselNumericOps, SqlType};
638
639impl<T, U> Insertable<T::Table> for Eq<T, U>
640where
641 T: Column,
642{
643 type Values = ValuesClause<ColumnInsertValue<T, U>, T::Table>;
644
645 fn values(self) -> Self::Values {
646 ValuesClause::new(ColumnInsertValue::new(self.right))
647 }
648}
649
650impl<'a, T, Tab, U> Insertable<Tab> for &'a Eq<T, U>
651where
652 T: Copy,
653 Eq<T, &'a U>: Insertable<Tab>,
654{
655 type Values = <Eq<T, &'a U> as Insertable<Tab>>::Values;
656
657 fn values(self) -> Self::Values {
658 Eq::new(self.left, &self.right).values()
659 }
660}
661
662#[doc = " This type represents a string concat operator"]
#[non_exhaustive]
pub struct Concat<L, R> {
#[doc = " The left side expression of the operator"]
pub left: L,
#[doc = " The right side expression of the operator"]
pub right: R,
}#[diesel_derives::__diesel_public_if(
664 feature = "i-implement-a-third-party-backend-and-opt-into-breaking-changes",
665 public_fields(left, right)
666)]
667#[derive(#[automatically_derived]
impl<L: ::core::fmt::Debug, R: ::core::fmt::Debug> ::core::fmt::Debug for
Concat<L, R> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Concat",
"left", &self.left, "right", &&self.right)
}
}Debug, #[automatically_derived]
impl<L: ::core::clone::Clone, R: ::core::clone::Clone> ::core::clone::Clone
for Concat<L, R> {
#[inline]
fn clone(&self) -> Concat<L, R> {
Concat {
left: ::core::clone::Clone::clone(&self.left),
right: ::core::clone::Clone::clone(&self.right),
}
}
}Clone, #[automatically_derived]
impl<L: ::core::marker::Copy, R: ::core::marker::Copy> ::core::marker::Copy
for Concat<L, R> {
}Copy, const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<L: diesel::query_builder::QueryId,
R: diesel::query_builder::QueryId> diesel::query_builder::QueryId
for Concat<L, R> {
type QueryId =
Concat<<L as diesel::query_builder::QueryId>::QueryId,
<R as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<L as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID &&
<R as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<L as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
<R as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
false;
}
};QueryId, const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<L, R, __Rhs> ::std::ops::Add<__Rhs> for Concat<L, R> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<L, R, __Rhs> ::std::ops::Sub<__Rhs> for Concat<L, R> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<L, R, __Rhs> ::std::ops::Mul<__Rhs> for Concat<L, R> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<L, R, __Rhs> ::std::ops::Div<__Rhs> for Concat<L, R> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};DieselNumericOps, const _: () =
{
use diesel;
impl<L, R, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for
Concat<L, R> where
L: diesel::expression::ValidGrouping<__GroupByClause>,
R: diesel::expression::ValidGrouping<__GroupByClause>,
<L as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate: diesel::expression::MixedAggregates<<R
as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>
{
type IsAggregate =
<<L as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate
as
diesel::expression::MixedAggregates<<R as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
};ValidGrouping)]
668pub struct Concat<L, R> {
669 pub(crate) left: L,
671 pub(crate) right: R,
673}
674
675impl<L, R> Concat<L, R> {
676 pub(crate) fn new(left: L, right: R) -> Self {
677 Self { left, right }
678 }
679}
680
681impl<L, R, ST> crate::expression::Expression for Concat<L, R>
682where
683 L: crate::expression::Expression<SqlType = ST>,
684 R: crate::expression::Expression<SqlType = ST>,
685 ST: SqlType + TypedExpressionType,
686{
687 type SqlType = ST;
688}
689
690impl<L, R, QS> crate::expression::SelectableExpression<QS> for Concat<L, R>
where Concat<L, R>: crate::expression::AppearsOnTable<QS>,
L: crate::expression::SelectableExpression<QS>,
R: crate::expression::SelectableExpression<QS> {}
impl<L, R, QS> crate::expression::AppearsOnTable<QS> for Concat<L, R> where
Concat<L, R>: crate::expression::Expression,
L: crate::expression::AppearsOnTable<QS>,
R: crate::expression::AppearsOnTable<QS> {}impl_selectable_expression!(Concat<L, R>);
691
692impl<L, R, DB> QueryFragment<DB> for Concat<L, R>
693where
694 DB: Backend,
695 Self: QueryFragment<DB, DB::ConcatClause>,
696{
697 fn walk_ast<'b>(
698 &'b self,
699 pass: crate::query_builder::AstPass<'_, 'b, DB>,
700 ) -> crate::result::QueryResult<()> {
701 <Self as QueryFragment<DB, DB::ConcatClause>>::walk_ast(self, pass)
702 }
703}
704
705impl<L, R, DB> QueryFragment<DB, sql_dialect::concat_clause::ConcatWithPipesClause> for Concat<L, R>
706where
707 L: QueryFragment<DB>,
708 R: QueryFragment<DB>,
709 DB: Backend + SqlDialect<ConcatClause = sql_dialect::concat_clause::ConcatWithPipesClause>,
710{
711 fn walk_ast<'b>(
712 &'b self,
713 mut out: crate::query_builder::AstPass<'_, 'b, DB>,
714 ) -> crate::result::QueryResult<()> {
715 out.push_sql("(");
718 self.left.walk_ast(out.reborrow())?;
719 out.push_sql(" || ");
720 self.right.walk_ast(out.reborrow())?;
721 out.push_sql(")");
722 Ok(())
723 }
724}
725
726#[derive(
728 #[automatically_derived]
impl<T: ::core::fmt::Debug, U: ::core::fmt::Debug> ::core::fmt::Debug for
Like<T, U> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Like", "left",
&self.left, "right", &&self.right)
}
}Debug,
729 #[automatically_derived]
impl<T: ::core::clone::Clone, U: ::core::clone::Clone> ::core::clone::Clone
for Like<T, U> {
#[inline]
fn clone(&self) -> Like<T, U> {
Like {
left: ::core::clone::Clone::clone(&self.left),
right: ::core::clone::Clone::clone(&self.right),
}
}
}Clone,
730 #[automatically_derived]
impl<T: ::core::marker::Copy, U: ::core::marker::Copy> ::core::marker::Copy
for Like<T, U> {
}Copy,
731 const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<T: diesel::query_builder::QueryId,
U: diesel::query_builder::QueryId> diesel::query_builder::QueryId
for Like<T, U> {
type QueryId =
Like<<T as diesel::query_builder::QueryId>::QueryId,
<U as diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<T as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID &&
<U as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<T as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
<U as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION ||
false;
}
};crate::query_builder::QueryId,
732 const _: () =
{
use diesel;
use diesel::internal::derives::numeric_ops as ops;
use diesel::expression::{Expression, AsExpression};
use diesel::sql_types::ops::{Add, Sub, Mul, Div};
use diesel::sql_types::{SqlType, SingleValue};
impl<T, U, __Rhs> ::std::ops::Add<__Rhs> for Like<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Add,
<<Self as Expression>::SqlType as Add>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Add>::Rhs> {
type Output = ops::Add<Self, __Rhs::Expression>;
fn add(self, rhs: __Rhs) -> Self::Output {
ops::Add::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Sub<__Rhs> for Like<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Sub,
<<Self as Expression>::SqlType as Sub>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Sub>::Rhs> {
type Output = ops::Sub<Self, __Rhs::Expression>;
fn sub(self, rhs: __Rhs) -> Self::Output {
ops::Sub::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Mul<__Rhs> for Like<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Mul,
<<Self as Expression>::SqlType as Mul>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Mul>::Rhs> {
type Output = ops::Mul<Self, __Rhs::Expression>;
fn mul(self, rhs: __Rhs) -> Self::Output {
ops::Mul::new(self, rhs.as_expression())
}
}
impl<T, U, __Rhs> ::std::ops::Div<__Rhs> for Like<T, U> where
Self: Expression, Self: Expression,
<Self as Expression>::SqlType: Div,
<<Self as Expression>::SqlType as Div>::Rhs: SqlType +
SingleValue,
__Rhs: AsExpression<<<Self as Expression>::SqlType as Div>::Rhs> {
type Output = ops::Div<Self, __Rhs::Expression>;
fn div(self, rhs: __Rhs) -> Self::Output {
ops::Div::new(self, rhs.as_expression())
}
}
};crate::sql_types::DieselNumericOps,
733 const _: () =
{
use diesel;
impl<T, U, __GroupByClause>
diesel::expression::ValidGrouping<__GroupByClause> for Like<T, U>
where T: diesel::expression::ValidGrouping<__GroupByClause>,
U: diesel::expression::ValidGrouping<__GroupByClause>,
<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate: diesel::expression::MixedAggregates<<U
as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>
{
type IsAggregate =
<<T as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate
as
diesel::expression::MixedAggregates<<U as
diesel::expression::ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
};crate::expression::ValidGrouping,
734)]
735#[doc(hidden)]
736pub struct Like<T, U> {
737 pub(crate) left: T,
738 pub(crate) right: U,
739}
740
741impl<T, U> Like<T, U> {
742 pub(crate) fn new(left: T, right: U) -> Self {
743 Like { left, right }
744 }
745}
746
747impl<T, U, QS> crate::expression::SelectableExpression<QS> for Like<T, U>
748where
749 Like<T, U>: crate::expression::AppearsOnTable<QS>,
750 T: crate::expression::SelectableExpression<QS>,
751 U: crate::expression::SelectableExpression<QS>,
752{
753}
754
755impl<T, U, QS> crate::expression::AppearsOnTable<QS> for Like<T, U>
756where
757 Like<T, U>: crate::expression::Expression,
758 T: crate::expression::AppearsOnTable<QS>,
759 U: crate::expression::AppearsOnTable<QS>,
760{
761}
762
763impl<T, U> crate::expression::Expression for Like<T, U>
764where
765 T: crate::expression::Expression,
766 U: crate::expression::Expression,
767 <T as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
768 <U as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
769 crate::sql_types::is_nullable::IsSqlTypeNullable<<T as crate::expression::Expression>::SqlType>:
770 crate::sql_types::OneIsNullable<
771 crate::sql_types::is_nullable::IsSqlTypeNullable<
772 <U as crate::expression::Expression>::SqlType,
773 >,
774 >,
775 crate::sql_types::is_nullable::IsOneNullable<
776 <T as crate::expression::Expression>::SqlType,
777 <U as crate::expression::Expression>::SqlType,
778 >: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>,
779{
780 type SqlType = crate::sql_types::is_nullable::MaybeNullable<
781 crate::sql_types::is_nullable::IsOneNullable<
782 <T as crate::expression::Expression>::SqlType,
783 <U as crate::expression::Expression>::SqlType,
784 >,
785 crate::sql_types::Bool,
786 >;
787}
788
789impl<T, U, DB> crate::query_builder::QueryFragment<DB> for Like<T, U>
790where
791 T: crate::query_builder::QueryFragment<DB> + crate::Expression,
792 U: crate::query_builder::QueryFragment<DB>,
793 DB: crate::backend::Backend,
794 DB: LikeIsAllowedForType<T::SqlType>,
795{
796 fn walk_ast<'b>(
797 &'b self,
798 mut out: crate::query_builder::AstPass<'_, 'b, DB>,
799 ) -> crate::result::QueryResult<()> {
800 (self.left.walk_ast(out.reborrow())?);
801 (out.push_sql(" LIKE "));
802 (self.right.walk_ast(out.reborrow())?);
803 Ok(())
804 }
805}
806
807impl<S, T, U> crate::internal::operators_macro::FieldAliasMapper<S> for Like<T, U>
808where
809 S: crate::query_source::AliasSource,
810 T: crate::internal::operators_macro::FieldAliasMapper<S>,
811 U: crate::internal::operators_macro::FieldAliasMapper<S>,
812{
813 type Out = Like<
814 <T as crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
815 <U as crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
816 >;
817 fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
818 Like {
819 left: self.left.map(alias),
820 right: self.right.map(alias),
821 }
822 }
823}
824
825#[diagnostic::on_unimplemented(
826 message = "cannot use the `LIKE` operator with expressions of the type `{ST}` for the backend `{Self}`",
827 note = "expressions of the type `diesel::sql_types::Text` and `diesel::sql_types::Nullable<Text>` are \n\
828 allowed for all backends"
829)]
830#[cfg_attr(
831 feature = "postgres_backend",
832 diagnostic::on_unimplemented(
833 note = "expressions of the type `diesel::sql_types::Binary` and `diesel::sql_types::Nullable<Binary>` are \n\
834 allowed for the PostgreSQL backend"
835 )
836)]
837pub trait LikeIsAllowedForType<ST>: Backend {}
838
839impl<DB> LikeIsAllowedForType<crate::sql_types::Text> for DB where DB: Backend {}
840
841#[cfg(feature = "postgres_backend")]
842impl LikeIsAllowedForType<crate::pg::sql_types::Citext> for crate::pg::Pg {}
843
844impl<T, DB> LikeIsAllowedForType<crate::sql_types::Nullable<T>> for DB where
845 DB: Backend + LikeIsAllowedForType<T>
846{
847}