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