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]
237macro_rules! infix_operator {
238 ($name:ident, $operator:expr) => {
239 $crate::infix_operator!($name, $operator, $crate::sql_types::Bool);
240 };
241
242 ($name:ident, $operator:expr, backend: $backend:ty) => {
243 $crate::infix_operator!($name, $operator, $crate::sql_types::Bool, backend: $backend);
244 };
245
246 ($name:ident, $operator:expr, $($return_ty:tt)::*) => {
247 $crate::__diesel_infix_operator!(
248 name = $name,
249 operator = $operator,
250 return_ty = NullableBasedOnArgs ($($return_ty)::*),
251 backend_ty_params = (DB,),
252 backend_ty = DB,
253 );
254 };
255
256 ($name:ident, $operator:expr, $($return_ty:tt)::*, backend: $backend:ty) => {
257 $crate::__diesel_infix_operator!(
258 name = $name,
259 operator = $operator,
260 return_ty = NullableBasedOnArgs ($($return_ty)::*),
261 backend_ty_params = (),
262 backend_ty = $backend,
263 );
264 };
265
266}
267#[macro_export]
268#[doc(hidden)]
269macro_rules! __diesel_infix_operator {
270 ($name:ident, $operator:expr, ConstantNullability $($return_ty:tt)::*) => {
271 $crate::__diesel_infix_operator!(
272 name = $name,
273 operator = $operator,
274 return_ty = ($($return_ty)::*),
275 backend_ty_params = (DB,),
276 backend_ty = DB,
277 );
278 };
279 ($name:ident, $operator:expr, __diesel_internal_SameResultAsInput) => {
280 $crate::__diesel_infix_operator!(
281 name = $name,
282 operator = $operator,
283 return_ty = (<T as $crate::expression::Expression>::SqlType),
284 backend_ty_params = (DB,),
285 backend_ty = DB,
286 );
287 };
288 ($name:ident, $operator:expr, __diesel_internal_SameResultAsInput, backend: $backend:ty) => {
289 $crate::__diesel_infix_operator!(
290 name = $name,
291 operator = $operator,
292 return_ty = (<T as $crate::expression::Expression>::SqlType),
293 backend_ty_params = (),
294 backend_ty = $backend,
295 );
296 };
297 ($name:ident, $operator:expr, ConstantNullability $($return_ty:tt)::*, backend: $backend:ty) => {
298 $crate::__diesel_infix_operator!(
299 name = $name,
300 operator = $operator,
301 return_ty = ($($return_ty)::*),
302 backend_ty_params = (),
303 backend_ty = $backend,
304 );
305 };
306
307 (
308 name = $name:ident,
309 operator = $operator:expr,
310 return_ty = NullableBasedOnArgs ($($return_ty:tt)+),
311 backend_ty_params = $backend_ty_params:tt,
312 backend_ty = $backend_ty:ty,
313 ) => {
314 $crate::__diesel_infix_operator!(
315 name = $name,
316 operator = $operator,
317 return_ty = (
318 $crate::sql_types::is_nullable::MaybeNullable<
319 $crate::sql_types::is_nullable::IsOneNullable<
320 <T as $crate::expression::Expression>::SqlType,
321 <U as $crate::expression::Expression>::SqlType
322 >,
323 $($return_ty)+
324 >
325 ),
326 expression_bounds = (
327 $crate::sql_types::is_nullable::IsSqlTypeNullable<
328 <T as $crate::expression::Expression>::SqlType
329 >: $crate::sql_types::OneIsNullable<
330 $crate::sql_types::is_nullable::IsSqlTypeNullable<
331 <U as $crate::expression::Expression>::SqlType
332 >
333 >,
334 $crate::sql_types::is_nullable::IsOneNullable<
335 <T as $crate::expression::Expression>::SqlType,
336 <U as $crate::expression::Expression>::SqlType
337 >: $crate::sql_types::MaybeNullableType<$($return_ty)+>,
338 ),
339 backend_ty_params = $backend_ty_params,
340 backend_ty = $backend_ty,
341 );
342 };
343
344 (
345 name = $name:ident,
346 operator = $operator:expr,
347 return_ty = ($($return_ty:tt)+),
348 backend_ty_params = $backend_ty_params:tt,
349 backend_ty = $backend_ty:ty,
350 ) => {
351 $crate::__diesel_infix_operator!(
352 name = $name,
353 operator = $operator,
354 return_ty = ($($return_ty)+),
355 expression_bounds = (),
356 backend_ty_params = $backend_ty_params,
357 backend_ty = $backend_ty,
358 );
359 };
360
361 (
362 name = $name:ident,
363 operator = $operator:expr,
364 return_ty = ($($return_ty:tt)+),
365 expression_bounds = ($($expression_bounds:tt)*),
366 backend_ty_params = $backend_ty_params:tt,
367 backend_ty = $backend_ty:ty,
368 ) => {
369 $crate::__diesel_operator_body!(
370 notation = infix,
371 struct_name = $name,
372 operator = $operator,
373 return_ty = ($($return_ty)+),
374 ty_params = (T, U,),
375 field_names = (left, right,),
376 backend_ty_params = $backend_ty_params,
377 backend_ty = $backend_ty,
378 expression_ty_params = (),
379 expression_bounds = (
380 T: $crate::expression::Expression,
381 U: $crate::expression::Expression,
382 <T as $crate::expression::Expression>::SqlType: $crate::sql_types::SqlType,
383 <U as $crate::expression::Expression>::SqlType: $crate::sql_types::SqlType,
384 $($expression_bounds)*
385 ),
386 );
387 };
388}
389
390#[macro_export]
391#[deprecated(since = "2.0.0", note = "use `diesel::infix_operator!` instead")]
392#[cfg(all(feature = "with-deprecated", not(feature = "without-deprecated")))]
393#[doc(hidden)]
394macro_rules! diesel_infix_operator {
395 ($($args:tt)*) => {
396 $crate::infix_operator!($($args)*);
397 }
398}
399
400#[macro_export]
407macro_rules! postfix_operator {
408 ($name:ident, $operator:expr) => {
409 $crate::postfix_operator!($name, $operator, $crate::sql_types::Bool);
410 };
411
412 ($name:ident, $operator:expr, backend: $backend:ty) => {
413 $crate::postfix_operator!($name, $operator, $crate::sql_types::Bool, backend: $backend);
414 };
415
416 ($name:ident, $operator:expr, ConditionalNullability $($return_ty:tt)::*) => {
417 $crate::postfix_operator!(
418 name = $name,
419 operator = $operator,
420 return_ty = NullableBasedOnArgs ($($return_ty)::*),
421 );
422 };
423
424 ($name:ident, $operator:expr, ConditionalNullability $($return_ty:tt)::*, backend: $backend:ty) => {
425 $crate::postfix_operator!(
426 $name,
427 $operator,
428 return_ty = NullableBasedOnArgs ($($return_ty)::*),
429 backend: $backend
430 );
431 };
432
433 ($name:ident, $operator:expr, return_ty = NullableBasedOnArgs($return_ty:ty)) => {
434 $crate::__diesel_operator_body!(
435 notation = postfix,
436 struct_name = $name,
437 operator = $operator,
438 return_ty = (
439 $crate::sql_types::is_nullable::MaybeNullable<
440 <<Expr as $crate::expression::Expression>::SqlType as $crate::sql_types::SqlType>::IsNull,
441 $return_ty
442 >
443 ),
444 ty_params = (Expr,),
445 field_names = (expr,),
446 backend_ty_params = (DB,),
447 backend_ty = DB,
448 expression_ty_params = (),
449 expression_bounds = (
450 Expr: $crate::expression::Expression,
451 <Expr as $crate::expression::Expression>::SqlType: $crate::sql_types::SqlType,
452 $crate::sql_types::is_nullable::IsOneNullable<
453 <Expr as $crate::expression::Expression>::SqlType,
454 $return_ty
455 >: $crate::sql_types::MaybeNullableType<$return_ty>,
456 ),
457 );
458 };
459
460 ($name:ident, $operator:expr, return_ty = NullableBasedOnArgs($return_ty:ty), backend: $backend:ty) => {
461 $crate::__diesel_operator_body!(
462 notation = postfix,
463 struct_name = $name,
464 operator = $operator,
465 return_ty = (
466 $crate::sql_types::is_nullable::MaybeNullable<
467 $crate::sql_types::is_nullable::IsOneNullable<
468 <Expr as $crate::expression::Expression>::SqlType,
469 $return_ty
470 >,
471 $return_ty
472 >
473 ),
474 ty_params = (Expr,),
475 field_names = (expr,),
476 backend_ty_params = (),
477 backend_ty = $backend,
478 expression_ty_params = (),
479 expression_bounds = (
480 Expr: $crate::expression::Expression,
481 <Expr as $crate::expression::Expression>::SqlType: $crate::sql_types::SqlType,
482 $crate::sql_types::is_nullable::IsOneNullable<
483 <Expr as $crate::expression::Expression>::SqlType,
484 $return_ty
485 >: $crate::sql_types::MaybeNullableType<$return_ty>,
486 ),
487 );
488 };
489
490 ($name:ident, $operator:expr, $return_ty:ty) => {
491 $crate::__diesel_operator_body!(
492 notation = postfix,
493 struct_name = $name,
494 operator = $operator,
495 return_ty = ($return_ty),
496 ty_params = (Expr,),
497 field_names = (expr,),
498 backend_ty_params = (DB,),
499 backend_ty = DB,
500 );
501 };
502
503 ($name:ident, $operator:expr, $return_ty:ty, backend: $backend:ty) => {
504 $crate::__diesel_operator_body!(
505 notation = postfix,
506 struct_name = $name,
507 operator = $operator,
508 return_ty = ($return_ty),
509 ty_params = (Expr,),
510 field_names = (expr,),
511 backend_ty_params = (),
512 backend_ty = $backend,
513 );
514 };
515}
516
517#[macro_export]
518#[deprecated(since = "2.0.0", note = "use `diesel::postfix_operator!` instead")]
519#[cfg(all(feature = "with-deprecated", not(feature = "without-deprecated")))]
520#[doc(hidden)]
521macro_rules! diesel_postfix_operator {
522 ($($args:tt)*) => {
523 $crate::postfix_operator!($($args)*);
524 }
525}
526
527#[macro_export]
534macro_rules! prefix_operator {
535 ($name:ident, $operator:expr) => {
536 $crate::prefix_operator!($name, $operator, $crate::sql_types::Bool);
537 };
538
539 ($name:ident, $operator:expr, backend: $backend:ty) => {
540 $crate::prefix_operator!($name, $operator, $crate::sql_types::Bool, backend: $backend);
541 };
542
543 ($name:ident, $operator:expr, $return_ty:ty) => {
544 $crate::__diesel_operator_body!(
545 notation = prefix,
546 struct_name = $name,
547 operator = $operator,
548 return_ty = (
549 $crate::sql_types::is_nullable::MaybeNullable<
550 $crate::sql_types::is_nullable::IsSqlTypeNullable<
551 <Expr as $crate::expression::Expression>::SqlType
552 >,
553 $return_ty,
554 >
555 ),
556 ty_params = (Expr,),
557 field_names = (expr,),
558 backend_ty_params = (DB,),
559 backend_ty = DB,
560 expression_ty_params = (),
561 expression_bounds = (
562 Expr: $crate::expression::Expression,
563 <Expr as $crate::expression::Expression>::SqlType: $crate::sql_types::SqlType,
564 $crate::sql_types::is_nullable::IsSqlTypeNullable<
565 <Expr as $crate::expression::Expression>::SqlType
566 >: $crate::sql_types::MaybeNullableType<$return_ty>,
567 ),
568 );
569 };
570
571 ($name:ident, $operator:expr, $return_ty:ty, backend: $backend:ty) => {
572 $crate::__diesel_operator_body!(
573 notation = prefix,
574 struct_name = $name,
575 operator = $operator,
576 return_ty = (
577 $crate::sql_types::is_nullable::MaybeNullable<
578 $crate::sql_types::is_nullable::IsSqlTypeNullable<
579 <Expr as $crate::expression::Expression>::SqlType
580 >,
581 $return_ty,
582 >
583 ),
584 ty_params = (Expr,),
585 field_names = (expr,),
586 backend_ty_params = (),
587 backend_ty = $backend,
588 expression_ty_params = (),
589 expression_bounds = (
590 Expr: $crate::expression::Expression,
591 <Expr as $crate::expression::Expression>::SqlType: $crate::sql_types::SqlType,
592 $crate::sql_types::is_nullable::IsSqlTypeNullable<
593 <Expr as $crate::expression::Expression>::SqlType
594 >: $crate::sql_types::MaybeNullableType<$return_ty>,
595 ),
596 );
597 };
598}
599
600#[macro_export]
601#[deprecated(since = "2.0.0", note = "use `diesel::prefix_operator!` instead")]
602#[cfg(all(feature = "with-deprecated", not(feature = "without-deprecated")))]
603#[doc(hidden)]
604macro_rules! diesel_prefix_operator {
605 ($($args:tt)*) => {
606 $crate::prefix_operator!($($args)*);
607 }
608}
609
610#[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 ");
611#[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 ");
612#[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 ");
613#[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, " = ");
614#[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, " > ");
615#[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, " >= ");
616#[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, " < ");
617#[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, " <= ");
618#[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, " != ");
619#[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 ");
620#[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 ");
621#[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 ");
622
623#[doc(hidden)]
#[allow(unreachable_pub)]
pub struct RetrieveAsTextJson<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
RetrieveAsTextJson<T, U> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"RetrieveAsTextJson", "left", &self.left, "right", &&self.right)
}
}
#[automatically_derived]
#[allow(unreachable_pub)]
impl<T: ::core::clone::Clone, U: ::core::clone::Clone> ::core::clone::Clone
for RetrieveAsTextJson<T, U> {
#[inline]
fn clone(&self) -> RetrieveAsTextJson<T, U> {
RetrieveAsTextJson {
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 RetrieveAsTextJson<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 RetrieveAsTextJson<T, U> {
type QueryId =
RetrieveAsTextJson<<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 RetrieveAsTextJson<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 RetrieveAsTextJson<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 RetrieveAsTextJson<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 RetrieveAsTextJson<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
RetrieveAsTextJson<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> RetrieveAsTextJson<T, U> {
#[allow(dead_code)]
pub(crate) fn new(left: T, right: U) -> Self {
RetrieveAsTextJson { left, right }
}
}
impl<T, U, QS> crate::expression::SelectableExpression<QS> for
RetrieveAsTextJson<T, U> where
RetrieveAsTextJson<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
RetrieveAsTextJson<T, U> where
RetrieveAsTextJson<T, U>: crate::expression::Expression,
T: crate::expression::AppearsOnTable<QS>,
U: crate::expression::AppearsOnTable<QS> {}
impl<T, U> crate::expression::Expression for RetrieveAsTextJson<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::Text>
{
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::Text>;
}
impl<T, U, DB> crate::query_builder::QueryFragment<DB> for
RetrieveAsTextJson<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
RetrieveAsTextJson<T, U> where S: crate::query_source::AliasSource,
T: crate::internal::operators_macro::FieldAliasMapper<S>,
U: crate::internal::operators_macro::FieldAliasMapper<S> {
type Out =
RetrieveAsTextJson<<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 {
RetrieveAsTextJson {
left: self.left.map(alias),
right: self.right.map(alias),
}
}
}infix_operator!(RetrieveAsTextJson, " ->> ", crate::sql_types::Text);
624
625#[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");
626#[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");
627#[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!(
628 Asc,
629 " ASC",
630 crate::expression::expression_types::NotSelectable
631);
632#[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!(
633 Desc,
634 " DESC",
635 crate::expression::expression_types::NotSelectable
636);
637
638#[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 ");
639
640use crate::backend::{sql_dialect, Backend, SqlDialect};
641use crate::expression::{TypedExpressionType, ValidGrouping};
642use crate::insertable::{ColumnInsertValue, Insertable};
643use crate::query_builder::{QueryFragment, QueryId, ValuesClause};
644use crate::query_source::Column;
645use crate::sql_types::{DieselNumericOps, SqlType};
646
647impl<T, U> Insertable<T::Table> for Eq<T, U>
648where
649 T: Column,
650{
651 type Values = ValuesClause<ColumnInsertValue<T, U>, T::Table>;
652
653 fn values(self) -> Self::Values {
654 ValuesClause::new(ColumnInsertValue::new(self.right))
655 }
656}
657
658impl<'a, T, Tab, U> Insertable<Tab> for &'a Eq<T, U>
659where
660 T: Copy,
661 Eq<T, &'a U>: Insertable<Tab>,
662{
663 type Values = <Eq<T, &'a U> as Insertable<Tab>>::Values;
664
665 fn values(self) -> Self::Values {
666 Eq::new(self.left, &self.right).values()
667 }
668}
669
670#[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(
672 feature = "i-implement-a-third-party-backend-and-opt-into-breaking-changes",
673 public_fields(left, right)
674)]
675#[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)]
676pub struct Concat<L, R> {
677 pub(crate) left: L,
679 pub(crate) right: R,
681}
682
683impl<L, R> Concat<L, R> {
684 pub(crate) fn new(left: L, right: R) -> Self {
685 Self { left, right }
686 }
687}
688
689impl<L, R, ST> crate::expression::Expression for Concat<L, R>
690where
691 L: crate::expression::Expression<SqlType = ST>,
692 R: crate::expression::Expression<SqlType = ST>,
693 ST: SqlType + TypedExpressionType,
694{
695 type SqlType = ST;
696}
697
698impl<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>);
699
700impl<L, R, DB> QueryFragment<DB> for Concat<L, R>
701where
702 DB: Backend,
703 Self: QueryFragment<DB, DB::ConcatClause>,
704{
705 fn walk_ast<'b>(
706 &'b self,
707 pass: crate::query_builder::AstPass<'_, 'b, DB>,
708 ) -> crate::result::QueryResult<()> {
709 <Self as QueryFragment<DB, DB::ConcatClause>>::walk_ast(self, pass)
710 }
711}
712
713impl<L, R, DB> QueryFragment<DB, sql_dialect::concat_clause::ConcatWithPipesClause> for Concat<L, R>
714where
715 L: QueryFragment<DB>,
716 R: QueryFragment<DB>,
717 DB: Backend + SqlDialect<ConcatClause = sql_dialect::concat_clause::ConcatWithPipesClause>,
718{
719 fn walk_ast<'b>(
720 &'b self,
721 mut out: crate::query_builder::AstPass<'_, 'b, DB>,
722 ) -> crate::result::QueryResult<()> {
723 out.push_sql("(");
726 self.left.walk_ast(out.reborrow())?;
727 out.push_sql(" || ");
728 self.right.walk_ast(out.reborrow())?;
729 out.push_sql(")");
730 Ok(())
731 }
732}
733
734#[derive(
736 #[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,
737 #[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,
738 #[automatically_derived]
impl<T: ::core::marker::Copy, U: ::core::marker::Copy> ::core::marker::Copy
for Like<T, U> {
}Copy,
739 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,
740 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,
741 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,
742)]
743#[doc(hidden)]
744pub struct Like<T, U> {
745 pub(crate) left: T,
746 pub(crate) right: U,
747}
748
749impl<T, U> Like<T, U> {
750 pub(crate) fn new(left: T, right: U) -> Self {
751 Like { left, right }
752 }
753}
754
755impl<T, U, QS> crate::expression::SelectableExpression<QS> for Like<T, U>
756where
757 Like<T, U>: crate::expression::AppearsOnTable<QS>,
758 T: crate::expression::SelectableExpression<QS>,
759 U: crate::expression::SelectableExpression<QS>,
760{
761}
762
763impl<T, U, QS> crate::expression::AppearsOnTable<QS> for Like<T, U>
764where
765 Like<T, U>: crate::expression::Expression,
766 T: crate::expression::AppearsOnTable<QS>,
767 U: crate::expression::AppearsOnTable<QS>,
768{
769}
770
771impl<T, U> crate::expression::Expression for Like<T, U>
772where
773 T: crate::expression::Expression,
774 U: crate::expression::Expression,
775 <T as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
776 <U as crate::expression::Expression>::SqlType: crate::sql_types::SqlType,
777 crate::sql_types::is_nullable::IsSqlTypeNullable<<T as crate::expression::Expression>::SqlType>:
778 crate::sql_types::OneIsNullable<
779 crate::sql_types::is_nullable::IsSqlTypeNullable<
780 <U as crate::expression::Expression>::SqlType,
781 >,
782 >,
783 crate::sql_types::is_nullable::IsOneNullable<
784 <T as crate::expression::Expression>::SqlType,
785 <U as crate::expression::Expression>::SqlType,
786 >: crate::sql_types::MaybeNullableType<crate::sql_types::Bool>,
787{
788 type SqlType = crate::sql_types::is_nullable::MaybeNullable<
789 crate::sql_types::is_nullable::IsOneNullable<
790 <T as crate::expression::Expression>::SqlType,
791 <U as crate::expression::Expression>::SqlType,
792 >,
793 crate::sql_types::Bool,
794 >;
795}
796
797impl<T, U, DB> crate::query_builder::QueryFragment<DB> for Like<T, U>
798where
799 T: crate::query_builder::QueryFragment<DB> + crate::Expression,
800 U: crate::query_builder::QueryFragment<DB>,
801 DB: crate::backend::Backend,
802 DB: LikeIsAllowedForType<T::SqlType>,
803{
804 fn walk_ast<'b>(
805 &'b self,
806 mut out: crate::query_builder::AstPass<'_, 'b, DB>,
807 ) -> crate::result::QueryResult<()> {
808 (self.left.walk_ast(out.reborrow())?);
809 (out.push_sql(" LIKE "));
810 (self.right.walk_ast(out.reborrow())?);
811 Ok(())
812 }
813}
814
815impl<S, T, U> crate::internal::operators_macro::FieldAliasMapper<S> for Like<T, U>
816where
817 S: crate::query_source::AliasSource,
818 T: crate::internal::operators_macro::FieldAliasMapper<S>,
819 U: crate::internal::operators_macro::FieldAliasMapper<S>,
820{
821 type Out = Like<
822 <T as crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
823 <U as crate::internal::operators_macro::FieldAliasMapper<S>>::Out,
824 >;
825 fn map(self, alias: &crate::query_source::Alias<S>) -> Self::Out {
826 Like {
827 left: self.left.map(alias),
828 right: self.right.map(alias),
829 }
830 }
831}
832
833#[diagnostic::on_unimplemented(
834 message = "cannot use the `LIKE` operator with expressions of the type `{ST}` for the backend `{Self}`",
835 note = "expressions of the type `diesel::sql_types::Text` and `diesel::sql_types::Nullable<Text>` are \n\
836 allowed for all backends"
837)]
838#[cfg_attr(
839 feature = "postgres_backend",
840 diagnostic::on_unimplemented(
841 note = "expressions of the type `diesel::sql_types::Binary` and `diesel::sql_types::Nullable<Binary>` are \n\
842 allowed for the PostgreSQL backend"
843 )
844)]
845pub trait LikeIsAllowedForType<ST>: Backend {}
846
847impl<DB> LikeIsAllowedForType<crate::sql_types::Text> for DB where DB: Backend {}
848
849#[cfg(feature = "postgres_backend")]
850impl LikeIsAllowedForType<crate::pg::sql_types::Citext> for crate::pg::Pg {}
851
852impl<T, DB> LikeIsAllowedForType<crate::sql_types::Nullable<T>> for DB where
853 DB: Backend + LikeIsAllowedForType<T>
854{
855}