1use crate::associations::BelongsTo;
2use crate::backend::Backend;
3use crate::deserialize::{
4 self, FromSqlRow, FromStaticSqlRow, Queryable, SqlTypeOrSelectable, StaticallySizedRow,
5};
6use crate::expression::{
7 AppearsOnTable, Expression, IsContainedInGroupBy, MixedAggregates, QueryMetadata, Selectable,
8 SelectableExpression, TypedExpressionType, ValidGrouping, is_contained_in_group_by,
9};
10use crate::insertable::{CanInsertInSingleQuery, InsertValues, Insertable, InsertableOptionHelper};
11use crate::query_builder::*;
12use crate::query_dsl::load_dsl::CompatibleType;
13use crate::query_source::*;
14use crate::result::QueryResult;
15use crate::row::*;
16use crate::sql_types::{HasSqlType, IntoNullable, Nullable, OneIsNullable, SqlType};
17use crate::util::{TupleAppend, TupleSize};
18use alloc::vec::Vec;
19
20impl<T> TupleSize for T
21where
22 T: crate::sql_types::SingleValue,
23{
24 const SIZE: usize = 1;
25}
26
27macro_rules! fake_variadic {
28 (1i32 -> $($tt: tt)*) => {
29 #[cfg_attr(diesel_docsrs, doc(fake_variadic))]
30 $($tt)*
31 };
32 ($idx:tt -> $($tt: tt)*) => {
33 #[cfg_attr(diesel_docsrs, doc(hidden))]
34 $($tt)*
35 };
36}
37
38macro_rules! tuple_impls {
39 ($(
40 $Tuple:tt {
41 $(($idx:tt) -> $T:ident, $ST:ident, $TT:ident,)+
42 }
43 )+) => {
44 $(
45 fake_variadic!{
46 $Tuple ->
47 impl<$($T),+, __DB> HasSqlType<($($T,)+)> for __DB where
48 $(__DB: HasSqlType<$T>),+,
49 __DB: Backend,
50 {
51 fn metadata(_: &mut __DB::MetadataLookup) -> __DB::TypeMetadata {
52 unreachable!("Tuples should never implement `ToSql` directly");
53 }
54 }
55 }
56
57 impl_from_sql_row!(($($T,)+), ($($ST,)+));
58
59
60 fake_variadic! {
61 $Tuple ->
62 #[diagnostic::do_not_recommend]
63 impl<$($T: Expression),+> Expression for ($($T,)+)
64 where ($($T::SqlType, )*): TypedExpressionType
65 {
66 type SqlType = ($(<$T as Expression>::SqlType,)+);
67 }
68 }
69 fake_variadic! {
70 $Tuple -> impl<$($T: TypedExpressionType,)*> TypedExpressionType for ($($T,)*) {}
71 }
72 fake_variadic! {
73 $Tuple ->
74 impl<$($T: SqlType + TypedExpressionType,)*> TypedExpressionType for Nullable<($($T,)*)>
75 where ($($T,)*): SqlType
76 {
77 }
78 }
79 fake_variadic! {
80 $Tuple ->
81 impl<$($T: SqlType,)*> IntoNullable for ($($T,)*)
82 where Self: SqlType,
83 {
84 type Nullable = Nullable<($($T,)*)>;
85 }
86 }
87
88 fake_variadic! {
89 $Tuple ->
90 impl<$($T,)+ __DB> Selectable<__DB> for ($($T,)+)
91 where
92 __DB: Backend,
93 $($T: Selectable<__DB>),+,
94 {
95 type SelectExpression = ($($T::SelectExpression,)+);
96
97 fn construct_selection() -> Self::SelectExpression {
98 ($($T::construct_selection(),)+)
99 }
100 }
101 }
102
103 fake_variadic! {
104 $Tuple ->
105 impl<$($T: QueryFragment<__DB>),+, __DB: Backend> QueryFragment<__DB> for ($($T,)+) {
106 #[allow(unused_assignments)]
107 fn walk_ast<'b>(&'b self, mut out: AstPass<'_, 'b, __DB>) -> QueryResult<()>
108 {
109 let mut needs_comma = false;
110 $(
111 if !self.$idx.is_noop(out.backend())? {
112 if needs_comma {
113 out.push_sql(", ");
114 }
115 self.$idx.walk_ast(out.reborrow())?;
116 needs_comma = true;
117 }
118 )+
119 Ok(())
120 }
121 }
122 }
123
124 impl<$($T,)+ Tab> ColumnList for ($($T,)+)
127 where
128 $($T: ColumnList<Table = Tab>,)+
129 {
130 type Table = Tab;
131
132 fn walk_ast<__DB: Backend>(&self, mut out: AstPass<'_, '_, __DB>) -> QueryResult<()> {
133 $(
134 if $idx != 0 {
135 out.push_sql(", ");
136 }
137 self.$idx.walk_ast(out.reborrow())?;
138 )+
139 Ok(())
140 }
141 }
142
143 fake_variadic! {
144 $Tuple ->
145 impl<$($T: QueryId),+> QueryId for ($($T,)+) {
146 type QueryId = ($($T::QueryId,)+);
147
148 const HAS_STATIC_QUERY_ID: bool = $($T::HAS_STATIC_QUERY_ID &&)+ true;
149 }
150 }
151
152 impl_valid_grouping_for_tuple_of_columns!($($T,)*);
153
154 impl<$($T,)+ Tab> UndecoratedInsertRecord<Tab> for ($($T,)+)
155 where
156 $($T: UndecoratedInsertRecord<Tab>,)+
157 {
158 }
159
160 impl<$($T,)+ __DB> CanInsertInSingleQuery<__DB> for ($($T,)+)
161 where
162 __DB: Backend,
163 $($T: CanInsertInSingleQuery<__DB>,)+
164 {
165 fn rows_to_insert(&self) -> Option<usize> {
166 $(debug_assert_eq!(self.$idx.rows_to_insert(), Some(1));)+
167 Some(1)
168 }
169 }
170
171 fake_variadic! {
172 $Tuple ->
173 impl<$($T,)+ $($ST,)+ Tab> Insertable<Tab> for ($($T,)+)
174 where
175 $($T: Insertable<Tab, Values = ValuesClause<$ST, Tab>>,)+
176 {
177 type Values = ValuesClause<($($ST,)+), Tab>;
178
179 fn values(self) -> Self::Values {
180 ValuesClause::new(($(self.$idx.values().values,)+))
181 }
182 }
183 }
184
185 impl<'a, $($T,)+ Tab> Insertable<Tab> for &'a ($($T,)+)
189 where
190 ($(&'a $T,)+): Insertable<Tab>,
191 {
192 type Values = <($(&'a $T,)+) as Insertable<Tab>>::Values;
193
194 fn values(self) -> Self::Values {
195 ($(&self.$idx,)+).values()
196 }
197 }
198#[allow(unused_assignments)]
201 impl<$($T,)+ Tab, __DB> InsertValues<__DB, Tab> for ($($T,)+)
202 where
203 Tab: Table,
204 __DB: Backend,
205 $($T: InsertValues<__DB, Tab>,)+
206 {
207 fn column_names(&self, mut out: AstPass<'_, '_, __DB>) -> QueryResult<()> {
208 let mut needs_comma = false;
209 $(
210 let noop_element = self.$idx.is_noop(out.backend())?;
211 if !noop_element {
212 if needs_comma {
213 out.push_sql(", ");
214 }
215 self.$idx.column_names(out.reborrow())?;
216 needs_comma = true;
217 }
218 )+
219 Ok(())
220 }
221 }
222
223 impl<__T, $($ST,)* Tab> Insertable<Tab> for InsertableOptionHelper<__T, ($($ST,)*)>
224 where
225 __T: Insertable<Tab>,
226 __T::Values: Default,
227 {
228 type Values = __T::Values;
229
230 fn values(self) -> Self::Values {
231 self.0.map(|v| v.values()).unwrap_or_default()
232 }
233 }
234
235 impl<$($T,)+ QS> SelectableExpression<QS> for ($($T,)+) where
239 $($T: SelectableExpression<QS>,)+
240 ($($T,)+): AppearsOnTable<QS>,
241 {
242 }
243
244 fake_variadic! {
245 $Tuple ->
246 impl<$($T,)+ QS> AppearsOnTable<QS> for ($($T,)+) where
247 $($T: AppearsOnTable<QS>,)+
248 ($($T,)+): Expression,
249 {
250 }
251 }
252
253 fake_variadic! {
254 $Tuple ->
255 impl<Target, $($T,)+> AsChangeset for ($($T,)+) where
256 $($T: AsChangeset<Target=Target>,)+
257 Target: QuerySource,
258 {
259 type Target = Target;
260 type Changeset = ($($T::Changeset,)+);
261
262 fn as_changeset(self) -> Self::Changeset {
263 ($(self.$idx.as_changeset(),)+)
264 }
265 }
266 }
267
268 fake_variadic! {
269 $Tuple ->
270 impl<$($T,)+ Parent> BelongsTo<Parent> for ($($T,)+) where
271 T: BelongsTo<Parent>,
272 {
273 type ForeignKey = T::ForeignKey;
274 type ForeignKeyColumn = T::ForeignKeyColumn;
275
276 fn foreign_key(&self) -> Option<&Self::ForeignKey> {
277 self.0.foreign_key()
278 }
279
280 fn foreign_key_column() -> Self::ForeignKeyColumn {
281 T::foreign_key_column()
282 }
283 }
284 }
285
286 impl<$($T,)+ Next> TupleAppend<Next> for ($($T,)+) {
287 type Output = ($($T,)+ Next);
288
289 #[allow(non_snake_case)]
290 fn tuple_append(self, next: Next) -> Self::Output {
291 let ($($T,)+) = self;
292 ($($T,)+ next)
293 }
294 }
295
296 impl_sql_type!($($T,)*);
297
298 fake_variadic! {
299 $Tuple ->
300 impl<$($T,)* __DB, $($ST,)*> Queryable<($($ST,)*), __DB> for ($($T,)*)
301 where __DB: Backend,
302 Self: FromStaticSqlRow<($($ST,)*), __DB>,
303 {
304 type Row = Self;
305
306 fn build(row: Self::Row) -> deserialize::Result<Self> {
307 Ok(row)
308 }
309 }
310 }
311
312 impl<__T, $($ST,)* __DB> FromStaticSqlRow<Nullable<($($ST,)*)>, __DB> for Option<__T> where
316 __DB: Backend,
317 ($($ST,)*): SqlType,
318 __T: FromSqlRow<($($ST,)*), __DB>,
319 {
320
321 #[allow(non_snake_case, unused_variables, unused_mut)]
322 fn build_from_row<'a>(row: &impl Row<'a, __DB>)
323 -> deserialize::Result<Self>
324 {
325 match <__T as FromSqlRow<($($ST,)*), __DB>>::build_from_row(row) {
326 Ok(v) => Ok(Some(v)),
327 Err(e) if e.is::<crate::result::UnexpectedNullError>() => Ok(None),
328 Err(e) => Err(e)
329 }
330 }
331 }
332 impl<__T, __DB, $($ST,)*> Queryable<Nullable<($($ST,)*)>, __DB> for Option<__T>
338 where __DB: Backend,
339 Self: FromStaticSqlRow<Nullable<($($ST,)*)>, __DB>,
340 ($($ST,)*): SqlType,
341 {
342 type Row = Self;
343
344 fn build(row: Self::Row) -> deserialize::Result<Self> {
345 Ok(row)
346 }
347 }
348 impl<$($T,)*> TupleSize for ($($T,)*)
351 where $($T: TupleSize,)*
352 {
353 const SIZE: usize = $($T::SIZE +)* 0;
354 }
355
356 impl<$($T,)*> TupleSize for Nullable<($($T,)*)>
357 where $($T: TupleSize,)*
358 ($($T,)*): SqlType,
359 {
360 const SIZE: usize = $($T::SIZE +)* 0;
361 }
362
363 fake_variadic! {
364 $Tuple ->
365 impl<$($T,)* __DB> QueryMetadata<($($T,)*)> for __DB
366 where __DB: Backend,
367 $(__DB: QueryMetadata<$T>,)*
368 {
369 fn row_metadata(lookup: &mut Self::MetadataLookup, row: &mut Vec<Option<__DB::TypeMetadata>>) {
370 $(
371 <__DB as QueryMetadata<$T>>::row_metadata(lookup, row);
372 )*
373 }
374 }
375 }
376
377 impl<$($T,)* __DB> QueryMetadata<Nullable<($($T,)*)>> for __DB
381 where __DB: Backend,
382 $(__DB: QueryMetadata<$T>,)*
383 {
384 fn row_metadata(lookup: &mut Self::MetadataLookup, row: &mut Vec<Option<__DB::TypeMetadata>>) {
385 $(
386 <__DB as QueryMetadata<$T>>::row_metadata(lookup, row);
387 )*
388 }
389 }
390 fake_variadic! {
393 $Tuple ->
394 impl<$($T,)* __DB> deserialize::QueryableByName< __DB> for ($($T,)*)
395 where __DB: Backend,
396 $($T: deserialize::QueryableByName<__DB>,)*
397 {
398 fn build<'a>(row: &impl NamedRow<'a, __DB>) -> deserialize::Result<Self> {
399 Ok(($(
400 <$T as deserialize::QueryableByName<__DB>>::build(row)?,
401 )*))
402 }
403 }
404 }
405
406 #[diagnostic::do_not_recommend]
407 impl<__T, $($ST,)* __DB> CompatibleType<__T, __DB> for ($($ST,)*)
408 where
409 __DB: Backend,
410 __T: FromSqlRow<($($ST,)*), __DB>,
411 {
412 type SqlType = Self;
413 }
414
415 impl<__T, $($ST,)* __DB> CompatibleType<Option<__T>, __DB> for Nullable<($($ST,)*)>
416 where
417 __DB: Backend,
418 ($($ST,)*): CompatibleType<__T, __DB>
419 {
420 type SqlType = Nullable<<($($ST,)*) as CompatibleType<__T, __DB>>::SqlType>;
421 }
422
423 impl<$($ST,)*> SqlTypeOrSelectable for ($($ST,)*)
424 where $($ST: SqlTypeOrSelectable,)*
425 {}
426
427 impl<$($ST,)*> SqlTypeOrSelectable for Nullable<($($ST,)*)>
428 where ($($ST,)*): SqlTypeOrSelectable
429 {}
430 )+
431 }
432}
433
434macro_rules! impl_from_sql_row {
435 (($T1: ident,), ($ST1: ident,)) => {
436 #[cfg_attr(diesel_docsrs, doc(fake_variadic))]
437 impl<$T1, $ST1, __DB> crate::deserialize::FromStaticSqlRow<($ST1,), __DB> for ($T1,) where
438 __DB: Backend,
439 $ST1: CompatibleType<$T1, __DB>,
440 $T1: FromSqlRow<<$ST1 as CompatibleType<$T1, __DB>>::SqlType, __DB>,
441 {
442
443 #[allow(non_snake_case, unused_variables, unused_mut)]
444 fn build_from_row<'a>(row: &impl Row<'a, __DB>)
445 -> deserialize::Result<Self>
446 {
447 Ok(($T1::build_from_row(row)?,))
448 }
449 }
450 };
451 (($T1: ident, $($T: ident,)*), ($ST1: ident, $($ST: ident,)*)) => {
452 #[cfg_attr(diesel_docsrs, doc(hidden))]
453 #[diagnostic::do_not_recommend]
454 impl<$T1, $($T,)* $($ST,)* __DB> FromSqlRow<($($ST,)* crate::sql_types::Untyped), __DB> for ($($T,)* $T1)
455 where __DB: Backend,
456 $T1: FromSqlRow<crate::sql_types::Untyped, __DB>,
457 $(
458 $T: FromSqlRow<$ST, __DB> + StaticallySizedRow<$ST, __DB>,
459 )*
460 {
461 #[allow(non_snake_case, unused_variables, unused_mut)]
462 fn build_from_row<'a>(full_row: &impl Row<'a, __DB>)
463 -> deserialize::Result<Self>
464 {
465 let field_count = full_row.field_count();
466
467 let mut static_field_count = 0;
468 $(
469 let row = full_row.partial_row(static_field_count..static_field_count + $T::FIELD_COUNT);
470 static_field_count += $T::FIELD_COUNT;
471 let $T = $T::build_from_row(&row)?;
472 )*
473
474 let row = full_row.partial_row(static_field_count..field_count);
475
476 Ok(($($T,)* $T1::build_from_row(&row)?,))
477 }
478 }
479
480 #[cfg_attr(diesel_docsrs, doc(hidden))]
481 impl<$T1, $ST1, $($T,)* $($ST,)* __DB> FromStaticSqlRow<($($ST,)* $ST1,), __DB> for ($($T,)* $T1,) where
482 __DB: Backend,
483 $ST1: CompatibleType<$T1, __DB>,
484 $T1: FromSqlRow<<$ST1 as CompatibleType<$T1, __DB>>::SqlType, __DB>,
485 $(
486 $ST: CompatibleType<$T, __DB>,
487 $T: FromSqlRow<<$ST as CompatibleType<$T, __DB>>::SqlType, __DB> + StaticallySizedRow<<$ST as CompatibleType<$T, __DB>>::SqlType, __DB>,
488 )*
489
490 {
491
492 #[allow(non_snake_case, unused_variables, unused_mut)]
493 fn build_from_row<'a>(full_row: &impl Row<'a, __DB>)
494 -> deserialize::Result<Self>
495 {
496 let field_count = full_row.field_count();
497
498 let mut static_field_count = 0;
499 $(
500 let row = full_row.partial_row(static_field_count..static_field_count + $T::FIELD_COUNT);
501 static_field_count += $T::FIELD_COUNT;
502 let $T = <$T as FromSqlRow<<$ST as CompatibleType<$T, __DB>>::SqlType, __DB>>::build_from_row(&row)?;
503 )*
504
505 let row = full_row.partial_row(static_field_count..field_count);
506
507 Ok(($($T,)* $T1::build_from_row(&row)?,))
508 }
509 }
510 }
511}
512
513macro_rules! impl_valid_grouping_for_tuple_of_columns {
514 ($T1: ident, $($T: ident,)+) => {
515 #[cfg_attr(diesel_docsrs, doc(hidden))]
516 impl<$T1, $($T,)* __GroupByClause> ValidGrouping<__GroupByClause> for ($T1, $($T,)*)
517 where
518 $T1: ValidGrouping<__GroupByClause>,
519 ($($T,)*): ValidGrouping<__GroupByClause>,
520 $T1::IsAggregate: MixedAggregates<<($($T,)*) as ValidGrouping<__GroupByClause>>::IsAggregate>,
521 {
522 type IsAggregate = <$T1::IsAggregate as MixedAggregates<<($($T,)*) as ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
523 }
524
525 impl<$T1, $($T,)* Col> IsContainedInGroupBy<Col> for ($T1, $($T,)*)
526 where Col: QueryRelationField,
527 ($($T,)*): IsContainedInGroupBy<Col>,
528 $T1: IsContainedInGroupBy<Col>,
529 $T1::Output: is_contained_in_group_by::IsAny<<($($T,)*) as IsContainedInGroupBy<Col>>::Output>
530 {
531 type Output = <$T1::Output as is_contained_in_group_by::IsAny<<($($T,)*) as IsContainedInGroupBy<Col>>::Output>>::Output;
532 }
533 };
534 ($T1: ident,) => {
535 impl<$T1, Col> IsContainedInGroupBy<Col> for ($T1,)
536 where Col: QueryRelationField,
537 $T1: IsContainedInGroupBy<Col>
538 {
539 type Output = <$T1 as IsContainedInGroupBy<Col>>::Output;
540 }
541
542 #[cfg_attr(diesel_docsrs, doc(fake_variadic))]
543 impl<$T1, __GroupByClause> ValidGrouping<__GroupByClause> for ($T1,)
544 where $T1: ValidGrouping<__GroupByClause>
545 {
546 type IsAggregate = $T1::IsAggregate;
547 }
548 };
549}
550
551macro_rules! impl_sql_type {
552 (
553 @build
554 start_ts = [$($ST: ident,)*],
555 ts = [$T1: ident,],
556 bounds = [$($bounds: tt)*],
557 is_null = [$($is_null: tt)*],
558 )=> {
559 #[cfg_attr(diesel_docsrs, doc(hidden))]
560 impl<$($ST,)*> SqlType for ($($ST,)*)
561 where
562 $($ST: SqlType,)*
563 $($bounds)*
564 $T1::IsNull: OneIsNullable<$($is_null)*>,
565 {
566 type IsNull = <$T1::IsNull as OneIsNullable<$($is_null)*>>::Out;
567 }
568
569 };
570 (
571 @build
572 start_ts = [$($ST: ident,)*],
573 ts = [$T1: ident, $($T: ident,)+],
574 bounds = [$($bounds: tt)*],
575 is_null = [$($is_null: tt)*],
576 )=> {
577 impl_sql_type!{
578 @build
579 start_ts = [$($ST,)*],
580 ts = [$($T,)*],
581 bounds = [$($bounds)* $T1::IsNull: OneIsNullable<$($is_null)*>,],
582 is_null = [<$T1::IsNull as OneIsNullable<$($is_null)*>>::Out],
583 }
584 };
585 ($T1: ident, $($T: ident,)+) => {
586 impl_sql_type!{
587 @build
588 start_ts = [$T1, $($T,)*],
589 ts = [$($T,)*],
590 bounds = [],
591 is_null = [$T1::IsNull],
592 }
593 };
594 ($T1: ident,) => {
595 #[cfg_attr(diesel_docsrs, doc(fake_variadic))]
596 impl<$T1> SqlType for ($T1,)
597 where $T1: SqlType,
598 {
599 type IsNull = $T1::IsNull;
600 }
601 }
602}
603
604#[doc(hidden)]
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
__DB>
HasSqlType<(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
T29, T30, T31)> for __DB where __DB: HasSqlType<T>, __DB: HasSqlType<T1>,
__DB: HasSqlType<T2>, __DB: HasSqlType<T3>, __DB: HasSqlType<T4>,
__DB: HasSqlType<T5>, __DB: HasSqlType<T6>, __DB: HasSqlType<T7>,
__DB: HasSqlType<T8>, __DB: HasSqlType<T9>, __DB: HasSqlType<T10>,
__DB: HasSqlType<T11>, __DB: HasSqlType<T12>, __DB: HasSqlType<T13>,
__DB: HasSqlType<T14>, __DB: HasSqlType<T15>, __DB: HasSqlType<T16>,
__DB: HasSqlType<T17>, __DB: HasSqlType<T18>, __DB: HasSqlType<T19>,
__DB: HasSqlType<T20>, __DB: HasSqlType<T21>, __DB: HasSqlType<T22>,
__DB: HasSqlType<T23>, __DB: HasSqlType<T24>, __DB: HasSqlType<T25>,
__DB: HasSqlType<T26>, __DB: HasSqlType<T27>, __DB: HasSqlType<T28>,
__DB: HasSqlType<T29>, __DB: HasSqlType<T30>, __DB: HasSqlType<T31>,
__DB: Backend {
fn metadata(_: &mut __DB::MetadataLookup) -> __DB::TypeMetadata {
{
::core::panicking::panic_fmt(format_args!("internal error: entered unreachable code: {0}",
format_args!("Tuples should never implement `ToSql` directly")));
};
}
}
#[doc(hidden)]
#[diagnostic::do_not_recommend]
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13, ST14,
ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25, ST26,
ST27, ST28, ST29, ST30, ST31, __DB>
FromSqlRow<(ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24,
ST25, ST26, ST27, ST28, ST29, ST30, ST31, crate::sql_types::Untyped),
__DB> for
(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
T) where __DB: Backend, T: FromSqlRow<crate::sql_types::Untyped, __DB>,
T1: FromSqlRow<ST1, __DB> + StaticallySizedRow<ST1, __DB>,
T2: FromSqlRow<ST2, __DB> + StaticallySizedRow<ST2, __DB>,
T3: FromSqlRow<ST3, __DB> + StaticallySizedRow<ST3, __DB>,
T4: FromSqlRow<ST4, __DB> + StaticallySizedRow<ST4, __DB>,
T5: FromSqlRow<ST5, __DB> + StaticallySizedRow<ST5, __DB>,
T6: FromSqlRow<ST6, __DB> + StaticallySizedRow<ST6, __DB>,
T7: FromSqlRow<ST7, __DB> + StaticallySizedRow<ST7, __DB>,
T8: FromSqlRow<ST8, __DB> + StaticallySizedRow<ST8, __DB>,
T9: FromSqlRow<ST9, __DB> + StaticallySizedRow<ST9, __DB>,
T10: FromSqlRow<ST10, __DB> + StaticallySizedRow<ST10, __DB>,
T11: FromSqlRow<ST11, __DB> + StaticallySizedRow<ST11, __DB>,
T12: FromSqlRow<ST12, __DB> + StaticallySizedRow<ST12, __DB>,
T13: FromSqlRow<ST13, __DB> + StaticallySizedRow<ST13, __DB>,
T14: FromSqlRow<ST14, __DB> + StaticallySizedRow<ST14, __DB>,
T15: FromSqlRow<ST15, __DB> + StaticallySizedRow<ST15, __DB>,
T16: FromSqlRow<ST16, __DB> + StaticallySizedRow<ST16, __DB>,
T17: FromSqlRow<ST17, __DB> + StaticallySizedRow<ST17, __DB>,
T18: FromSqlRow<ST18, __DB> + StaticallySizedRow<ST18, __DB>,
T19: FromSqlRow<ST19, __DB> + StaticallySizedRow<ST19, __DB>,
T20: FromSqlRow<ST20, __DB> + StaticallySizedRow<ST20, __DB>,
T21: FromSqlRow<ST21, __DB> + StaticallySizedRow<ST21, __DB>,
T22: FromSqlRow<ST22, __DB> + StaticallySizedRow<ST22, __DB>,
T23: FromSqlRow<ST23, __DB> + StaticallySizedRow<ST23, __DB>,
T24: FromSqlRow<ST24, __DB> + StaticallySizedRow<ST24, __DB>,
T25: FromSqlRow<ST25, __DB> + StaticallySizedRow<ST25, __DB>,
T26: FromSqlRow<ST26, __DB> + StaticallySizedRow<ST26, __DB>,
T27: FromSqlRow<ST27, __DB> + StaticallySizedRow<ST27, __DB>,
T28: FromSqlRow<ST28, __DB> + StaticallySizedRow<ST28, __DB>,
T29: FromSqlRow<ST29, __DB> + StaticallySizedRow<ST29, __DB>,
T30: FromSqlRow<ST30, __DB> + StaticallySizedRow<ST30, __DB>,
T31: FromSqlRow<ST31, __DB> + StaticallySizedRow<ST31, __DB> {
#[allow(non_snake_case, unused_variables, unused_mut)]
fn build_from_row<'a>(full_row: &impl Row<'a, __DB>)
-> deserialize::Result<Self> {
let field_count = full_row.field_count();
let mut static_field_count = 0;
let row =
full_row.partial_row(static_field_count..static_field_count +
T1::FIELD_COUNT);
static_field_count += T1::FIELD_COUNT;
let T1 = T1::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T2::FIELD_COUNT);
static_field_count += T2::FIELD_COUNT;
let T2 = T2::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T3::FIELD_COUNT);
static_field_count += T3::FIELD_COUNT;
let T3 = T3::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T4::FIELD_COUNT);
static_field_count += T4::FIELD_COUNT;
let T4 = T4::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T5::FIELD_COUNT);
static_field_count += T5::FIELD_COUNT;
let T5 = T5::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T6::FIELD_COUNT);
static_field_count += T6::FIELD_COUNT;
let T6 = T6::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T7::FIELD_COUNT);
static_field_count += T7::FIELD_COUNT;
let T7 = T7::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T8::FIELD_COUNT);
static_field_count += T8::FIELD_COUNT;
let T8 = T8::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T9::FIELD_COUNT);
static_field_count += T9::FIELD_COUNT;
let T9 = T9::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T10::FIELD_COUNT);
static_field_count += T10::FIELD_COUNT;
let T10 = T10::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T11::FIELD_COUNT);
static_field_count += T11::FIELD_COUNT;
let T11 = T11::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T12::FIELD_COUNT);
static_field_count += T12::FIELD_COUNT;
let T12 = T12::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T13::FIELD_COUNT);
static_field_count += T13::FIELD_COUNT;
let T13 = T13::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T14::FIELD_COUNT);
static_field_count += T14::FIELD_COUNT;
let T14 = T14::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T15::FIELD_COUNT);
static_field_count += T15::FIELD_COUNT;
let T15 = T15::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T16::FIELD_COUNT);
static_field_count += T16::FIELD_COUNT;
let T16 = T16::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T17::FIELD_COUNT);
static_field_count += T17::FIELD_COUNT;
let T17 = T17::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T18::FIELD_COUNT);
static_field_count += T18::FIELD_COUNT;
let T18 = T18::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T19::FIELD_COUNT);
static_field_count += T19::FIELD_COUNT;
let T19 = T19::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T20::FIELD_COUNT);
static_field_count += T20::FIELD_COUNT;
let T20 = T20::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T21::FIELD_COUNT);
static_field_count += T21::FIELD_COUNT;
let T21 = T21::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T22::FIELD_COUNT);
static_field_count += T22::FIELD_COUNT;
let T22 = T22::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T23::FIELD_COUNT);
static_field_count += T23::FIELD_COUNT;
let T23 = T23::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T24::FIELD_COUNT);
static_field_count += T24::FIELD_COUNT;
let T24 = T24::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T25::FIELD_COUNT);
static_field_count += T25::FIELD_COUNT;
let T25 = T25::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T26::FIELD_COUNT);
static_field_count += T26::FIELD_COUNT;
let T26 = T26::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T27::FIELD_COUNT);
static_field_count += T27::FIELD_COUNT;
let T27 = T27::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T28::FIELD_COUNT);
static_field_count += T28::FIELD_COUNT;
let T28 = T28::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T29::FIELD_COUNT);
static_field_count += T29::FIELD_COUNT;
let T29 = T29::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T30::FIELD_COUNT);
static_field_count += T30::FIELD_COUNT;
let T30 = T30::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T31::FIELD_COUNT);
static_field_count += T31::FIELD_COUNT;
let T31 = T31::build_from_row(&row)?;
let row = full_row.partial_row(static_field_count..field_count);
Ok((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
T28, T29, T30, T31, T::build_from_row(&row)?))
}
}
#[doc(hidden)]
impl<T, ST, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
T31, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13,
ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25,
ST26, ST27, ST28, ST29, ST30, ST31, __DB>
FromStaticSqlRow<(ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11,
ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23,
ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31, ST), __DB> for
(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
T) where __DB: Backend, ST: CompatibleType<T, __DB>,
T: FromSqlRow<<ST as CompatibleType<T, __DB>>::SqlType, __DB>,
ST1: CompatibleType<T1, __DB>,
T1: FromSqlRow<<ST1 as CompatibleType<T1, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST1 as CompatibleType<T1, __DB>>::SqlType, __DB>,
ST2: CompatibleType<T2, __DB>,
T2: FromSqlRow<<ST2 as CompatibleType<T2, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST2 as CompatibleType<T2, __DB>>::SqlType, __DB>,
ST3: CompatibleType<T3, __DB>,
T3: FromSqlRow<<ST3 as CompatibleType<T3, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST3 as CompatibleType<T3, __DB>>::SqlType, __DB>,
ST4: CompatibleType<T4, __DB>,
T4: FromSqlRow<<ST4 as CompatibleType<T4, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST4 as CompatibleType<T4, __DB>>::SqlType, __DB>,
ST5: CompatibleType<T5, __DB>,
T5: FromSqlRow<<ST5 as CompatibleType<T5, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST5 as CompatibleType<T5, __DB>>::SqlType, __DB>,
ST6: CompatibleType<T6, __DB>,
T6: FromSqlRow<<ST6 as CompatibleType<T6, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST6 as CompatibleType<T6, __DB>>::SqlType, __DB>,
ST7: CompatibleType<T7, __DB>,
T7: FromSqlRow<<ST7 as CompatibleType<T7, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST7 as CompatibleType<T7, __DB>>::SqlType, __DB>,
ST8: CompatibleType<T8, __DB>,
T8: FromSqlRow<<ST8 as CompatibleType<T8, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST8 as CompatibleType<T8, __DB>>::SqlType, __DB>,
ST9: CompatibleType<T9, __DB>,
T9: FromSqlRow<<ST9 as CompatibleType<T9, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST9 as CompatibleType<T9, __DB>>::SqlType, __DB>,
ST10: CompatibleType<T10, __DB>,
T10: FromSqlRow<<ST10 as CompatibleType<T10, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST10 as CompatibleType<T10, __DB>>::SqlType, __DB>,
ST11: CompatibleType<T11, __DB>,
T11: FromSqlRow<<ST11 as CompatibleType<T11, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST11 as CompatibleType<T11, __DB>>::SqlType, __DB>,
ST12: CompatibleType<T12, __DB>,
T12: FromSqlRow<<ST12 as CompatibleType<T12, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST12 as CompatibleType<T12, __DB>>::SqlType, __DB>,
ST13: CompatibleType<T13, __DB>,
T13: FromSqlRow<<ST13 as CompatibleType<T13, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST13 as CompatibleType<T13, __DB>>::SqlType, __DB>,
ST14: CompatibleType<T14, __DB>,
T14: FromSqlRow<<ST14 as CompatibleType<T14, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST14 as CompatibleType<T14, __DB>>::SqlType, __DB>,
ST15: CompatibleType<T15, __DB>,
T15: FromSqlRow<<ST15 as CompatibleType<T15, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST15 as CompatibleType<T15, __DB>>::SqlType, __DB>,
ST16: CompatibleType<T16, __DB>,
T16: FromSqlRow<<ST16 as CompatibleType<T16, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST16 as CompatibleType<T16, __DB>>::SqlType, __DB>,
ST17: CompatibleType<T17, __DB>,
T17: FromSqlRow<<ST17 as CompatibleType<T17, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST17 as CompatibleType<T17, __DB>>::SqlType, __DB>,
ST18: CompatibleType<T18, __DB>,
T18: FromSqlRow<<ST18 as CompatibleType<T18, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST18 as CompatibleType<T18, __DB>>::SqlType, __DB>,
ST19: CompatibleType<T19, __DB>,
T19: FromSqlRow<<ST19 as CompatibleType<T19, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST19 as CompatibleType<T19, __DB>>::SqlType, __DB>,
ST20: CompatibleType<T20, __DB>,
T20: FromSqlRow<<ST20 as CompatibleType<T20, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST20 as CompatibleType<T20, __DB>>::SqlType, __DB>,
ST21: CompatibleType<T21, __DB>,
T21: FromSqlRow<<ST21 as CompatibleType<T21, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST21 as CompatibleType<T21, __DB>>::SqlType, __DB>,
ST22: CompatibleType<T22, __DB>,
T22: FromSqlRow<<ST22 as CompatibleType<T22, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST22 as CompatibleType<T22, __DB>>::SqlType, __DB>,
ST23: CompatibleType<T23, __DB>,
T23: FromSqlRow<<ST23 as CompatibleType<T23, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST23 as CompatibleType<T23, __DB>>::SqlType, __DB>,
ST24: CompatibleType<T24, __DB>,
T24: FromSqlRow<<ST24 as CompatibleType<T24, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST24 as CompatibleType<T24, __DB>>::SqlType, __DB>,
ST25: CompatibleType<T25, __DB>,
T25: FromSqlRow<<ST25 as CompatibleType<T25, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST25 as CompatibleType<T25, __DB>>::SqlType, __DB>,
ST26: CompatibleType<T26, __DB>,
T26: FromSqlRow<<ST26 as CompatibleType<T26, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST26 as CompatibleType<T26, __DB>>::SqlType, __DB>,
ST27: CompatibleType<T27, __DB>,
T27: FromSqlRow<<ST27 as CompatibleType<T27, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST27 as CompatibleType<T27, __DB>>::SqlType, __DB>,
ST28: CompatibleType<T28, __DB>,
T28: FromSqlRow<<ST28 as CompatibleType<T28, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST28 as CompatibleType<T28, __DB>>::SqlType, __DB>,
ST29: CompatibleType<T29, __DB>,
T29: FromSqlRow<<ST29 as CompatibleType<T29, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST29 as CompatibleType<T29, __DB>>::SqlType, __DB>,
ST30: CompatibleType<T30, __DB>,
T30: FromSqlRow<<ST30 as CompatibleType<T30, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST30 as CompatibleType<T30, __DB>>::SqlType, __DB>,
ST31: CompatibleType<T31, __DB>,
T31: FromSqlRow<<ST31 as CompatibleType<T31, __DB>>::SqlType, __DB> +
StaticallySizedRow<<ST31 as CompatibleType<T31, __DB>>::SqlType, __DB> {
#[allow(non_snake_case, unused_variables, unused_mut)]
fn build_from_row<'a>(full_row: &impl Row<'a, __DB>)
-> deserialize::Result<Self> {
let field_count = full_row.field_count();
let mut static_field_count = 0;
let row =
full_row.partial_row(static_field_count..static_field_count +
T1::FIELD_COUNT);
static_field_count += T1::FIELD_COUNT;
let T1 =
<T1 as
FromSqlRow<<ST1 as CompatibleType<T1, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T2::FIELD_COUNT);
static_field_count += T2::FIELD_COUNT;
let T2 =
<T2 as
FromSqlRow<<ST2 as CompatibleType<T2, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T3::FIELD_COUNT);
static_field_count += T3::FIELD_COUNT;
let T3 =
<T3 as
FromSqlRow<<ST3 as CompatibleType<T3, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T4::FIELD_COUNT);
static_field_count += T4::FIELD_COUNT;
let T4 =
<T4 as
FromSqlRow<<ST4 as CompatibleType<T4, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T5::FIELD_COUNT);
static_field_count += T5::FIELD_COUNT;
let T5 =
<T5 as
FromSqlRow<<ST5 as CompatibleType<T5, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T6::FIELD_COUNT);
static_field_count += T6::FIELD_COUNT;
let T6 =
<T6 as
FromSqlRow<<ST6 as CompatibleType<T6, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T7::FIELD_COUNT);
static_field_count += T7::FIELD_COUNT;
let T7 =
<T7 as
FromSqlRow<<ST7 as CompatibleType<T7, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T8::FIELD_COUNT);
static_field_count += T8::FIELD_COUNT;
let T8 =
<T8 as
FromSqlRow<<ST8 as CompatibleType<T8, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T9::FIELD_COUNT);
static_field_count += T9::FIELD_COUNT;
let T9 =
<T9 as
FromSqlRow<<ST9 as CompatibleType<T9, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T10::FIELD_COUNT);
static_field_count += T10::FIELD_COUNT;
let T10 =
<T10 as
FromSqlRow<<ST10 as CompatibleType<T10, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T11::FIELD_COUNT);
static_field_count += T11::FIELD_COUNT;
let T11 =
<T11 as
FromSqlRow<<ST11 as CompatibleType<T11, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T12::FIELD_COUNT);
static_field_count += T12::FIELD_COUNT;
let T12 =
<T12 as
FromSqlRow<<ST12 as CompatibleType<T12, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T13::FIELD_COUNT);
static_field_count += T13::FIELD_COUNT;
let T13 =
<T13 as
FromSqlRow<<ST13 as CompatibleType<T13, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T14::FIELD_COUNT);
static_field_count += T14::FIELD_COUNT;
let T14 =
<T14 as
FromSqlRow<<ST14 as CompatibleType<T14, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T15::FIELD_COUNT);
static_field_count += T15::FIELD_COUNT;
let T15 =
<T15 as
FromSqlRow<<ST15 as CompatibleType<T15, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T16::FIELD_COUNT);
static_field_count += T16::FIELD_COUNT;
let T16 =
<T16 as
FromSqlRow<<ST16 as CompatibleType<T16, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T17::FIELD_COUNT);
static_field_count += T17::FIELD_COUNT;
let T17 =
<T17 as
FromSqlRow<<ST17 as CompatibleType<T17, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T18::FIELD_COUNT);
static_field_count += T18::FIELD_COUNT;
let T18 =
<T18 as
FromSqlRow<<ST18 as CompatibleType<T18, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T19::FIELD_COUNT);
static_field_count += T19::FIELD_COUNT;
let T19 =
<T19 as
FromSqlRow<<ST19 as CompatibleType<T19, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T20::FIELD_COUNT);
static_field_count += T20::FIELD_COUNT;
let T20 =
<T20 as
FromSqlRow<<ST20 as CompatibleType<T20, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T21::FIELD_COUNT);
static_field_count += T21::FIELD_COUNT;
let T21 =
<T21 as
FromSqlRow<<ST21 as CompatibleType<T21, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T22::FIELD_COUNT);
static_field_count += T22::FIELD_COUNT;
let T22 =
<T22 as
FromSqlRow<<ST22 as CompatibleType<T22, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T23::FIELD_COUNT);
static_field_count += T23::FIELD_COUNT;
let T23 =
<T23 as
FromSqlRow<<ST23 as CompatibleType<T23, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T24::FIELD_COUNT);
static_field_count += T24::FIELD_COUNT;
let T24 =
<T24 as
FromSqlRow<<ST24 as CompatibleType<T24, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T25::FIELD_COUNT);
static_field_count += T25::FIELD_COUNT;
let T25 =
<T25 as
FromSqlRow<<ST25 as CompatibleType<T25, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T26::FIELD_COUNT);
static_field_count += T26::FIELD_COUNT;
let T26 =
<T26 as
FromSqlRow<<ST26 as CompatibleType<T26, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T27::FIELD_COUNT);
static_field_count += T27::FIELD_COUNT;
let T27 =
<T27 as
FromSqlRow<<ST27 as CompatibleType<T27, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T28::FIELD_COUNT);
static_field_count += T28::FIELD_COUNT;
let T28 =
<T28 as
FromSqlRow<<ST28 as CompatibleType<T28, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T29::FIELD_COUNT);
static_field_count += T29::FIELD_COUNT;
let T29 =
<T29 as
FromSqlRow<<ST29 as CompatibleType<T29, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T30::FIELD_COUNT);
static_field_count += T30::FIELD_COUNT;
let T30 =
<T30 as
FromSqlRow<<ST30 as CompatibleType<T30, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row =
full_row.partial_row(static_field_count..static_field_count +
T31::FIELD_COUNT);
static_field_count += T31::FIELD_COUNT;
let T31 =
<T31 as
FromSqlRow<<ST31 as CompatibleType<T31, __DB>>::SqlType,
__DB>>::build_from_row(&row)?;
let row = full_row.partial_row(static_field_count..field_count);
Ok((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
T28, T29, T30, T31, T::build_from_row(&row)?))
}
}
#[doc(hidden)]
#[diagnostic::do_not_recommend]
impl<T: Expression, T1: Expression, T2: Expression, T3: Expression,
T4: Expression, T5: Expression, T6: Expression, T7: Expression,
T8: Expression, T9: Expression, T10: Expression, T11: Expression,
T12: Expression, T13: Expression, T14: Expression, T15: Expression,
T16: Expression, T17: Expression, T18: Expression, T19: Expression,
T20: Expression, T21: Expression, T22: Expression, T23: Expression,
T24: Expression, T25: Expression, T26: Expression, T27: Expression,
T28: Expression, T29: Expression, T30: Expression, T31: Expression>
Expression for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where
(T::SqlType, T1::SqlType, T2::SqlType, T3::SqlType, T4::SqlType,
T5::SqlType, T6::SqlType, T7::SqlType, T8::SqlType, T9::SqlType,
T10::SqlType, T11::SqlType, T12::SqlType, T13::SqlType, T14::SqlType,
T15::SqlType, T16::SqlType, T17::SqlType, T18::SqlType, T19::SqlType,
T20::SqlType, T21::SqlType, T22::SqlType, T23::SqlType, T24::SqlType,
T25::SqlType, T26::SqlType, T27::SqlType, T28::SqlType, T29::SqlType,
T30::SqlType, T31::SqlType): TypedExpressionType {
type SqlType =
(<T as Expression>::SqlType, <T1 as Expression>::SqlType,
<T2 as Expression>::SqlType, <T3 as Expression>::SqlType,
<T4 as Expression>::SqlType, <T5 as Expression>::SqlType,
<T6 as Expression>::SqlType, <T7 as Expression>::SqlType,
<T8 as Expression>::SqlType, <T9 as Expression>::SqlType,
<T10 as Expression>::SqlType, <T11 as Expression>::SqlType,
<T12 as Expression>::SqlType, <T13 as Expression>::SqlType,
<T14 as Expression>::SqlType, <T15 as Expression>::SqlType,
<T16 as Expression>::SqlType, <T17 as Expression>::SqlType,
<T18 as Expression>::SqlType, <T19 as Expression>::SqlType,
<T20 as Expression>::SqlType, <T21 as Expression>::SqlType,
<T22 as Expression>::SqlType, <T23 as Expression>::SqlType,
<T24 as Expression>::SqlType, <T25 as Expression>::SqlType,
<T26 as Expression>::SqlType, <T27 as Expression>::SqlType,
<T28 as Expression>::SqlType, <T29 as Expression>::SqlType,
<T30 as Expression>::SqlType, <T31 as Expression>::SqlType);
}
#[doc(hidden)]
impl<T: TypedExpressionType, T1: TypedExpressionType, T2: TypedExpressionType,
T3: TypedExpressionType, T4: TypedExpressionType, T5: TypedExpressionType,
T6: TypedExpressionType, T7: TypedExpressionType, T8: TypedExpressionType,
T9: TypedExpressionType, T10: TypedExpressionType,
T11: TypedExpressionType, T12: TypedExpressionType,
T13: TypedExpressionType, T14: TypedExpressionType,
T15: TypedExpressionType, T16: TypedExpressionType,
T17: TypedExpressionType, T18: TypedExpressionType,
T19: TypedExpressionType, T20: TypedExpressionType,
T21: TypedExpressionType, T22: TypedExpressionType,
T23: TypedExpressionType, T24: TypedExpressionType,
T25: TypedExpressionType, T26: TypedExpressionType,
T27: TypedExpressionType, T28: TypedExpressionType,
T29: TypedExpressionType, T30: TypedExpressionType,
T31: TypedExpressionType> TypedExpressionType for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
{
}
#[doc(hidden)]
impl<T: SqlType + TypedExpressionType, T1: SqlType + TypedExpressionType,
T2: SqlType + TypedExpressionType, T3: SqlType + TypedExpressionType,
T4: SqlType + TypedExpressionType, T5: SqlType + TypedExpressionType,
T6: SqlType + TypedExpressionType, T7: SqlType + TypedExpressionType,
T8: SqlType + TypedExpressionType, T9: SqlType + TypedExpressionType,
T10: SqlType + TypedExpressionType, T11: SqlType + TypedExpressionType,
T12: SqlType + TypedExpressionType, T13: SqlType + TypedExpressionType,
T14: SqlType + TypedExpressionType, T15: SqlType + TypedExpressionType,
T16: SqlType + TypedExpressionType, T17: SqlType + TypedExpressionType,
T18: SqlType + TypedExpressionType, T19: SqlType + TypedExpressionType,
T20: SqlType + TypedExpressionType, T21: SqlType + TypedExpressionType,
T22: SqlType + TypedExpressionType, T23: SqlType + TypedExpressionType,
T24: SqlType + TypedExpressionType, T25: SqlType + TypedExpressionType,
T26: SqlType + TypedExpressionType, T27: SqlType + TypedExpressionType,
T28: SqlType + TypedExpressionType, T29: SqlType + TypedExpressionType,
T30: SqlType + TypedExpressionType, T31: SqlType + TypedExpressionType>
TypedExpressionType for
Nullable<(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
T30, T31)> where
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
T31): SqlType {
}
#[doc(hidden)]
impl<T: SqlType, T1: SqlType, T2: SqlType, T3: SqlType, T4: SqlType,
T5: SqlType, T6: SqlType, T7: SqlType, T8: SqlType, T9: SqlType,
T10: SqlType, T11: SqlType, T12: SqlType, T13: SqlType, T14: SqlType,
T15: SqlType, T16: SqlType, T17: SqlType, T18: SqlType, T19: SqlType,
T20: SqlType, T21: SqlType, T22: SqlType, T23: SqlType, T24: SqlType,
T25: SqlType, T26: SqlType, T27: SqlType, T28: SqlType, T29: SqlType,
T30: SqlType, T31: SqlType> IntoNullable for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where Self: SqlType {
type Nullable =
Nullable<(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
T28, T29, T30, T31)>;
}
#[doc(hidden)]
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
__DB> Selectable<__DB> for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where __DB: Backend, T: Selectable<__DB>, T1: Selectable<__DB>,
T2: Selectable<__DB>, T3: Selectable<__DB>, T4: Selectable<__DB>,
T5: Selectable<__DB>, T6: Selectable<__DB>, T7: Selectable<__DB>,
T8: Selectable<__DB>, T9: Selectable<__DB>, T10: Selectable<__DB>,
T11: Selectable<__DB>, T12: Selectable<__DB>, T13: Selectable<__DB>,
T14: Selectable<__DB>, T15: Selectable<__DB>, T16: Selectable<__DB>,
T17: Selectable<__DB>, T18: Selectable<__DB>, T19: Selectable<__DB>,
T20: Selectable<__DB>, T21: Selectable<__DB>, T22: Selectable<__DB>,
T23: Selectable<__DB>, T24: Selectable<__DB>, T25: Selectable<__DB>,
T26: Selectable<__DB>, T27: Selectable<__DB>, T28: Selectable<__DB>,
T29: Selectable<__DB>, T30: Selectable<__DB>, T31: Selectable<__DB> {
type SelectExpression =
(T::SelectExpression, T1::SelectExpression, T2::SelectExpression,
T3::SelectExpression, T4::SelectExpression, T5::SelectExpression,
T6::SelectExpression, T7::SelectExpression, T8::SelectExpression,
T9::SelectExpression, T10::SelectExpression, T11::SelectExpression,
T12::SelectExpression, T13::SelectExpression, T14::SelectExpression,
T15::SelectExpression, T16::SelectExpression, T17::SelectExpression,
T18::SelectExpression, T19::SelectExpression, T20::SelectExpression,
T21::SelectExpression, T22::SelectExpression, T23::SelectExpression,
T24::SelectExpression, T25::SelectExpression, T26::SelectExpression,
T27::SelectExpression, T28::SelectExpression, T29::SelectExpression,
T30::SelectExpression, T31::SelectExpression);
fn construct_selection() -> Self::SelectExpression {
(T::construct_selection(), T1::construct_selection(),
T2::construct_selection(), T3::construct_selection(),
T4::construct_selection(), T5::construct_selection(),
T6::construct_selection(), T7::construct_selection(),
T8::construct_selection(), T9::construct_selection(),
T10::construct_selection(), T11::construct_selection(),
T12::construct_selection(), T13::construct_selection(),
T14::construct_selection(), T15::construct_selection(),
T16::construct_selection(), T17::construct_selection(),
T18::construct_selection(), T19::construct_selection(),
T20::construct_selection(), T21::construct_selection(),
T22::construct_selection(), T23::construct_selection(),
T24::construct_selection(), T25::construct_selection(),
T26::construct_selection(), T27::construct_selection(),
T28::construct_selection(), T29::construct_selection(),
T30::construct_selection(), T31::construct_selection())
}
}
#[doc(hidden)]
impl<T: QueryFragment<__DB>, T1: QueryFragment<__DB>, T2: QueryFragment<__DB>,
T3: QueryFragment<__DB>, T4: QueryFragment<__DB>, T5: QueryFragment<__DB>,
T6: QueryFragment<__DB>, T7: QueryFragment<__DB>, T8: QueryFragment<__DB>,
T9: QueryFragment<__DB>, T10: QueryFragment<__DB>,
T11: QueryFragment<__DB>, T12: QueryFragment<__DB>,
T13: QueryFragment<__DB>, T14: QueryFragment<__DB>,
T15: QueryFragment<__DB>, T16: QueryFragment<__DB>,
T17: QueryFragment<__DB>, T18: QueryFragment<__DB>,
T19: QueryFragment<__DB>, T20: QueryFragment<__DB>,
T21: QueryFragment<__DB>, T22: QueryFragment<__DB>,
T23: QueryFragment<__DB>, T24: QueryFragment<__DB>,
T25: QueryFragment<__DB>, T26: QueryFragment<__DB>,
T27: QueryFragment<__DB>, T28: QueryFragment<__DB>,
T29: QueryFragment<__DB>, T30: QueryFragment<__DB>,
T31: QueryFragment<__DB>, __DB: Backend> QueryFragment<__DB> for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
{
#[allow(unused_assignments)]
fn walk_ast<'b>(&'b self, mut out: AstPass<'_, 'b, __DB>)
-> QueryResult<()> {
let mut needs_comma = false;
if !self.0.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.0.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.1.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.1.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.2.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.2.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.3.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.3.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.4.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.4.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.5.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.5.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.6.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.6.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.7.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.7.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.8.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.8.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.9.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.9.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.10.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.10.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.11.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.11.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.12.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.12.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.13.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.13.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.14.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.14.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.15.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.15.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.16.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.16.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.17.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.17.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.18.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.18.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.19.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.19.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.20.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.20.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.21.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.21.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.22.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.22.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.23.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.23.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.24.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.24.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.25.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.25.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.26.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.26.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.27.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.27.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.28.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.28.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.29.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.29.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.30.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.30.walk_ast(out.reborrow())?;
needs_comma = true;
}
if !self.31.is_noop(out.backend())? {
if needs_comma { out.push_sql(", "); }
self.31.walk_ast(out.reborrow())?;
needs_comma = true;
}
Ok(())
}
}
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
Tab> ColumnList for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where T: ColumnList<Table = Tab>, T1: ColumnList<Table = Tab>,
T2: ColumnList<Table = Tab>, T3: ColumnList<Table = Tab>,
T4: ColumnList<Table = Tab>, T5: ColumnList<Table = Tab>,
T6: ColumnList<Table = Tab>, T7: ColumnList<Table = Tab>,
T8: ColumnList<Table = Tab>, T9: ColumnList<Table = Tab>,
T10: ColumnList<Table = Tab>, T11: ColumnList<Table = Tab>,
T12: ColumnList<Table = Tab>, T13: ColumnList<Table = Tab>,
T14: ColumnList<Table = Tab>, T15: ColumnList<Table = Tab>,
T16: ColumnList<Table = Tab>, T17: ColumnList<Table = Tab>,
T18: ColumnList<Table = Tab>, T19: ColumnList<Table = Tab>,
T20: ColumnList<Table = Tab>, T21: ColumnList<Table = Tab>,
T22: ColumnList<Table = Tab>, T23: ColumnList<Table = Tab>,
T24: ColumnList<Table = Tab>, T25: ColumnList<Table = Tab>,
T26: ColumnList<Table = Tab>, T27: ColumnList<Table = Tab>,
T28: ColumnList<Table = Tab>, T29: ColumnList<Table = Tab>,
T30: ColumnList<Table = Tab>, T31: ColumnList<Table = Tab> {
type Table = Tab;
fn walk_ast<__DB: Backend>(&self, mut out: AstPass<'_, '_, __DB>)
-> QueryResult<()> {
if 0 != 0 { out.push_sql(", "); }
self.0.walk_ast(out.reborrow())?;
if 1 != 0 { out.push_sql(", "); }
self.1.walk_ast(out.reborrow())?;
if 2 != 0 { out.push_sql(", "); }
self.2.walk_ast(out.reborrow())?;
if 3 != 0 { out.push_sql(", "); }
self.3.walk_ast(out.reborrow())?;
if 4 != 0 { out.push_sql(", "); }
self.4.walk_ast(out.reborrow())?;
if 5 != 0 { out.push_sql(", "); }
self.5.walk_ast(out.reborrow())?;
if 6 != 0 { out.push_sql(", "); }
self.6.walk_ast(out.reborrow())?;
if 7 != 0 { out.push_sql(", "); }
self.7.walk_ast(out.reborrow())?;
if 8 != 0 { out.push_sql(", "); }
self.8.walk_ast(out.reborrow())?;
if 9 != 0 { out.push_sql(", "); }
self.9.walk_ast(out.reborrow())?;
if 10 != 0 { out.push_sql(", "); }
self.10.walk_ast(out.reborrow())?;
if 11 != 0 { out.push_sql(", "); }
self.11.walk_ast(out.reborrow())?;
if 12 != 0 { out.push_sql(", "); }
self.12.walk_ast(out.reborrow())?;
if 13 != 0 { out.push_sql(", "); }
self.13.walk_ast(out.reborrow())?;
if 14 != 0 { out.push_sql(", "); }
self.14.walk_ast(out.reborrow())?;
if 15 != 0 { out.push_sql(", "); }
self.15.walk_ast(out.reborrow())?;
if 16 != 0 { out.push_sql(", "); }
self.16.walk_ast(out.reborrow())?;
if 17 != 0 { out.push_sql(", "); }
self.17.walk_ast(out.reborrow())?;
if 18 != 0 { out.push_sql(", "); }
self.18.walk_ast(out.reborrow())?;
if 19 != 0 { out.push_sql(", "); }
self.19.walk_ast(out.reborrow())?;
if 20 != 0 { out.push_sql(", "); }
self.20.walk_ast(out.reborrow())?;
if 21 != 0 { out.push_sql(", "); }
self.21.walk_ast(out.reborrow())?;
if 22 != 0 { out.push_sql(", "); }
self.22.walk_ast(out.reborrow())?;
if 23 != 0 { out.push_sql(", "); }
self.23.walk_ast(out.reborrow())?;
if 24 != 0 { out.push_sql(", "); }
self.24.walk_ast(out.reborrow())?;
if 25 != 0 { out.push_sql(", "); }
self.25.walk_ast(out.reborrow())?;
if 26 != 0 { out.push_sql(", "); }
self.26.walk_ast(out.reborrow())?;
if 27 != 0 { out.push_sql(", "); }
self.27.walk_ast(out.reborrow())?;
if 28 != 0 { out.push_sql(", "); }
self.28.walk_ast(out.reborrow())?;
if 29 != 0 { out.push_sql(", "); }
self.29.walk_ast(out.reborrow())?;
if 30 != 0 { out.push_sql(", "); }
self.30.walk_ast(out.reborrow())?;
if 31 != 0 { out.push_sql(", "); }
self.31.walk_ast(out.reborrow())?;
Ok(())
}
}
#[doc(hidden)]
impl<T: QueryId, T1: QueryId, T2: QueryId, T3: QueryId, T4: QueryId,
T5: QueryId, T6: QueryId, T7: QueryId, T8: QueryId, T9: QueryId,
T10: QueryId, T11: QueryId, T12: QueryId, T13: QueryId, T14: QueryId,
T15: QueryId, T16: QueryId, T17: QueryId, T18: QueryId, T19: QueryId,
T20: QueryId, T21: QueryId, T22: QueryId, T23: QueryId, T24: QueryId,
T25: QueryId, T26: QueryId, T27: QueryId, T28: QueryId, T29: QueryId,
T30: QueryId, T31: QueryId> QueryId for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
{
type QueryId =
(T::QueryId, T1::QueryId, T2::QueryId, T3::QueryId, T4::QueryId,
T5::QueryId, T6::QueryId, T7::QueryId, T8::QueryId, T9::QueryId,
T10::QueryId, T11::QueryId, T12::QueryId, T13::QueryId, T14::QueryId,
T15::QueryId, T16::QueryId, T17::QueryId, T18::QueryId, T19::QueryId,
T20::QueryId, T21::QueryId, T22::QueryId, T23::QueryId, T24::QueryId,
T25::QueryId, T26::QueryId, T27::QueryId, T28::QueryId, T29::QueryId,
T30::QueryId, T31::QueryId);
const HAS_STATIC_QUERY_ID: bool =
T::HAS_STATIC_QUERY_ID && T1::HAS_STATIC_QUERY_ID &&
T2::HAS_STATIC_QUERY_ID && T3::HAS_STATIC_QUERY_ID &&
T4::HAS_STATIC_QUERY_ID && T5::HAS_STATIC_QUERY_ID &&
T6::HAS_STATIC_QUERY_ID && T7::HAS_STATIC_QUERY_ID &&
T8::HAS_STATIC_QUERY_ID && T9::HAS_STATIC_QUERY_ID &&
T10::HAS_STATIC_QUERY_ID && T11::HAS_STATIC_QUERY_ID &&
T12::HAS_STATIC_QUERY_ID && T13::HAS_STATIC_QUERY_ID &&
T14::HAS_STATIC_QUERY_ID && T15::HAS_STATIC_QUERY_ID &&
T16::HAS_STATIC_QUERY_ID && T17::HAS_STATIC_QUERY_ID &&
T18::HAS_STATIC_QUERY_ID && T19::HAS_STATIC_QUERY_ID &&
T20::HAS_STATIC_QUERY_ID && T21::HAS_STATIC_QUERY_ID &&
T22::HAS_STATIC_QUERY_ID && T23::HAS_STATIC_QUERY_ID &&
T24::HAS_STATIC_QUERY_ID && T25::HAS_STATIC_QUERY_ID &&
T26::HAS_STATIC_QUERY_ID && T27::HAS_STATIC_QUERY_ID &&
T28::HAS_STATIC_QUERY_ID && T29::HAS_STATIC_QUERY_ID &&
T30::HAS_STATIC_QUERY_ID && T31::HAS_STATIC_QUERY_ID &&
true;
}
#[doc(hidden)]
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
__GroupByClause> ValidGrouping<__GroupByClause> for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where T: ValidGrouping<__GroupByClause>,
(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
T31): ValidGrouping<__GroupByClause>,
T::IsAggregate: MixedAggregates<<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
T26, T27, T28, T29, T30, T31) as
ValidGrouping<__GroupByClause>>::IsAggregate> {
type IsAggregate =
<T::IsAggregate as
MixedAggregates<<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
T27, T28, T29, T30, T31) as
ValidGrouping<__GroupByClause>>::IsAggregate>>::Output;
}
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
Col> IsContainedInGroupBy<Col> for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where Col: QueryRelationField,
(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
T31): IsContainedInGroupBy<Col>, T: IsContainedInGroupBy<Col>,
T::Output: is_contained_in_group_by::IsAny<<(T1, T2, T3, T4, T5, T6, T7,
T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22,
T23, T24, T25, T26, T27, T28, T29, T30, T31) as
IsContainedInGroupBy<Col>>::Output> {
type Output =
<T::Output as
is_contained_in_group_by::IsAny<<(T1, T2, T3, T4, T5, T6, T7, T8, T9,
T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23,
T24, T25, T26, T27, T28, T29, T30, T31) as
IsContainedInGroupBy<Col>>::Output>>::Output;
}
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
Tab> UndecoratedInsertRecord<Tab> for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where T: UndecoratedInsertRecord<Tab>, T1: UndecoratedInsertRecord<Tab>,
T2: UndecoratedInsertRecord<Tab>, T3: UndecoratedInsertRecord<Tab>,
T4: UndecoratedInsertRecord<Tab>, T5: UndecoratedInsertRecord<Tab>,
T6: UndecoratedInsertRecord<Tab>, T7: UndecoratedInsertRecord<Tab>,
T8: UndecoratedInsertRecord<Tab>, T9: UndecoratedInsertRecord<Tab>,
T10: UndecoratedInsertRecord<Tab>, T11: UndecoratedInsertRecord<Tab>,
T12: UndecoratedInsertRecord<Tab>, T13: UndecoratedInsertRecord<Tab>,
T14: UndecoratedInsertRecord<Tab>, T15: UndecoratedInsertRecord<Tab>,
T16: UndecoratedInsertRecord<Tab>, T17: UndecoratedInsertRecord<Tab>,
T18: UndecoratedInsertRecord<Tab>, T19: UndecoratedInsertRecord<Tab>,
T20: UndecoratedInsertRecord<Tab>, T21: UndecoratedInsertRecord<Tab>,
T22: UndecoratedInsertRecord<Tab>, T23: UndecoratedInsertRecord<Tab>,
T24: UndecoratedInsertRecord<Tab>, T25: UndecoratedInsertRecord<Tab>,
T26: UndecoratedInsertRecord<Tab>, T27: UndecoratedInsertRecord<Tab>,
T28: UndecoratedInsertRecord<Tab>, T29: UndecoratedInsertRecord<Tab>,
T30: UndecoratedInsertRecord<Tab>, T31: UndecoratedInsertRecord<Tab> {}
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
__DB> CanInsertInSingleQuery<__DB> for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where __DB: Backend, T: CanInsertInSingleQuery<__DB>,
T1: CanInsertInSingleQuery<__DB>, T2: CanInsertInSingleQuery<__DB>,
T3: CanInsertInSingleQuery<__DB>, T4: CanInsertInSingleQuery<__DB>,
T5: CanInsertInSingleQuery<__DB>, T6: CanInsertInSingleQuery<__DB>,
T7: CanInsertInSingleQuery<__DB>, T8: CanInsertInSingleQuery<__DB>,
T9: CanInsertInSingleQuery<__DB>, T10: CanInsertInSingleQuery<__DB>,
T11: CanInsertInSingleQuery<__DB>, T12: CanInsertInSingleQuery<__DB>,
T13: CanInsertInSingleQuery<__DB>, T14: CanInsertInSingleQuery<__DB>,
T15: CanInsertInSingleQuery<__DB>, T16: CanInsertInSingleQuery<__DB>,
T17: CanInsertInSingleQuery<__DB>, T18: CanInsertInSingleQuery<__DB>,
T19: CanInsertInSingleQuery<__DB>, T20: CanInsertInSingleQuery<__DB>,
T21: CanInsertInSingleQuery<__DB>, T22: CanInsertInSingleQuery<__DB>,
T23: CanInsertInSingleQuery<__DB>, T24: CanInsertInSingleQuery<__DB>,
T25: CanInsertInSingleQuery<__DB>, T26: CanInsertInSingleQuery<__DB>,
T27: CanInsertInSingleQuery<__DB>, T28: CanInsertInSingleQuery<__DB>,
T29: CanInsertInSingleQuery<__DB>, T30: CanInsertInSingleQuery<__DB>,
T31: CanInsertInSingleQuery<__DB> {
fn rows_to_insert(&self) -> Option<usize> {
if true {
match (&self.0.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.1.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.2.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.3.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.4.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.5.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.6.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.7.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.8.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.9.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.10.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.11.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.12.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.13.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.14.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.15.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.16.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.17.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.18.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.19.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.20.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.21.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.22.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.23.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.24.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.25.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.26.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.27.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.28.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.29.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.30.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
if true {
match (&self.31.rows_to_insert(), &Some(1)) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
};
};
Some(1)
}
}
#[doc(hidden)]
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13,
ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25,
ST26, ST27, ST28, ST29, ST30, ST31, Tab> Insertable<Tab> for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where T: Insertable<Tab, Values = ValuesClause<ST, Tab>>,
T1: Insertable<Tab, Values = ValuesClause<ST1, Tab>>,
T2: Insertable<Tab, Values = ValuesClause<ST2, Tab>>,
T3: Insertable<Tab, Values = ValuesClause<ST3, Tab>>,
T4: Insertable<Tab, Values = ValuesClause<ST4, Tab>>,
T5: Insertable<Tab, Values = ValuesClause<ST5, Tab>>,
T6: Insertable<Tab, Values = ValuesClause<ST6, Tab>>,
T7: Insertable<Tab, Values = ValuesClause<ST7, Tab>>,
T8: Insertable<Tab, Values = ValuesClause<ST8, Tab>>,
T9: Insertable<Tab, Values = ValuesClause<ST9, Tab>>,
T10: Insertable<Tab, Values = ValuesClause<ST10, Tab>>,
T11: Insertable<Tab, Values = ValuesClause<ST11, Tab>>,
T12: Insertable<Tab, Values = ValuesClause<ST12, Tab>>,
T13: Insertable<Tab, Values = ValuesClause<ST13, Tab>>,
T14: Insertable<Tab, Values = ValuesClause<ST14, Tab>>,
T15: Insertable<Tab, Values = ValuesClause<ST15, Tab>>,
T16: Insertable<Tab, Values = ValuesClause<ST16, Tab>>,
T17: Insertable<Tab, Values = ValuesClause<ST17, Tab>>,
T18: Insertable<Tab, Values = ValuesClause<ST18, Tab>>,
T19: Insertable<Tab, Values = ValuesClause<ST19, Tab>>,
T20: Insertable<Tab, Values = ValuesClause<ST20, Tab>>,
T21: Insertable<Tab, Values = ValuesClause<ST21, Tab>>,
T22: Insertable<Tab, Values = ValuesClause<ST22, Tab>>,
T23: Insertable<Tab, Values = ValuesClause<ST23, Tab>>,
T24: Insertable<Tab, Values = ValuesClause<ST24, Tab>>,
T25: Insertable<Tab, Values = ValuesClause<ST25, Tab>>,
T26: Insertable<Tab, Values = ValuesClause<ST26, Tab>>,
T27: Insertable<Tab, Values = ValuesClause<ST27, Tab>>,
T28: Insertable<Tab, Values = ValuesClause<ST28, Tab>>,
T29: Insertable<Tab, Values = ValuesClause<ST29, Tab>>,
T30: Insertable<Tab, Values = ValuesClause<ST30, Tab>>,
T31: Insertable<Tab, Values = ValuesClause<ST31, Tab>> {
type Values =
ValuesClause<(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10,
ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21,
ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31), Tab>;
fn values(self) -> Self::Values {
ValuesClause::new((self.0.values().values, self.1.values().values,
self.2.values().values, self.3.values().values,
self.4.values().values, self.5.values().values,
self.6.values().values, self.7.values().values,
self.8.values().values, self.9.values().values,
self.10.values().values, self.11.values().values,
self.12.values().values, self.13.values().values,
self.14.values().values, self.15.values().values,
self.16.values().values, self.17.values().values,
self.18.values().values, self.19.values().values,
self.20.values().values, self.21.values().values,
self.22.values().values, self.23.values().values,
self.24.values().values, self.25.values().values,
self.26.values().values, self.27.values().values,
self.28.values().values, self.29.values().values,
self.30.values().values, self.31.values().values))
}
}
impl<'a, T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
T31, Tab> Insertable<Tab> for
&'a (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
T31) where
(&'a T, &'a T1, &'a T2, &'a T3, &'a T4, &'a T5, &'a T6, &'a T7, &'a T8,
&'a T9, &'a T10, &'a T11, &'a T12, &'a T13, &'a T14, &'a T15, &'a T16,
&'a T17, &'a T18, &'a T19, &'a T20, &'a T21, &'a T22, &'a T23, &'a T24,
&'a T25, &'a T26, &'a T27, &'a T28, &'a T29, &'a T30,
&'a T31): Insertable<Tab> {
type Values =
<(&'a T, &'a T1, &'a T2, &'a T3, &'a T4, &'a T5, &'a T6, &'a T7,
&'a T8, &'a T9, &'a T10, &'a T11, &'a T12, &'a T13, &'a T14, &'a T15,
&'a T16, &'a T17, &'a T18, &'a T19, &'a T20, &'a T21, &'a T22,
&'a T23, &'a T24, &'a T25, &'a T26, &'a T27, &'a T28, &'a T29,
&'a T30, &'a T31) as Insertable<Tab>>::Values;
fn values(self) -> Self::Values {
(&self.0, &self.1, &self.2, &self.3, &self.4, &self.5, &self.6,
&self.7, &self.8, &self.9, &self.10, &self.11, &self.12,
&self.13, &self.14, &self.15, &self.16, &self.17, &self.18,
&self.19, &self.20, &self.21, &self.22, &self.23, &self.24,
&self.25, &self.26, &self.27, &self.28, &self.29, &self.30,
&self.31).values()
}
}
#[allow(unused_assignments)]
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
Tab, __DB> InsertValues<__DB, Tab> for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where Tab: Table, __DB: Backend, T: InsertValues<__DB, Tab>,
T1: InsertValues<__DB, Tab>, T2: InsertValues<__DB, Tab>,
T3: InsertValues<__DB, Tab>, T4: InsertValues<__DB, Tab>,
T5: InsertValues<__DB, Tab>, T6: InsertValues<__DB, Tab>,
T7: InsertValues<__DB, Tab>, T8: InsertValues<__DB, Tab>,
T9: InsertValues<__DB, Tab>, T10: InsertValues<__DB, Tab>,
T11: InsertValues<__DB, Tab>, T12: InsertValues<__DB, Tab>,
T13: InsertValues<__DB, Tab>, T14: InsertValues<__DB, Tab>,
T15: InsertValues<__DB, Tab>, T16: InsertValues<__DB, Tab>,
T17: InsertValues<__DB, Tab>, T18: InsertValues<__DB, Tab>,
T19: InsertValues<__DB, Tab>, T20: InsertValues<__DB, Tab>,
T21: InsertValues<__DB, Tab>, T22: InsertValues<__DB, Tab>,
T23: InsertValues<__DB, Tab>, T24: InsertValues<__DB, Tab>,
T25: InsertValues<__DB, Tab>, T26: InsertValues<__DB, Tab>,
T27: InsertValues<__DB, Tab>, T28: InsertValues<__DB, Tab>,
T29: InsertValues<__DB, Tab>, T30: InsertValues<__DB, Tab>,
T31: InsertValues<__DB, Tab> {
fn column_names(&self, mut out: AstPass<'_, '_, __DB>)
-> QueryResult<()> {
let mut needs_comma = false;
let noop_element = self.0.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.0.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.1.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.1.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.2.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.2.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.3.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.3.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.4.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.4.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.5.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.5.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.6.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.6.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.7.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.7.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.8.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.8.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.9.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.9.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.10.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.10.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.11.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.11.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.12.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.12.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.13.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.13.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.14.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.14.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.15.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.15.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.16.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.16.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.17.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.17.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.18.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.18.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.19.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.19.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.20.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.20.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.21.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.21.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.22.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.22.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.23.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.23.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.24.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.24.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.25.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.25.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.26.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.26.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.27.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.27.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.28.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.28.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.29.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.29.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.30.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.30.column_names(out.reborrow())?;
needs_comma = true;
}
let noop_element = self.31.is_noop(out.backend())?;
if !noop_element {
if needs_comma { out.push_sql(", "); }
self.31.column_names(out.reborrow())?;
needs_comma = true;
}
Ok(())
}
}
impl<__T, ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24,
ST25, ST26, ST27, ST28, ST29, ST30, ST31, Tab> Insertable<Tab> for
InsertableOptionHelper<__T,
(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13,
ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25,
ST26, ST27, ST28, ST29, ST30, ST31)> where __T: Insertable<Tab>,
__T::Values: Default {
type Values = __T::Values;
fn values(self) -> Self::Values {
self.0.map(|v| v.values()).unwrap_or_default()
}
}
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
QS> SelectableExpression<QS> for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where T: SelectableExpression<QS>, T1: SelectableExpression<QS>,
T2: SelectableExpression<QS>, T3: SelectableExpression<QS>,
T4: SelectableExpression<QS>, T5: SelectableExpression<QS>,
T6: SelectableExpression<QS>, T7: SelectableExpression<QS>,
T8: SelectableExpression<QS>, T9: SelectableExpression<QS>,
T10: SelectableExpression<QS>, T11: SelectableExpression<QS>,
T12: SelectableExpression<QS>, T13: SelectableExpression<QS>,
T14: SelectableExpression<QS>, T15: SelectableExpression<QS>,
T16: SelectableExpression<QS>, T17: SelectableExpression<QS>,
T18: SelectableExpression<QS>, T19: SelectableExpression<QS>,
T20: SelectableExpression<QS>, T21: SelectableExpression<QS>,
T22: SelectableExpression<QS>, T23: SelectableExpression<QS>,
T24: SelectableExpression<QS>, T25: SelectableExpression<QS>,
T26: SelectableExpression<QS>, T27: SelectableExpression<QS>,
T28: SelectableExpression<QS>, T29: SelectableExpression<QS>,
T30: SelectableExpression<QS>, T31: SelectableExpression<QS>,
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
T31): AppearsOnTable<QS> {}
#[doc(hidden)]
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
QS> AppearsOnTable<QS> for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where T: AppearsOnTable<QS>, T1: AppearsOnTable<QS>,
T2: AppearsOnTable<QS>, T3: AppearsOnTable<QS>, T4: AppearsOnTable<QS>,
T5: AppearsOnTable<QS>, T6: AppearsOnTable<QS>, T7: AppearsOnTable<QS>,
T8: AppearsOnTable<QS>, T9: AppearsOnTable<QS>, T10: AppearsOnTable<QS>,
T11: AppearsOnTable<QS>, T12: AppearsOnTable<QS>, T13: AppearsOnTable<QS>,
T14: AppearsOnTable<QS>, T15: AppearsOnTable<QS>, T16: AppearsOnTable<QS>,
T17: AppearsOnTable<QS>, T18: AppearsOnTable<QS>, T19: AppearsOnTable<QS>,
T20: AppearsOnTable<QS>, T21: AppearsOnTable<QS>, T22: AppearsOnTable<QS>,
T23: AppearsOnTable<QS>, T24: AppearsOnTable<QS>, T25: AppearsOnTable<QS>,
T26: AppearsOnTable<QS>, T27: AppearsOnTable<QS>, T28: AppearsOnTable<QS>,
T29: AppearsOnTable<QS>, T30: AppearsOnTable<QS>, T31: AppearsOnTable<QS>,
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
T31): Expression {
}
#[doc(hidden)]
impl<Target, T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
T30, T31> AsChangeset for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where T: AsChangeset<Target = Target>, T1: AsChangeset<Target = Target>,
T2: AsChangeset<Target = Target>, T3: AsChangeset<Target = Target>,
T4: AsChangeset<Target = Target>, T5: AsChangeset<Target = Target>,
T6: AsChangeset<Target = Target>, T7: AsChangeset<Target = Target>,
T8: AsChangeset<Target = Target>, T9: AsChangeset<Target = Target>,
T10: AsChangeset<Target = Target>, T11: AsChangeset<Target = Target>,
T12: AsChangeset<Target = Target>, T13: AsChangeset<Target = Target>,
T14: AsChangeset<Target = Target>, T15: AsChangeset<Target = Target>,
T16: AsChangeset<Target = Target>, T17: AsChangeset<Target = Target>,
T18: AsChangeset<Target = Target>, T19: AsChangeset<Target = Target>,
T20: AsChangeset<Target = Target>, T21: AsChangeset<Target = Target>,
T22: AsChangeset<Target = Target>, T23: AsChangeset<Target = Target>,
T24: AsChangeset<Target = Target>, T25: AsChangeset<Target = Target>,
T26: AsChangeset<Target = Target>, T27: AsChangeset<Target = Target>,
T28: AsChangeset<Target = Target>, T29: AsChangeset<Target = Target>,
T30: AsChangeset<Target = Target>, T31: AsChangeset<Target = Target>,
Target: QuerySource {
type Target = Target;
type Changeset =
(T::Changeset, T1::Changeset, T2::Changeset, T3::Changeset,
T4::Changeset, T5::Changeset, T6::Changeset, T7::Changeset,
T8::Changeset, T9::Changeset, T10::Changeset, T11::Changeset,
T12::Changeset, T13::Changeset, T14::Changeset, T15::Changeset,
T16::Changeset, T17::Changeset, T18::Changeset, T19::Changeset,
T20::Changeset, T21::Changeset, T22::Changeset, T23::Changeset,
T24::Changeset, T25::Changeset, T26::Changeset, T27::Changeset,
T28::Changeset, T29::Changeset, T30::Changeset, T31::Changeset);
fn as_changeset(self) -> Self::Changeset {
(self.0.as_changeset(), self.1.as_changeset(), self.2.as_changeset(),
self.3.as_changeset(), self.4.as_changeset(),
self.5.as_changeset(), self.6.as_changeset(),
self.7.as_changeset(), self.8.as_changeset(),
self.9.as_changeset(), self.10.as_changeset(),
self.11.as_changeset(), self.12.as_changeset(),
self.13.as_changeset(), self.14.as_changeset(),
self.15.as_changeset(), self.16.as_changeset(),
self.17.as_changeset(), self.18.as_changeset(),
self.19.as_changeset(), self.20.as_changeset(),
self.21.as_changeset(), self.22.as_changeset(),
self.23.as_changeset(), self.24.as_changeset(),
self.25.as_changeset(), self.26.as_changeset(),
self.27.as_changeset(), self.28.as_changeset(),
self.29.as_changeset(), self.30.as_changeset(),
self.31.as_changeset())
}
}
#[doc(hidden)]
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
Parent> BelongsTo<Parent> for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where T: BelongsTo<Parent> {
type ForeignKey = T::ForeignKey;
type ForeignKeyColumn = T::ForeignKeyColumn;
fn foreign_key(&self) -> Option<&Self::ForeignKey> {
self.0.foreign_key()
}
fn foreign_key_column() -> Self::ForeignKeyColumn {
T::foreign_key_column()
}
}
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
Next> TupleAppend<Next> for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
{
type Output =
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
T30, T31, Next);
#[allow(non_snake_case)]
fn tuple_append(self, next: Next) -> Self::Output {
let (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
T27, T28, T29, T30, T31) = self;
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
T29, T30, T31, next)
}
}
#[doc(hidden)]
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31>
SqlType for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where T: SqlType, T1: SqlType, T2: SqlType, T3: SqlType, T4: SqlType,
T5: SqlType, T6: SqlType, T7: SqlType, T8: SqlType, T9: SqlType,
T10: SqlType, T11: SqlType, T12: SqlType, T13: SqlType, T14: SqlType,
T15: SqlType, T16: SqlType, T17: SqlType, T18: SqlType, T19: SqlType,
T20: SqlType, T21: SqlType, T22: SqlType, T23: SqlType, T24: SqlType,
T25: SqlType, T26: SqlType, T27: SqlType, T28: SqlType, T29: SqlType,
T30: SqlType, T31: SqlType, T1::IsNull: OneIsNullable<T::IsNull>,
T2::IsNull: OneIsNullable<<T1::IsNull as OneIsNullable<T::IsNull>>::Out>,
T3::IsNull: OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as OneIsNullable<T::IsNull>>::Out>>::Out>,
T4::IsNull: OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>,
T5::IsNull: OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>,
T6::IsNull: OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>,
T7::IsNull: OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T8::IsNull: OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T9::IsNull: OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T10::IsNull: OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T11::IsNull: OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T12::IsNull: OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T13::IsNull: OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T14::IsNull: OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T15::IsNull: OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T16::IsNull: OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T17::IsNull: OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T18::IsNull: OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T19::IsNull: OneIsNullable<<T18::IsNull as
OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T20::IsNull: OneIsNullable<<T19::IsNull as
OneIsNullable<<T18::IsNull as
OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T21::IsNull: OneIsNullable<<T20::IsNull as
OneIsNullable<<T19::IsNull as
OneIsNullable<<T18::IsNull as
OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T22::IsNull: OneIsNullable<<T21::IsNull as
OneIsNullable<<T20::IsNull as
OneIsNullable<<T19::IsNull as
OneIsNullable<<T18::IsNull as
OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T23::IsNull: OneIsNullable<<T22::IsNull as
OneIsNullable<<T21::IsNull as
OneIsNullable<<T20::IsNull as
OneIsNullable<<T19::IsNull as
OneIsNullable<<T18::IsNull as
OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T24::IsNull: OneIsNullable<<T23::IsNull as
OneIsNullable<<T22::IsNull as
OneIsNullable<<T21::IsNull as
OneIsNullable<<T20::IsNull as
OneIsNullable<<T19::IsNull as
OneIsNullable<<T18::IsNull as
OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T25::IsNull: OneIsNullable<<T24::IsNull as
OneIsNullable<<T23::IsNull as
OneIsNullable<<T22::IsNull as
OneIsNullable<<T21::IsNull as
OneIsNullable<<T20::IsNull as
OneIsNullable<<T19::IsNull as
OneIsNullable<<T18::IsNull as
OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T26::IsNull: OneIsNullable<<T25::IsNull as
OneIsNullable<<T24::IsNull as
OneIsNullable<<T23::IsNull as
OneIsNullable<<T22::IsNull as
OneIsNullable<<T21::IsNull as
OneIsNullable<<T20::IsNull as
OneIsNullable<<T19::IsNull as
OneIsNullable<<T18::IsNull as
OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T27::IsNull: OneIsNullable<<T26::IsNull as
OneIsNullable<<T25::IsNull as
OneIsNullable<<T24::IsNull as
OneIsNullable<<T23::IsNull as
OneIsNullable<<T22::IsNull as
OneIsNullable<<T21::IsNull as
OneIsNullable<<T20::IsNull as
OneIsNullable<<T19::IsNull as
OneIsNullable<<T18::IsNull as
OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T28::IsNull: OneIsNullable<<T27::IsNull as
OneIsNullable<<T26::IsNull as
OneIsNullable<<T25::IsNull as
OneIsNullable<<T24::IsNull as
OneIsNullable<<T23::IsNull as
OneIsNullable<<T22::IsNull as
OneIsNullable<<T21::IsNull as
OneIsNullable<<T20::IsNull as
OneIsNullable<<T19::IsNull as
OneIsNullable<<T18::IsNull as
OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T29::IsNull: OneIsNullable<<T28::IsNull as
OneIsNullable<<T27::IsNull as
OneIsNullable<<T26::IsNull as
OneIsNullable<<T25::IsNull as
OneIsNullable<<T24::IsNull as
OneIsNullable<<T23::IsNull as
OneIsNullable<<T22::IsNull as
OneIsNullable<<T21::IsNull as
OneIsNullable<<T20::IsNull as
OneIsNullable<<T19::IsNull as
OneIsNullable<<T18::IsNull as
OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T30::IsNull: OneIsNullable<<T29::IsNull as
OneIsNullable<<T28::IsNull as
OneIsNullable<<T27::IsNull as
OneIsNullable<<T26::IsNull as
OneIsNullable<<T25::IsNull as
OneIsNullable<<T24::IsNull as
OneIsNullable<<T23::IsNull as
OneIsNullable<<T22::IsNull as
OneIsNullable<<T21::IsNull as
OneIsNullable<<T20::IsNull as
OneIsNullable<<T19::IsNull as
OneIsNullable<<T18::IsNull as
OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>,
T31::IsNull: OneIsNullable<<T30::IsNull as
OneIsNullable<<T29::IsNull as
OneIsNullable<<T28::IsNull as
OneIsNullable<<T27::IsNull as
OneIsNullable<<T26::IsNull as
OneIsNullable<<T25::IsNull as
OneIsNullable<<T24::IsNull as
OneIsNullable<<T23::IsNull as
OneIsNullable<<T22::IsNull as
OneIsNullable<<T21::IsNull as
OneIsNullable<<T20::IsNull as
OneIsNullable<<T19::IsNull as
OneIsNullable<<T18::IsNull as
OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>
{
type IsNull =
<T31::IsNull as
OneIsNullable<<T30::IsNull as
OneIsNullable<<T29::IsNull as
OneIsNullable<<T28::IsNull as
OneIsNullable<<T27::IsNull as
OneIsNullable<<T26::IsNull as
OneIsNullable<<T25::IsNull as
OneIsNullable<<T24::IsNull as
OneIsNullable<<T23::IsNull as
OneIsNullable<<T22::IsNull as
OneIsNullable<<T21::IsNull as
OneIsNullable<<T20::IsNull as
OneIsNullable<<T19::IsNull as
OneIsNullable<<T18::IsNull as
OneIsNullable<<T17::IsNull as
OneIsNullable<<T16::IsNull as
OneIsNullable<<T15::IsNull as
OneIsNullable<<T14::IsNull as
OneIsNullable<<T13::IsNull as
OneIsNullable<<T12::IsNull as
OneIsNullable<<T11::IsNull as
OneIsNullable<<T10::IsNull as
OneIsNullable<<T9::IsNull as
OneIsNullable<<T8::IsNull as
OneIsNullable<<T7::IsNull as
OneIsNullable<<T6::IsNull as
OneIsNullable<<T5::IsNull as
OneIsNullable<<T4::IsNull as
OneIsNullable<<T3::IsNull as
OneIsNullable<<T2::IsNull as
OneIsNullable<<T1::IsNull as
OneIsNullable<T::IsNull>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out>>::Out;
}
#[doc(hidden)]
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
__DB, ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24,
ST25, ST26, ST27, ST28, ST29, ST30, ST31>
Queryable<(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11,
ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23,
ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31), __DB> for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where __DB: Backend,
Self: FromStaticSqlRow<(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9,
ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21,
ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31), __DB> {
type Row = Self;
fn build(row: Self::Row) -> deserialize::Result<Self> { Ok(row) }
}
impl<__T, ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24,
ST25, ST26, ST27, ST28, ST29, ST30, ST31, __DB>
FromStaticSqlRow<Nullable<(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8,
ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20,
ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31)>, __DB>
for Option<__T> where __DB: Backend,
(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13,
ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25,
ST26, ST27, ST28, ST29, ST30, ST31): SqlType,
__T: FromSqlRow<(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10,
ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22,
ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31), __DB> {
#[allow(non_snake_case, unused_variables, unused_mut)]
fn build_from_row<'a>(row: &impl Row<'a, __DB>)
-> deserialize::Result<Self> {
match <__T as
FromSqlRow<(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9,
ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19,
ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29,
ST30, ST31), __DB>>::build_from_row(row) {
Ok(v) => Ok(Some(v)),
Err(e) if e.is::<crate::result::UnexpectedNullError>() =>
Ok(None),
Err(e) => Err(e),
}
}
}
impl<__T, __DB, ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11,
ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23,
ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31>
Queryable<Nullable<(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10,
ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22,
ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31)>, __DB> for
Option<__T> where __DB: Backend,
Self: FromStaticSqlRow<Nullable<(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7,
ST8, ST9, ST10, ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19,
ST20, ST21, ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31)>,
__DB>,
(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13,
ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25,
ST26, ST27, ST28, ST29, ST30, ST31): SqlType {
type Row = Self;
fn build(row: Self::Row) -> deserialize::Result<Self> { Ok(row) }
}
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31>
TupleSize for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where T: TupleSize, T1: TupleSize, T2: TupleSize, T3: TupleSize,
T4: TupleSize, T5: TupleSize, T6: TupleSize, T7: TupleSize, T8: TupleSize,
T9: TupleSize, T10: TupleSize, T11: TupleSize, T12: TupleSize,
T13: TupleSize, T14: TupleSize, T15: TupleSize, T16: TupleSize,
T17: TupleSize, T18: TupleSize, T19: TupleSize, T20: TupleSize,
T21: TupleSize, T22: TupleSize, T23: TupleSize, T24: TupleSize,
T25: TupleSize, T26: TupleSize, T27: TupleSize, T28: TupleSize,
T29: TupleSize, T30: TupleSize, T31: TupleSize {
const SIZE: usize =
T::SIZE + T1::SIZE + T2::SIZE + T3::SIZE + T4::SIZE + T5::SIZE +
T6::SIZE + T7::SIZE + T8::SIZE + T9::SIZE + T10::SIZE +
T11::SIZE + T12::SIZE + T13::SIZE + T14::SIZE + T15::SIZE +
T16::SIZE + T17::SIZE + T18::SIZE + T19::SIZE + T20::SIZE +
T21::SIZE + T22::SIZE + T23::SIZE + T24::SIZE + T25::SIZE +
T26::SIZE + T27::SIZE + T28::SIZE + T29::SIZE + T30::SIZE +
T31::SIZE + 0;
}
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31>
TupleSize for
Nullable<(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
T30, T31)> where T: TupleSize, T1: TupleSize, T2: TupleSize,
T3: TupleSize, T4: TupleSize, T5: TupleSize, T6: TupleSize, T7: TupleSize,
T8: TupleSize, T9: TupleSize, T10: TupleSize, T11: TupleSize,
T12: TupleSize, T13: TupleSize, T14: TupleSize, T15: TupleSize,
T16: TupleSize, T17: TupleSize, T18: TupleSize, T19: TupleSize,
T20: TupleSize, T21: TupleSize, T22: TupleSize, T23: TupleSize,
T24: TupleSize, T25: TupleSize, T26: TupleSize, T27: TupleSize,
T28: TupleSize, T29: TupleSize, T30: TupleSize, T31: TupleSize,
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
T31): SqlType {
const SIZE: usize =
T::SIZE + T1::SIZE + T2::SIZE + T3::SIZE + T4::SIZE + T5::SIZE +
T6::SIZE + T7::SIZE + T8::SIZE + T9::SIZE + T10::SIZE +
T11::SIZE + T12::SIZE + T13::SIZE + T14::SIZE + T15::SIZE +
T16::SIZE + T17::SIZE + T18::SIZE + T19::SIZE + T20::SIZE +
T21::SIZE + T22::SIZE + T23::SIZE + T24::SIZE + T25::SIZE +
T26::SIZE + T27::SIZE + T28::SIZE + T29::SIZE + T30::SIZE +
T31::SIZE + 0;
}
#[doc(hidden)]
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
__DB>
QueryMetadata<(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
T29, T30, T31)> for __DB where __DB: Backend, __DB: QueryMetadata<T>,
__DB: QueryMetadata<T1>, __DB: QueryMetadata<T2>, __DB: QueryMetadata<T3>,
__DB: QueryMetadata<T4>, __DB: QueryMetadata<T5>, __DB: QueryMetadata<T6>,
__DB: QueryMetadata<T7>, __DB: QueryMetadata<T8>, __DB: QueryMetadata<T9>,
__DB: QueryMetadata<T10>, __DB: QueryMetadata<T11>,
__DB: QueryMetadata<T12>, __DB: QueryMetadata<T13>,
__DB: QueryMetadata<T14>, __DB: QueryMetadata<T15>,
__DB: QueryMetadata<T16>, __DB: QueryMetadata<T17>,
__DB: QueryMetadata<T18>, __DB: QueryMetadata<T19>,
__DB: QueryMetadata<T20>, __DB: QueryMetadata<T21>,
__DB: QueryMetadata<T22>, __DB: QueryMetadata<T23>,
__DB: QueryMetadata<T24>, __DB: QueryMetadata<T25>,
__DB: QueryMetadata<T26>, __DB: QueryMetadata<T27>,
__DB: QueryMetadata<T28>, __DB: QueryMetadata<T29>,
__DB: QueryMetadata<T30>, __DB: QueryMetadata<T31> {
fn row_metadata(lookup: &mut Self::MetadataLookup,
row: &mut Vec<Option<__DB::TypeMetadata>>) {
<__DB as QueryMetadata<T>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T1>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T2>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T3>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T4>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T5>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T6>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T7>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T8>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T9>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T10>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T11>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T12>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T13>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T14>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T15>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T16>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T17>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T18>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T19>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T20>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T21>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T22>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T23>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T24>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T25>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T26>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T27>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T28>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T29>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T30>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T31>>::row_metadata(lookup, row);
}
}
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
__DB>
QueryMetadata<Nullable<(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
T27, T28, T29, T30, T31)>> for __DB where __DB: Backend,
__DB: QueryMetadata<T>, __DB: QueryMetadata<T1>, __DB: QueryMetadata<T2>,
__DB: QueryMetadata<T3>, __DB: QueryMetadata<T4>, __DB: QueryMetadata<T5>,
__DB: QueryMetadata<T6>, __DB: QueryMetadata<T7>, __DB: QueryMetadata<T8>,
__DB: QueryMetadata<T9>, __DB: QueryMetadata<T10>,
__DB: QueryMetadata<T11>, __DB: QueryMetadata<T12>,
__DB: QueryMetadata<T13>, __DB: QueryMetadata<T14>,
__DB: QueryMetadata<T15>, __DB: QueryMetadata<T16>,
__DB: QueryMetadata<T17>, __DB: QueryMetadata<T18>,
__DB: QueryMetadata<T19>, __DB: QueryMetadata<T20>,
__DB: QueryMetadata<T21>, __DB: QueryMetadata<T22>,
__DB: QueryMetadata<T23>, __DB: QueryMetadata<T24>,
__DB: QueryMetadata<T25>, __DB: QueryMetadata<T26>,
__DB: QueryMetadata<T27>, __DB: QueryMetadata<T28>,
__DB: QueryMetadata<T29>, __DB: QueryMetadata<T30>,
__DB: QueryMetadata<T31> {
fn row_metadata(lookup: &mut Self::MetadataLookup,
row: &mut Vec<Option<__DB::TypeMetadata>>) {
<__DB as QueryMetadata<T>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T1>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T2>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T3>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T4>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T5>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T6>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T7>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T8>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T9>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T10>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T11>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T12>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T13>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T14>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T15>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T16>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T17>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T18>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T19>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T20>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T21>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T22>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T23>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T24>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T25>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T26>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T27>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T28>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T29>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T30>>::row_metadata(lookup, row);
<__DB as QueryMetadata<T31>>::row_metadata(lookup, row);
}
}
#[doc(hidden)]
impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31,
__DB> deserialize::QueryableByName<__DB> for
(T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
where __DB: Backend, T: deserialize::QueryableByName<__DB>,
T1: deserialize::QueryableByName<__DB>,
T2: deserialize::QueryableByName<__DB>,
T3: deserialize::QueryableByName<__DB>,
T4: deserialize::QueryableByName<__DB>,
T5: deserialize::QueryableByName<__DB>,
T6: deserialize::QueryableByName<__DB>,
T7: deserialize::QueryableByName<__DB>,
T8: deserialize::QueryableByName<__DB>,
T9: deserialize::QueryableByName<__DB>,
T10: deserialize::QueryableByName<__DB>,
T11: deserialize::QueryableByName<__DB>,
T12: deserialize::QueryableByName<__DB>,
T13: deserialize::QueryableByName<__DB>,
T14: deserialize::QueryableByName<__DB>,
T15: deserialize::QueryableByName<__DB>,
T16: deserialize::QueryableByName<__DB>,
T17: deserialize::QueryableByName<__DB>,
T18: deserialize::QueryableByName<__DB>,
T19: deserialize::QueryableByName<__DB>,
T20: deserialize::QueryableByName<__DB>,
T21: deserialize::QueryableByName<__DB>,
T22: deserialize::QueryableByName<__DB>,
T23: deserialize::QueryableByName<__DB>,
T24: deserialize::QueryableByName<__DB>,
T25: deserialize::QueryableByName<__DB>,
T26: deserialize::QueryableByName<__DB>,
T27: deserialize::QueryableByName<__DB>,
T28: deserialize::QueryableByName<__DB>,
T29: deserialize::QueryableByName<__DB>,
T30: deserialize::QueryableByName<__DB>,
T31: deserialize::QueryableByName<__DB> {
fn build<'a>(row: &impl NamedRow<'a, __DB>) -> deserialize::Result<Self> {
Ok((<T as deserialize::QueryableByName<__DB>>::build(row)?,
<T1 as deserialize::QueryableByName<__DB>>::build(row)?,
<T2 as deserialize::QueryableByName<__DB>>::build(row)?,
<T3 as deserialize::QueryableByName<__DB>>::build(row)?,
<T4 as deserialize::QueryableByName<__DB>>::build(row)?,
<T5 as deserialize::QueryableByName<__DB>>::build(row)?,
<T6 as deserialize::QueryableByName<__DB>>::build(row)?,
<T7 as deserialize::QueryableByName<__DB>>::build(row)?,
<T8 as deserialize::QueryableByName<__DB>>::build(row)?,
<T9 as deserialize::QueryableByName<__DB>>::build(row)?,
<T10 as deserialize::QueryableByName<__DB>>::build(row)?,
<T11 as deserialize::QueryableByName<__DB>>::build(row)?,
<T12 as deserialize::QueryableByName<__DB>>::build(row)?,
<T13 as deserialize::QueryableByName<__DB>>::build(row)?,
<T14 as deserialize::QueryableByName<__DB>>::build(row)?,
<T15 as deserialize::QueryableByName<__DB>>::build(row)?,
<T16 as deserialize::QueryableByName<__DB>>::build(row)?,
<T17 as deserialize::QueryableByName<__DB>>::build(row)?,
<T18 as deserialize::QueryableByName<__DB>>::build(row)?,
<T19 as deserialize::QueryableByName<__DB>>::build(row)?,
<T20 as deserialize::QueryableByName<__DB>>::build(row)?,
<T21 as deserialize::QueryableByName<__DB>>::build(row)?,
<T22 as deserialize::QueryableByName<__DB>>::build(row)?,
<T23 as deserialize::QueryableByName<__DB>>::build(row)?,
<T24 as deserialize::QueryableByName<__DB>>::build(row)?,
<T25 as deserialize::QueryableByName<__DB>>::build(row)?,
<T26 as deserialize::QueryableByName<__DB>>::build(row)?,
<T27 as deserialize::QueryableByName<__DB>>::build(row)?,
<T28 as deserialize::QueryableByName<__DB>>::build(row)?,
<T29 as deserialize::QueryableByName<__DB>>::build(row)?,
<T30 as deserialize::QueryableByName<__DB>>::build(row)?,
<T31 as deserialize::QueryableByName<__DB>>::build(row)?))
}
}
#[diagnostic::do_not_recommend]
impl<__T, ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24,
ST25, ST26, ST27, ST28, ST29, ST30, ST31, __DB> CompatibleType<__T, __DB>
for
(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13,
ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25,
ST26, ST27, ST28, ST29, ST30, ST31) where __DB: Backend,
__T: FromSqlRow<(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10,
ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22,
ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31), __DB> {
type SqlType = Self;
}
impl<__T, ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24,
ST25, ST26, ST27, ST28, ST29, ST30, ST31, __DB>
CompatibleType<Option<__T>, __DB> for
Nullable<(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11,
ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23,
ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31)> where __DB: Backend,
(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13,
ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25,
ST26, ST27, ST28, ST29, ST30, ST31): CompatibleType<__T, __DB> {
type SqlType =
Nullable<<(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10,
ST11, ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21,
ST22, ST23, ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31) as
CompatibleType<__T, __DB>>::SqlType>;
}
impl<ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13,
ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25,
ST26, ST27, ST28, ST29, ST30, ST31> SqlTypeOrSelectable for
(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13,
ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25,
ST26, ST27, ST28, ST29, ST30, ST31) where ST: SqlTypeOrSelectable,
ST1: SqlTypeOrSelectable, ST2: SqlTypeOrSelectable,
ST3: SqlTypeOrSelectable, ST4: SqlTypeOrSelectable,
ST5: SqlTypeOrSelectable, ST6: SqlTypeOrSelectable,
ST7: SqlTypeOrSelectable, ST8: SqlTypeOrSelectable,
ST9: SqlTypeOrSelectable, ST10: SqlTypeOrSelectable,
ST11: SqlTypeOrSelectable, ST12: SqlTypeOrSelectable,
ST13: SqlTypeOrSelectable, ST14: SqlTypeOrSelectable,
ST15: SqlTypeOrSelectable, ST16: SqlTypeOrSelectable,
ST17: SqlTypeOrSelectable, ST18: SqlTypeOrSelectable,
ST19: SqlTypeOrSelectable, ST20: SqlTypeOrSelectable,
ST21: SqlTypeOrSelectable, ST22: SqlTypeOrSelectable,
ST23: SqlTypeOrSelectable, ST24: SqlTypeOrSelectable,
ST25: SqlTypeOrSelectable, ST26: SqlTypeOrSelectable,
ST27: SqlTypeOrSelectable, ST28: SqlTypeOrSelectable,
ST29: SqlTypeOrSelectable, ST30: SqlTypeOrSelectable,
ST31: SqlTypeOrSelectable {}
impl<ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13,
ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25,
ST26, ST27, ST28, ST29, ST30, ST31> SqlTypeOrSelectable for
Nullable<(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11,
ST12, ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23,
ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31)> where
(ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12, ST13,
ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23, ST24, ST25,
ST26, ST27, ST28, ST29, ST30, ST31): SqlTypeOrSelectable {}diesel_derives::__diesel_for_each_tuple!(tuple_impls);