1use diesel_table_macro_syntax::{ColumnDef, TableDecl};
2use proc_macro2::{Span, TokenStream};
3use syn::{Ident, parse_quote};
4
5const DEFAULT_PRIMARY_KEY_NAME: &str = "id";
6
7fn cfg_attributes(attrs: &[syn::Attribute]) -> Vec<&syn::Attribute> {
8 attrs
9 .iter()
10 .filter(|attr| attr.path().is_ident("cfg"))
11 .collect()
12}
13
14struct CfgGroup<'a> {
15 cfg_attrs: Vec<&'a syn::Attribute>,
16 columns: Vec<&'a ColumnDef>,
17}
18
19fn cfg_combinations(n: usize) -> impl Iterator<Item = Vec<bool>> {
22 (0..1usize << n).map(move |mask| (0..n).map(|i| (mask >> i) & 1 == 1).collect())
23}
24
25fn generate_combined_cfg_condition(groups: &[CfgGroup<'_>], enabled_flags: &[bool]) -> TokenStream {
26 if true {
{
match (&groups.len(), &enabled_flags.len()) {
(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);
}
}
}
};
};debug_assert_eq!(groups.len(), enabled_flags.len());
27
28 if groups.is_empty() {
29 return TokenStream::new();
30 }
31
32 let mut conditions: Vec<TokenStream> = Vec::new();
33
34 for (group, &is_enabled) in groups.iter().zip(enabled_flags) {
35 let group_conditions: Vec<&TokenStream> = group
36 .cfg_attrs
37 .iter()
38 .filter_map(|attr| match &attr.meta {
39 syn::Meta::List(list) => Some(&list.tokens),
40 _ => None,
41 })
42 .collect();
43
44 if group_conditions.is_empty() {
45 continue;
46 }
47
48 if is_enabled {
49 conditions.extend(
50 group_conditions
51 .iter()
52 .map(|tokens| {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&tokens, &mut _s);
_s
}quote::quote! { #tokens }),
53 );
54 } else if let [tokens] = group_conditions[..] {
55 conditions.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "not");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&tokens, &mut _s);
_s
});
_s
}quote::quote! { not(#tokens) });
56 } else {
57 conditions.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "not");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "all");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut group_conditions, i) =
group_conditions.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let group_conditions =
match group_conditions.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&group_conditions, &mut _s);
}
}
_s
});
_s
});
_s
}quote::quote! { not(all(#(#group_conditions),*)) });
60 }
61 }
62
63 if conditions.is_empty() {
64 TokenStream::new()
65 } else {
66 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "all");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut conditions, i) = conditions.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let conditions =
match conditions.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&conditions, &mut _s);
}
}
_s
});
_s
});
_s
});
_s
}quote::quote! {
67 #[cfg(all(#(#conditions),*))]
68 }
69 }
70}
71
72struct AggregateTokens {
73 all_columns_const: TokenStream,
74 all_columns_type_variants: TokenStream,
75}
76
77fn all_columns_tuple_expr<'a>(columns: &'a [&'a ColumnDef]) -> TokenStream {
78 let fields = columns.iter().map(|col| {
79 let attrs = cfg_attributes(&col.meta);
80 let name = &col.column_name;
81 {
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut attrs, i) = attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let attrs =
match attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&attrs, &mut _s);
}
}
::quote::ToTokens::to_tokens(&name, &mut _s);
::quote::__private::push_comma(&mut _s);
_s
}quote::quote! { #(#attrs)* #name, }
82 });
83 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut fields, i) = fields.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let fields =
match fields.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&fields, &mut _s);
}
}
_s
});
_s
}quote::quote! { (#(#fields)*) }
84}
85
86fn generate_aggregate_variants<'a>(
92 columns: &'a [&'a ColumnDef],
93 cfg_groups: &'a [CfgGroup<'a>],
94 kind_name: &str,
95) -> AggregateTokens {
96 let group_indices: Vec<Option<usize>> = columns
97 .iter()
98 .map(|col| {
99 let attrs = cfg_attributes(&col.meta);
100 if attrs.is_empty() {
101 return None;
102 }
103 let key = cfg_group_key(&attrs);
104 cfg_groups
105 .iter()
106 .position(|group| cfg_group_key(&group.cfg_attrs) == key)
107 })
108 .collect();
109
110 let mut all_columns_type_variants = Vec::new();
111
112 for flags in cfg_combinations(cfg_groups.len()) {
113 let cfg_condition = generate_combined_cfg_condition(cfg_groups, &flags);
114
115 let column_names: Vec<&Ident> = columns
116 .iter()
117 .zip(&group_indices)
118 .filter_map(|(col, group_index)| match group_index {
119 None => Some(&col.column_name),
120 Some(index) if flags[*index] => Some(&col.column_name),
121 Some(_) => None,
122 })
123 .collect();
124
125 all_columns_type_variants.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&cfg_condition, &mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "allow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"non_camel_case_types");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "dead_code");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"The tuple of all column structs on this \"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&kind_name, &mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "AllColumns");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut column_names, i) = column_names.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let column_names =
match column_names.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&column_names, &mut _s);
::quote::__private::push_comma(&mut _s);
}
}
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote::quote! {
126 #cfg_condition
127 #[allow(non_camel_case_types, dead_code)]
128 #[doc = concat!("The tuple of all column structs on this ", #kind_name)]
129 pub type AllColumns = (#(#column_names,)*);
130 });
131 }
132
133 let tuple_expr = all_columns_tuple_expr(columns);
134
135 let all_columns_const = {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "allow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"non_upper_case_globals");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "dead_code");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"A tuple of all of the columns on this\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&kind_name, &mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_ident(&mut _s, "all_columns");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "AllColumns");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&tuple_expr, &mut _s);
::quote::__private::push_semi(&mut _s);
_s
}quote::quote! {
136 #[allow(non_upper_case_globals, dead_code)]
137 #[doc = concat!("A tuple of all of the columns on this", #kind_name)]
138 pub const all_columns: AllColumns = #tuple_expr;
139 };
140
141 AggregateTokens {
142 all_columns_const,
143 all_columns_type_variants: {
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut all_columns_type_variants, i) =
all_columns_type_variants.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let all_columns_type_variants =
match all_columns_type_variants.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&all_columns_type_variants, &mut _s);
}
}
_s
}quote::quote! { #(#all_columns_type_variants)* },
144 }
145}
146
147fn generate_kind_specific_impls(
148 primary_key: &Option<TokenStream>,
149 kind: QuerySourceMacroKind,
150) -> TokenStream {
151 match kind {
152 QuerySourceMacroKind::Table => {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Table");
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "PrimaryKey");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&primary_key, &mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "AllColumns");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "AllColumns");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "primary_key");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "PrimaryKey");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&primary_key, &mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "all_columns");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AllColumns");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "all_columns");
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "associations");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "HasTable");
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Table");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Table");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "table");
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoUpdateTarget");
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "WhereClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_shl(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AsQuery");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Query");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoUpdateTarget");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "WhereClause");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "into_update_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "UpdateTarget");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Table");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "WhereClause");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "use");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AsQuery");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "q");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "as_query");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "q");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s,
"into_update_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "T");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "insertable");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Insertable");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "T");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AsQuery");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Query");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "insertable");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Insertable");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "T");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Values");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_shl(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AsQuery");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Query");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "insertable");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Insertable");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "T");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Values");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "values");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Values");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "use");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AsQuery");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "as_query");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "values");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "T");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "insertable");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Insertable");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "T");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "insertable");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Insertable");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "T");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Values");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "insertable");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Insertable");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "T");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Values");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "values");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Values");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_star(&mut _s);
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "values");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
_s
});
_s
}quote::quote! {
153 impl diesel::Table for table {
154 type PrimaryKey = #primary_key;
155 type AllColumns = AllColumns;
156
157 fn primary_key(&self) -> Self::PrimaryKey {
158 #primary_key
159 }
160
161 fn all_columns() -> Self::AllColumns {
162 all_columns
163 }
164 }
165
166 impl diesel::associations::HasTable for table {
167 type Table = Self;
168
169 fn table() -> Self::Table {
170 table
171 }
172 }
173
174 impl diesel::query_builder::IntoUpdateTarget for table {
175 type WhereClause = <<Self as diesel::query_builder::AsQuery>::Query as diesel::query_builder::IntoUpdateTarget>::WhereClause;
176
177 fn into_update_target(self) -> diesel::query_builder::UpdateTarget<Self::Table, Self::WhereClause> {
178 use diesel::query_builder::AsQuery;
179 let q: diesel::internal::table_macro::SelectStatement<diesel::internal::table_macro::FromClause<table>> = self.as_query();
180 q.into_update_target()
181 }
182 }
183
184 impl<T> diesel::insertable::Insertable<T> for table
185 where
186 <table as diesel::query_builder::AsQuery>::Query: diesel::insertable::Insertable<T>,
187 {
188 type Values = <<table as diesel::query_builder::AsQuery>::Query as diesel::insertable::Insertable<T>>::Values;
189
190 fn values(self) -> Self::Values {
191 use diesel::query_builder::AsQuery;
192 self.as_query().values()
193 }
194 }
195
196 impl<'a, T> diesel::insertable::Insertable<T> for &'a table
197 where
198 table: diesel::insertable::Insertable<T>,
199 {
200 type Values = <table as diesel::insertable::Insertable<T>>::Values;
201
202 fn values(self) -> Self::Values {
203 (*self).values()
204 }
205 }
206 },
207 QuerySourceMacroKind::View => {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "hidden");
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "use");
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "view");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QueryRelation");
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "view");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "AllColumns");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "AllColumns");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "all_columns");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AllColumns");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "all_columns");
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Sealed");
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "view");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
::quote::__private::TokenStream::new());
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "View");
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "view");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
::quote::__private::TokenStream::new());
_s
}quote::quote! {
208 #[doc(hidden)]
209 pub use self::view as table;
210
211 impl diesel::query_source::QueryRelation for view {
212 type AllColumns = AllColumns;
213
214 fn all_columns() -> Self::AllColumns {
215 all_columns
216 }
217 }
218
219 impl diesel::internal::table_macro::Sealed for view {}
220 impl diesel::query_source::View for view {}
221 },
222 }
223}
224
225fn cfg_group_key(cfg_attrs: &[&syn::Attribute]) -> String {
227 cfg_attrs
228 .iter()
229 .map(|a| {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&a, &mut _s);
_s
}quote::quote!(#a).to_string())
230 .collect::<Vec<_>>()
231 .join(" ")
232}
233
234fn collect_cfg_groups<'a>(
235 columns: impl IntoIterator<Item = &'a ColumnDef> + Clone,
236) -> Vec<CfgGroup<'a>> {
237 use std::collections::HashMap;
238
239 let mut groups_map: HashMap<String, CfgGroup<'a>> = HashMap::new();
242
243 for col in columns.clone() {
244 let cfg_attrs = cfg_attributes(&col.meta);
245 if cfg_attrs.is_empty() {
246 continue;
247 }
248
249 let key = cfg_group_key(&cfg_attrs);
250
251 groups_map
252 .entry(key)
253 .or_insert_with(|| CfgGroup {
254 cfg_attrs: cfg_attrs.clone(),
255 columns: Vec::new(),
256 })
257 .columns
258 .push(col);
259 }
260
261 let mut groups: Vec<CfgGroup<'a>> = Vec::new();
264 let mut seen_keys = std::collections::HashSet::new();
265
266 for col in columns {
267 let cfg_attrs = cfg_attributes(&col.meta);
268 if cfg_attrs.is_empty() {
269 continue;
270 }
271
272 let key = cfg_group_key(&cfg_attrs);
273
274 if !seen_keys.contains(&key) {
275 seen_keys.insert(key.clone());
276 if let Some(group) = groups_map.remove(&key) {
277 groups.push(group);
278 }
279 }
280 }
281
282 groups
283}
284
285#[derive(#[automatically_derived]#[doc(hidden)]unsafe impl ::core::clone::TrivialClone
for QuerySourceMacroKind {
}
#[automatically_derived]impl ::core::clone::Clone for QuerySourceMacroKind {
#[inline]
fn clone(&self) -> Self { *self }
}Clone, #[automatically_derived]impl ::core::marker::Copy for QuerySourceMacroKind { }Copy)]
286pub enum QuerySourceMacroKind {
287 Table,
288 View,
289}
290
291impl QuerySourceMacroKind {
292 fn macro_name(&self) -> &'static str {
293 match self {
294 QuerySourceMacroKind::Table => "table",
295 QuerySourceMacroKind::View => "view",
296 }
297 }
298}
299
300pub fn query_source_macro(
301 tokenstream2: proc_macro2::TokenStream,
302 kind: QuerySourceMacroKind,
303) -> proc_macro2::TokenStream {
304 match syn::parse2::<TableDecl>(tokenstream2.clone()) {
306 Ok(input) => expand(input, kind),
307 Err(_) => {
308 let kind = kind.macro_name();
309 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "compile_error");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"invalid `\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&kind, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s,
"\"!` syntax \\nhelp: please see the `\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&kind, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s,
"\"!` macro docs for more info\\n\\\n help: docs available at: `https://docs.diesel.rs/\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "env");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"CARGO_PKG_VERSION_MAJOR\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s, "\".\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "env");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"CARGO_PKG_VERSION_MINOR\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s, "\".x/diesel/macro.\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&kind, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s, "\".html`\\n\"");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
::quote::ToTokens::to_tokens(&tokenstream2, &mut _s);
_s
}quote::quote! {
310 compile_error!(
311 concat!("invalid `", #kind, "!` syntax \nhelp: please see the `", #kind, "!` macro docs for more info\n\
312 help: docs available at: `https://docs.diesel.rs/", env!("CARGO_PKG_VERSION_MAJOR"), ".", env!("CARGO_PKG_VERSION_MINOR"), ".x/diesel/macro.", #kind, ".html`\n"
313 ));
314 #tokenstream2
315 }
316 }
317 }
318}
319
320fn expand(input: TableDecl, kind: QuerySourceMacroKind) -> TokenStream {
321 let kind_name = kind.macro_name();
322 let column_count = input.view.column_defs.len() as u16;
323 let too_many_columns_error_message = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("`{0}` contains {1} columns, which is more than the supported maximum number of columns\nTry enabling a crate level feature to support more columns",
input.view.table_name, column_count))
})format!(
324 "`{}` contains {column_count} columns, which is more than the supported maximum number of columns\n\
325 Try enabling a crate level feature to support more columns",
326 input.view.table_name
327 );
328 let meta = &input.view.meta;
329 let table_name = &input.view.table_name;
330 let imports = if input.view.use_statements.is_empty() {
331 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[::syn::__private::parse_quote({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "use");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "sql_types");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_star(&mut _s);
::quote::__private::push_semi(&mut _s);
_s
})]))vec![parse_quote!(
332 use diesel::sql_types::*;
333 )]
334 } else {
335 input.view.use_statements.clone()
336 };
337
338 let ordered_columns: Vec<_> = input.view.column_defs.iter().collect();
339 let cfg_groups = collect_cfg_groups(&input.view.column_defs);
340
341 let column_names = input
342 .view
343 .column_defs
344 .iter()
345 .map(|c| &c.column_name)
346 .collect::<Vec<_>>();
347 let column_names = &column_names;
348 let primary_key: Option<TokenStream> = if #[allow(non_exhaustive_omitted_patterns)] match kind {
QuerySourceMacroKind::Table => true,
_ => false,
}matches!(kind, QuerySourceMacroKind::Table) {
349 let primary_key = match input.primary_keys.as_ref() {
350 None if column_names.contains(&&syn::Ident::new(
351 DEFAULT_PRIMARY_KEY_NAME,
352 proc_macro2::Span::mixed_site(),
353 )) =>
354 {
355 let id = syn::Ident::new(DEFAULT_PRIMARY_KEY_NAME, proc_macro2::Span::mixed_site());
356 ::syn::__private::parse_quote({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&id, &mut _s);
_s
});parse_quote! {
357 #id
358 }
359 }
360 None => {
361 let mut message = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("neither an explicit primary key found nor does an `id` column exist.\nconsider explicitly defining a primary key. \nfor example for specifying `{0}` as primary key:\n\n{2}! {{\n\n {1}({0}){{\n",
column_names[0], input.view.table_name, kind_name))
})format!(
362 "neither an explicit primary key found nor does an `id` column exist.\n\
363 consider explicitly defining a primary key. \n\
364 for example for specifying `{key}` as primary key:\n\n\
365 {kind_name}! {{\n
366 {table}({key}){{\n",
367 key = column_names[0],
368 table = input.view.table_name,
369 );
370 message += &::alloc::__export::must_use({
::alloc::fmt::format(format_args!("\t{1} ({0}) {{\n", column_names[0],
table_name))
})format!("\t{table_name} ({}) {{\n", column_names[0]);
371 for c in &input.view.column_defs {
372 let tpe = c
373 .tpe
374 .path
375 .segments
376 .iter()
377 .map(|p| p.ident.to_string())
378 .collect::<Vec<_>>()
379 .join("::");
380 message += &::alloc::__export::must_use({
::alloc::fmt::format(format_args!("\t\t{0} -> {1},\n", c.column_name,
tpe))
})format!("\t\t{} -> {tpe},\n", c.column_name);
381 }
382 message += "\t}\n}";
383
384 let span = Span::mixed_site().located_at(input.view.table_name.span());
385 return {
let _span: ::quote::__private::Span =
::quote::__private::get_span(span).__into_span();
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span, "compile_error");
::quote::__private::push_bang_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&message, &mut _s);
_s
});
::quote::__private::push_semi_spanned(&mut _s, _span);
_s
}quote::quote_spanned! {span=>
386 compile_error!(#message);
387 };
388 }
389 Some(a) if a.keys.len() == 1 => {
390 let k = a.keys.first().unwrap();
391 ::syn::__private::parse_quote({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&k, &mut _s);
_s
});parse_quote! {
392 #k
393 }
394 }
395 Some(a) => {
396 let keys = a.keys.iter();
397
398 ::syn::__private::parse_quote({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut keys, i) = keys.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let keys =
match keys.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&keys, &mut _s);
::quote::__private::push_comma(&mut _s);
}
}
_s
});
_s
});parse_quote! {
399 (#(#keys,)*)
400 }
401 }
402 };
403 Some(primary_key)
404 } else {
405 None
406 };
407
408 let query_source_ident = match kind {
409 QuerySourceMacroKind::Table => syn::Ident::new("table", input.view.table_name.span()),
410 QuerySourceMacroKind::View => syn::Ident::new("view", input.view.table_name.span()),
411 };
412
413 let column_defs = input
414 .view
415 .column_defs
416 .iter()
417 .map(|c| expand_column_def(c, &query_source_ident, kind));
418 let valid_grouping_for_table_columns = generate_valid_grouping_for_table_columns(&input);
419
420 let sql_name = &input.view.sql_name;
421 let static_query_fragment_impl_for_table = if let Some(schema) = input.view.schema {
422 let schema_name = schema.to_string();
423 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "StaticQueryFragment");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Component");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "InfixNode");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Identifier");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Identifier");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_ident(&mut _s, "str");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_ident(&mut _s, "STATIC_COMPONENT");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Component");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "InfixNode");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Identifier");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&schema_name, &mut _s);
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Identifier");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&sql_name, &mut _s);
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s, "\".\"");
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
}quote::quote! {
424 impl diesel::internal::table_macro::StaticQueryFragment for #query_source_ident {
425 type Component = diesel::internal::table_macro::InfixNode<
426 diesel::internal::table_macro::Identifier<'static>,
427 diesel::internal::table_macro::Identifier<'static>,
428 &'static str
429 >;
430 const STATIC_COMPONENT: &'static Self::Component = &diesel::internal::table_macro::InfixNode::new(
431 diesel::internal::table_macro::Identifier(#schema_name),
432 diesel::internal::table_macro::Identifier(#sql_name),
433 "."
434 );
435 }
436 }
437 } else {
438 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "StaticQueryFragment");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Component");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Identifier");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_ident(&mut _s, "STATIC_COMPONENT");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Component");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Identifier");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&sql_name, &mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
}quote::quote! {
439 impl diesel::internal::table_macro::StaticQueryFragment for #query_source_ident {
440 type Component = diesel::internal::table_macro::Identifier<'static>;
441 const STATIC_COMPONENT: &'static Self::Component = &diesel::internal::table_macro::Identifier(#sql_name);
442 }
443 }
444 };
445
446 let reexport_column_from_dsl = input.view.column_defs.iter().map(|c| {
447 let column_name = &c.column_name;
448 let cfg_attrs = cfg_attributes(&c.meta);
449 if c.column_name == *table_name {
450 let span = Span::mixed_site().located_at(c.column_name.span());
451 let message = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("column `{1}` cannot be named the same as it\'s {2}.\nyou may use `#[sql_name = \"{1}\"]` to reference the {2}\'s `{1}` column \ndocs available at: `https://docs.diesel.rs/{0}.x/diesel/macro.{2}.html`\n",
"2.3.10".rsplit_once('.').expect("This is a valid version").0,
column_name, kind_name))
})format!(
452 "column `{column_name}` cannot be named the same as it's {kind_name}.\n\
453 you may use `#[sql_name = \"{column_name}\"]` to reference the {kind_name}'s \
454 `{column_name}` column \n\
455 docs available at: `https://docs.diesel.rs/{}.x/diesel/macro.{kind_name}.html`\n",
456 env!("CARGO_PKG_VERSION")
457 .rsplit_once('.')
458 .expect("This is a valid version")
459 .0
460 );
461 {
let _span: ::quote::__private::Span =
::quote::__private::get_span(span).__into_span();
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span, "compile_error");
::quote::__private::push_bang_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&message, &mut _s);
_s
});
::quote::__private::push_semi_spanned(&mut _s, _span);
_s
}quote::quote_spanned! { span =>
462 compile_error!(#message);
463 }
464 } else {
465 {
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "use");
::quote::__private::push_ident(&mut _s, "super");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "columns");
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_semi(&mut _s);
_s
}quote::quote! {
466 #(#cfg_attrs)*
467 pub use super::columns::#column_name;
468 }
469 }
470 });
471
472 let AggregateTokens {
473 all_columns_const,
474 all_columns_type_variants,
475 } = generate_aggregate_variants(&ordered_columns, &cfg_groups, kind_name);
476
477 let kind_specific_impls = generate_kind_specific_impls(&primary_key, kind);
478
479 let auto_increment_impl = {
480 let mut marked = input.view.column_defs.iter().filter(|c| c.auto_increment);
481 match (marked.next(), marked.next()) {
482 (Some(_), Some(second)) => {
483 let span = Span::mixed_site().located_at(second.column_name.span());
484 return {
let _span: ::quote::__private::Span =
::quote::__private::get_span(span).__into_span();
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span, "compile_error");
::quote::__private::push_bang_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse_spanned(&mut _s, _span,
"\"at most one column per table can be marked with `#[auto_increment]`\"");
_s
});
::quote::__private::push_semi_spanned(&mut _s, _span);
_s
}quote::quote_spanned! {span=>
485 compile_error!("at most one column per table can be marked with `#[auto_increment]`");
486 };
487 }
488 (Some(column), None) if #[allow(non_exhaustive_omitted_patterns)] match kind {
QuerySourceMacroKind::View => true,
_ => false,
}matches!(kind, QuerySourceMacroKind::View) => {
489 let span = Span::mixed_site().located_at(column.column_name.span());
490 return {
let _span: ::quote::__private::Span =
::quote::__private::get_span(span).__into_span();
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span, "compile_error");
::quote::__private::push_bang_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse_spanned(&mut _s, _span,
"\"`#[auto_increment]` is not supported in `view!` definitions\"");
_s
});
::quote::__private::push_semi_spanned(&mut _s, _span);
_s
}quote::quote_spanned! {span=>
491 compile_error!("`#[auto_increment]` is not supported in `view!` definitions");
492 };
493 }
494 (Some(column), None) => {
495 let cfg_attrs = cfg_attributes(&column.meta);
496 let column_name = &column.column_name;
497 Some({
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expand_mysql_like");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Sealed");
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
::quote::__private::TokenStream::new());
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AutoIncrementTable");
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s,
"AutoIncrementColumn");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "columns");
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
_s
}quote::quote! {
498 #(#cfg_attrs)*
499 diesel::internal::table_macro::expand_mysql_like! {
500 impl diesel::internal::table_macro::Sealed for table {}
501
502 impl diesel::query_source::AutoIncrementTable for table {
503 type AutoIncrementColumn = columns::#column_name;
504 }
505 }
506 })
507 }
508 (None, _) => None,
509 }
510 };
511
512 let backend_specific_table_impls = if #[allow(non_exhaustive_omitted_patterns)] match kind {
QuerySourceMacroKind::Table => true,
_ => false,
}matches!(kind, QuerySourceMacroKind::Table) {
513 Some({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expand_pg");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Only");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Only");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Only");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Only");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Only");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
_s
});
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Only");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "table");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expand_pg");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AppearsInFromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Only");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Count");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Once");
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expand_pg");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AppearsInFromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Only");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Count");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Once");
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expand_pg");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Tablesample");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Tablesample");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "TablesampleMethod");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Tablesample");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Tablesample");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Tablesample");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_gt(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
_s
});
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Tablesample");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "table");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expand_pg");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AppearsInFromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Tablesample");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "TablesampleMethod");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Count");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Once");
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expand_pg");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AppearsInFromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Tablesample");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "TablesampleMethod");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Count");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Once");
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
_s
}quote::quote! {
514 diesel::internal::table_macro::expand_pg! {
515 impl<S> diesel::JoinTo<diesel::query_builder::Only<S>> for table
516 where
517 diesel::query_builder::Only<S>: diesel::JoinTo<table>,
518 {
519 type FromClause = diesel::query_builder::Only<S>;
520 type OnClause = <diesel::query_builder::Only<S> as diesel::JoinTo<table>>::OnClause;
521
522 fn join_target(__diesel_internal_rhs: diesel::query_builder::Only<S>) -> (Self::FromClause, Self::OnClause) {
523 let (_, __diesel_internal_on_clause) = diesel::query_builder::Only::<S>::join_target(table);
524 (__diesel_internal_rhs, __diesel_internal_on_clause)
525 }
526 }
527 }
528 diesel::internal::table_macro::expand_pg! {
529 impl diesel::query_source::AppearsInFromClause<diesel::query_builder::Only<table>>
530 for table
531 {
532 type Count = diesel::query_source::Once;
533 }
534 }
535 diesel::internal::table_macro::expand_pg! {
536 impl diesel::query_source::AppearsInFromClause<table>
537 for diesel::query_builder::Only<table>
538 {
539 type Count = diesel::query_source::Once;
540 }
541 }
542 diesel::internal::table_macro::expand_pg! {
543 impl<S, TSM> diesel::JoinTo<diesel::query_builder::Tablesample<S, TSM>> for table
544 where
545 diesel::query_builder::Tablesample<S, TSM>: diesel::JoinTo<table>,
546 TSM: diesel::internal::table_macro::TablesampleMethod
547 {
548 type FromClause = diesel::query_builder::Tablesample<S, TSM>;
549 type OnClause = <diesel::query_builder::Tablesample<S, TSM> as diesel::JoinTo<table>>::OnClause;
550
551 fn join_target(__diesel_internal_rhs: diesel::query_builder::Tablesample<S, TSM>) -> (Self::FromClause, Self::OnClause) {
552 let (_, __diesel_internal_on_clause) = diesel::query_builder::Tablesample::<S, TSM>::join_target(table);
553 (__diesel_internal_rhs, __diesel_internal_on_clause)
554 }
555 }
556 }
557 diesel::internal::table_macro::expand_pg! {
558 impl<TSM> diesel::query_source::AppearsInFromClause<diesel::query_builder::Tablesample<table, TSM>>
559 for table
560 where
561 TSM: diesel::internal::table_macro::TablesampleMethod
562 {
563 type Count = diesel::query_source::Once;
564 }
565 }
566 diesel::internal::table_macro::expand_pg! {
567 impl<TSM> diesel::query_source::AppearsInFromClause<table>
568 for diesel::query_builder::Tablesample<table, TSM>
569 where
570 TSM: diesel::internal::table_macro::TablesampleMethod
571 {
572 type Count = diesel::query_source::Once;
573 }
574 }
575 })
576 } else {
577 None
578 };
579
580 let imports_for_column_module = imports.iter().map(fix_import_for_submodule);
581
582 {
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut meta, i) = meta.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let meta =
match meta.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&meta, &mut _s);
}
}
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "allow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "unused_imports");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "dead_code");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "unreachable_pub");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"unused_qualifications");
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "mod");
::quote::ToTokens::to_tokens(&table_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "assert");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&column_count, &mut _s);
::quote::__private::push_le(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "MAX_COLUMN_COUNT");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&too_many_columns_error_message,
&mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "use");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "use");
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "columns");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_star(&mut _s);
::quote::__private::push_semi(&mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut imports, i) = imports.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let imports =
match imports.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&imports, &mut _s);
}
}
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"Re-exports all of the columns of this \"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&kind_name, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s, "\", as well as the\"");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&kind_name, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s,
"\" struct renamed to the module name. This is meant to be\"");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"glob imported for functions which only deal with one \"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&kind_name, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s, "\".\"");
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "mod");
::quote::__private::push_ident(&mut _s, "dsl");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut reexport_column_from_dsl, i) =
reexport_column_from_dsl.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let reexport_column_from_dsl =
match reexport_column_from_dsl.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&reexport_column_from_dsl,
&mut _s);
}
}
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "use");
::quote::__private::push_ident(&mut _s, "super");
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::ToTokens::to_tokens(&table_name, &mut _s);
::quote::__private::push_semi(&mut _s);
_s
});
::quote::ToTokens::to_tokens(&all_columns_const, &mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "allow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"non_camel_case_types");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "derive");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Debug");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Clone");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Copy");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QueryId");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Default");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "PartialEq");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Eq");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "PartialOrd");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Ord");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Hash");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"The actual \"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&kind_name, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s, "\" struct\"");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "r\"\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" This is the type which provides the base methods of the query\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" builder, such as `.select` and `.filter`.\"");
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "struct");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "impl");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "allow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "dead_code");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"Represents `\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&kind_name, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s,
"\"_name.*`, which is sometimes necessary\"");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" for efficient count queries. It cannot be used in place of\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "r\" `all_columns`\"");
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "star");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "star");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "star");
_s
});
_s
});
::quote::ToTokens::to_tokens(&all_columns_type_variants, &mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"The SQL type of all of the columns on this \"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&kind_name, &mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "SqlType");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "AllColumns");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Expression");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SqlType");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"Helper type for representing a boxed query from this \"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&kind_name, &mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "BoxedQuery");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "SqlType");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "BoxedSelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"Helper type for representing a boxed cloneable query from this \"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&kind_name, &mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "BoxedCloneQuery");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "SqlType");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"BoxedCloneSelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QuerySource");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"StaticQueryFragmentInstance");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "DefaultSelection");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QueryRelation");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AllColumns");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "from_clause");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"StaticQueryFragmentInstance");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s,
"default_selection");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DefaultSelection");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QueryRelation");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "all_columns");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "PlainQuerySource");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
::quote::__private::TokenStream::new());
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QueryFragment");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "backend");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Backend");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "StaticQueryFragment");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Component");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QueryFragment");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "walk_ast");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'b");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'b");
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_pass");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AstPass");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'_");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'b");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QueryResult");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"StaticQueryFragment");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "STATIC_COMPONENT");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "walk_ast");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_pass");
_s
});
_s
});
_s
});
::quote::ToTokens::to_tokens(&static_query_fragment_impl_for_table,
&mut _s);
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AsQuery");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "SqlType");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "SqlType");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Query");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "as_query");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Query");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SelectStatement");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "simple");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
_s
});
_s
});
::quote::ToTokens::to_tokens(&kind_specific_impls, &mut _s);
::quote::ToTokens::to_tokens(&auto_increment_impl, &mut _s);
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AppearsInFromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Count");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Once");
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"AliasAppearsInFromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AliasSource");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Target");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Count");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Never");
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S1");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "S2");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"AliasAliasAppearsInFromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "S2");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "S1");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "S1");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AliasSource");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Target");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "S2");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AliasSource");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Target");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "S1");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"AliasAliasAppearsInFromClauseSameTable");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S2");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Count");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S1");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"AliasAliasAppearsInFromClauseSameTable");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S2");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Count");
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AppearsInFromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Alias");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AliasSource");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Count");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Never");
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "C");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"FieldAliasMapperAssociatedTypesDisjointnessTrick");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "C");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AliasSource");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Target");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_add(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "clone");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Clone");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "C");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QueryRelationField");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "QueryRelation");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Out");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AliasedField");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "C");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_column");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "C");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_alias");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Alias");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Out");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_alias");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "field");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_column");
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "StmtKind");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AppearsInFromClause");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "returning");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ReturningQuerySource");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "StmtKind");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Count");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Once");
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "StmtKind");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "T");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AppearsInFromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "returning");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ReturningQuerySource");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "StmtKind");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "T");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Count");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Never");
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AppearsInFromClause");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "NoFromClause");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Count");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Never");
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Left");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Right");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Kind");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Join");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Left");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Right");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Kind");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Join");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Left");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Right");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Kind");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Left");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QuerySource");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Right");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QuerySource");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Join");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Left");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Right");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Kind");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Join");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Left");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Right");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Kind");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Join");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Left");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Right");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Kind");
::quote::__private::push_gt(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
_s
});
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Join");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Join");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "On");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinOn");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Join");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "On");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinOn");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Join");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "On");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinOn");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Join");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "On");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinOn");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Join");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "On");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinOn");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Join");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "On");
::quote::__private::push_gt(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
_s
});
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinOn");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "F");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "D");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "W");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "O");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "L");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Of");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "G");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "F");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "D");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "W");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "O");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "L");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Of");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "G");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "F");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "D");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "W");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "O");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "L");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Of");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "G");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "F");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QuerySource");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "F");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "D");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "W");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "O");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "L");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Of");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "G");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "F");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "D");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "W");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "O");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "L");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Of");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "G");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "F");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "D");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "W");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "O");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "L");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Of");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "G");
::quote::__private::push_gt(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
_s
});
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SelectStatement");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "QS");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "BoxedSelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "QS");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "BoxedSelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "QS");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "QS");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QuerySource");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"BoxedSelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "QS");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"BoxedSelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "QS");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"BoxedSelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "QS");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
_s
});
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"BoxedSelectStatement");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "QS");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"BoxedCloneSelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "QS");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"BoxedCloneSelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "QS");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "QS");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QuerySource");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"BoxedCloneSelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "QS");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"BoxedCloneSelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "QS");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"BoxedCloneSelectStatement");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'a");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "QS");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "ST");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
_s
});
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"BoxedCloneSelectStatement");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Alias");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Alias");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Alias");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Alias");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "JoinTo");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Alias");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnClause");
_s
});
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Alias");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "S");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "join_target");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_on_clause");
_s
});
_s
});
_s
});
::quote::ToTokens::to_tokens(&backend_specific_table_impls,
&mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"Contains all of the columns of this \"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&kind_name, &mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "mod");
::quote::__private::push_ident(&mut _s, "columns");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "use");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "use");
::quote::__private::push_ident(&mut _s, "super");
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_semi(&mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut imports_for_column_module, i) =
imports_for_column_module.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let imports_for_column_module =
match imports_for_column_module.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&imports_for_column_module,
&mut _s);
}
}
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "allow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"non_camel_case_types");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "dead_code");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "derive");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Debug");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Clone");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Copy");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QueryId");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "PartialEq");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Eq");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "PartialOrd");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Ord");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Hash");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"Represents `\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&kind_name, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s,
"\"_name.*`, which is sometimes needed for\"");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" efficient count queries. It cannot be used in place of\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" `all_columns`, and has a `SqlType` of `()` to prevent it\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" being used that way\"");
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "struct");
::quote::__private::push_ident(&mut _s, "star");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "__GB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expression");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ValidGrouping");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "__GB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "star");
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "super");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AllColumns");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expression");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ValidGrouping");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "__GB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "IsAggregate");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "super");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AllColumns");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expression");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ValidGrouping");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "__GB");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IsAggregate");
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Expression");
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "star");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "SqlType");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expression");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expression_types");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "NotSelectable");
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "backend");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Backend");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QueryFragment");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "star");
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QuerySource");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FromClause");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QueryFragment");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "allow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "non_snake_case");
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "walk_ast");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'b");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'b");
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s,
"__diesel_internal_out");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AstPass");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'_");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'b");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "DB");
::quote::__private::push_gt(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QueryResult");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "use");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QuerySource");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "if");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_out");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "should_skip_from");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_ident(&mut _s, "FROM_CLAUSE");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"StaticQueryFragmentInstance");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"StaticQueryFragmentInstance");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "FROM_CLAUSE");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "walk_ast");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"__diesel_internal_out");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "reborrow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
::quote::__private::push_question(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_out");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push_sql");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\".\"");
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s,
"__diesel_internal_out");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push_sql");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"*\"");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "Ok");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"SelectableExpression");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "star");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
::quote::__private::TokenStream::new());
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AppearsOnTable");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "star");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
::quote::__private::TokenStream::new());
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut column_defs, i) = column_defs.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let column_defs =
match column_defs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&column_defs, &mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut valid_grouping_for_table_columns, i) =
valid_grouping_for_table_columns.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let valid_grouping_for_table_columns =
match valid_grouping_for_table_columns.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&valid_grouping_for_table_columns,
&mut _s);
}
}
_s
});
_s
});
_s
}quote::quote! {
583 #(#meta)*
584 #[allow(unused_imports, dead_code, unreachable_pub, unused_qualifications)]
585 pub mod #table_name {
586 const _: () = {
587 assert!(
588 #column_count <= diesel::internal::table_macro::MAX_COLUMN_COUNT,
589 #too_many_columns_error_message
590 );
591 };
592
593 use ::diesel;
594 pub use self::columns::*;
595 #(#imports)*
596
597 #[doc = concat!("Re-exports all of the columns of this ", #kind_name, ", as well as the")]
598 #[doc = concat!(#kind_name, " struct renamed to the module name. This is meant to be")]
599 #[doc = concat!("glob imported for functions which only deal with one ", #kind_name, ".")]
600 pub mod dsl {
601 #(#reexport_column_from_dsl)*
602 pub use super::#query_source_ident as #table_name;
603 }
604
605 #all_columns_const
606
607 #[allow(non_camel_case_types)]
608 #[derive(Debug, Clone, Copy, diesel::query_builder::QueryId, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
609 #[doc = concat!("The actual ", #kind_name, " struct")]
610 pub struct #query_source_ident;
614
615 impl #query_source_ident {
616 #[allow(dead_code)]
617 #[doc = concat!("Represents `", #kind_name, "_name.*`, which is sometimes necessary")]
618 pub fn star(&self) -> star {
621 star
622 }
623 }
624
625 #all_columns_type_variants
626
627 #[doc = concat!("The SQL type of all of the columns on this ", #kind_name)]
628 pub type SqlType = <AllColumns as diesel::Expression>::SqlType;
629
630 #[doc = concat!("Helper type for representing a boxed query from this ", #kind_name)]
631 pub type BoxedQuery<'a, DB, ST = SqlType> = diesel::internal::table_macro::BoxedSelectStatement<'a, ST, diesel::internal::table_macro::FromClause<#query_source_ident>, DB>;
632
633 #[doc = concat!("Helper type for representing a boxed cloneable query from this ", #kind_name)]
634 pub type BoxedCloneQuery<'a, DB, ST = SqlType> = diesel::internal::table_macro::BoxedCloneSelectStatement<'a, ST, diesel::internal::table_macro::FromClause<#query_source_ident>, DB>;
635
636
637 impl diesel::QuerySource for #query_source_ident {
638 type FromClause = diesel::internal::table_macro::StaticQueryFragmentInstance<#query_source_ident>;
639 type DefaultSelection = <Self as diesel::query_source::QueryRelation>::AllColumns;
640
641 fn from_clause(&self) -> Self::FromClause {
642 diesel::internal::table_macro::StaticQueryFragmentInstance::new()
643 }
644
645 fn default_selection(&self) -> Self::DefaultSelection {
646 <Self as diesel::query_source::QueryRelation>::all_columns()
647 }
648 }
649
650 impl diesel::internal::table_macro::PlainQuerySource for #query_source_ident {}
651
652 impl<DB> diesel::query_builder::QueryFragment<DB> for #query_source_ident where
653 DB: diesel::backend::Backend,
654 <Self as diesel::internal::table_macro::StaticQueryFragment>::Component: diesel::query_builder::QueryFragment<DB>
655 {
656 fn walk_ast<'b>(&'b self, __diesel_internal_pass: diesel::query_builder::AstPass<'_, 'b, DB>) -> diesel::result::QueryResult<()> {
657 <Self as diesel::internal::table_macro::StaticQueryFragment>::STATIC_COMPONENT.walk_ast(__diesel_internal_pass)
658 }
659 }
660
661 #static_query_fragment_impl_for_table
662
663 impl diesel::query_builder::AsQuery for #query_source_ident {
664 type SqlType = SqlType;
665 type Query = diesel::internal::table_macro::SelectStatement<diesel::internal::table_macro::FromClause<Self>>;
666
667 fn as_query(self) -> Self::Query {
668 diesel::internal::table_macro::SelectStatement::simple(self)
669 }
670 }
671
672 #kind_specific_impls
673
674 #auto_increment_impl
675
676 impl diesel::query_source::AppearsInFromClause<Self> for #query_source_ident {
677 type Count = diesel::query_source::Once;
678 }
679
680 impl<S> diesel::internal::table_macro::AliasAppearsInFromClause<S, Self> for #query_source_ident
682 where S: diesel::query_source::AliasSource<Target = Self>,
683 {
684 type Count = diesel::query_source::Never;
685 }
686
687 impl<S1, S2> diesel::internal::table_macro::AliasAliasAppearsInFromClause<Self, S2, S1> for #query_source_ident
691 where S1: diesel::query_source::AliasSource<Target = Self>,
692 S2: diesel::query_source::AliasSource<Target = Self>,
693 S1: diesel::internal::table_macro::AliasAliasAppearsInFromClauseSameTable<S2, Self>,
694 {
695 type Count = <S1 as diesel::internal::table_macro::AliasAliasAppearsInFromClauseSameTable<S2, Self>>::Count;
696 }
697
698 impl<S> diesel::query_source::AppearsInFromClause<diesel::query_source::Alias<S>> for #query_source_ident
699 where S: diesel::query_source::AliasSource,
700 {
701 type Count = diesel::query_source::Never;
702 }
703
704 impl<S, C> diesel::internal::table_macro::FieldAliasMapperAssociatedTypesDisjointnessTrick<Self, S, C> for #query_source_ident
705 where
706 S: diesel::query_source::AliasSource<Target = Self> + ::core::clone::Clone,
707 C: diesel::query_source::QueryRelationField<QueryRelation = Self>,
708 {
709 type Out = diesel::query_source::AliasedField<S, C>;
710
711 fn map(__diesel_internal_column: C, __diesel_internal_alias: &diesel::query_source::Alias<S>) -> Self::Out {
712 __diesel_internal_alias.field(__diesel_internal_column)
713 }
714 }
715
716 impl<StmtKind> diesel::query_source::AppearsInFromClause<#query_source_ident> for diesel::internal::table_macro::returning::ReturningQuerySource<StmtKind, #query_source_ident>
717 {
718 type Count = diesel::query_source::Once;
719 }
720
721 impl<StmtKind, T> diesel::query_source::AppearsInFromClause<diesel::internal::table_macro::returning::ReturningQuerySource<StmtKind, T>> for #query_source_ident {
722 type Count = diesel::query_source::Never;
723 }
724
725 impl diesel::query_source::AppearsInFromClause<#query_source_ident> for diesel::internal::table_macro::NoFromClause {
726 type Count = diesel::query_source::Never;
727 }
728
729 impl<Left, Right, Kind> diesel::JoinTo<diesel::internal::table_macro::Join<Left, Right, Kind>> for #query_source_ident where
730 diesel::internal::table_macro::Join<Left, Right, Kind>: diesel::JoinTo<Self>,
731 Left: diesel::query_source::QuerySource,
732 Right: diesel::query_source::QuerySource,
733 {
734 type FromClause = diesel::internal::table_macro::Join<Left, Right, Kind>;
735 type OnClause = <diesel::internal::table_macro::Join<Left, Right, Kind> as diesel::JoinTo<Self>>::OnClause;
736
737 fn join_target(__diesel_internal_rhs: diesel::internal::table_macro::Join<Left, Right, Kind>) -> (Self::FromClause, Self::OnClause) {
738 let (_, __diesel_internal_on_clause) = diesel::internal::table_macro::Join::join_target(Self);
739 (__diesel_internal_rhs, __diesel_internal_on_clause)
740 }
741 }
742
743 impl<Join, On> diesel::JoinTo<diesel::internal::table_macro::JoinOn<Join, On>> for #query_source_ident where
744 diesel::internal::table_macro::JoinOn<Join, On>: diesel::JoinTo<Self>,
745 {
746 type FromClause = diesel::internal::table_macro::JoinOn<Join, On>;
747 type OnClause = <diesel::internal::table_macro::JoinOn<Join, On> as diesel::JoinTo<Self>>::OnClause;
748
749 fn join_target(__diesel_internal_rhs: diesel::internal::table_macro::JoinOn<Join, On>) -> (Self::FromClause, Self::OnClause) {
750 let (_, __diesel_internal_on_clause) = diesel::internal::table_macro::JoinOn::join_target(Self);
751 (__diesel_internal_rhs, __diesel_internal_on_clause)
752 }
753 }
754
755 impl<F, S, D, W, O, L, Of, G> diesel::JoinTo<diesel::internal::table_macro::SelectStatement<diesel::internal::table_macro::FromClause<F>, S, D, W, O, L, Of, G>> for #query_source_ident where
756 diesel::internal::table_macro::SelectStatement<diesel::internal::table_macro::FromClause<F>, S, D, W, O, L, Of, G>: diesel::JoinTo<Self>,
757 F: diesel::query_source::QuerySource
758 {
759 type FromClause = diesel::internal::table_macro::SelectStatement<diesel::internal::table_macro::FromClause<F>, S, D, W, O, L, Of, G>;
760 type OnClause = <diesel::internal::table_macro::SelectStatement<diesel::internal::table_macro::FromClause<F>, S, D, W, O, L, Of, G> as diesel::JoinTo<Self>>::OnClause;
761
762 fn join_target(__diesel_internal_rhs: diesel::internal::table_macro::SelectStatement<diesel::internal::table_macro::FromClause<F>, S, D, W, O, L, Of, G>) -> (Self::FromClause, Self::OnClause) {
763 let (_, __diesel_internal_on_clause) = diesel::internal::table_macro::SelectStatement::join_target(Self);
764 (__diesel_internal_rhs, __diesel_internal_on_clause)
765 }
766 }
767
768 impl<'a, QS, ST, DB> diesel::JoinTo<diesel::internal::table_macro::BoxedSelectStatement<'a, diesel::internal::table_macro::FromClause<QS>, ST, DB>> for #query_source_ident where
769 diesel::internal::table_macro::BoxedSelectStatement<'a, diesel::internal::table_macro::FromClause<QS>, ST, DB>: diesel::JoinTo<Self>,
770 QS: diesel::query_source::QuerySource,
771 {
772 type FromClause = diesel::internal::table_macro::BoxedSelectStatement<'a, diesel::internal::table_macro::FromClause<QS>, ST, DB>;
773 type OnClause = <diesel::internal::table_macro::BoxedSelectStatement<'a, diesel::internal::table_macro::FromClause<QS>, ST, DB> as diesel::JoinTo<Self>>::OnClause;
774 fn join_target(__diesel_internal_rhs: diesel::internal::table_macro::BoxedSelectStatement<'a, diesel::internal::table_macro::FromClause<QS>, ST, DB>) -> (Self::FromClause, Self::OnClause) {
775 let (_, __diesel_internal_on_clause) = diesel::internal::table_macro::BoxedSelectStatement::join_target(Self);
776 (__diesel_internal_rhs, __diesel_internal_on_clause)
777 }
778 }
779
780 impl<'a, QS, ST, DB> diesel::JoinTo<diesel::internal::table_macro::BoxedCloneSelectStatement<'a, diesel::internal::table_macro::FromClause<QS>, ST, DB>> for #query_source_ident where
781 diesel::internal::table_macro::BoxedCloneSelectStatement<'a, diesel::internal::table_macro::FromClause<QS>, ST, DB>: diesel::JoinTo<Self>,
782 QS: diesel::query_source::QuerySource,
783 {
784 type FromClause = diesel::internal::table_macro::BoxedCloneSelectStatement<'a, diesel::internal::table_macro::FromClause<QS>, ST, DB>;
785 type OnClause = <diesel::internal::table_macro::BoxedCloneSelectStatement<'a, diesel::internal::table_macro::FromClause<QS>, ST, DB> as diesel::JoinTo<Self>>::OnClause;
786 fn join_target(__diesel_internal_rhs: diesel::internal::table_macro::BoxedCloneSelectStatement<'a, diesel::internal::table_macro::FromClause<QS>, ST, DB>) -> (Self::FromClause, Self::OnClause) {
787 let (_, __diesel_internal_on_clause) = diesel::internal::table_macro::BoxedCloneSelectStatement::join_target(Self);
788 (__diesel_internal_rhs, __diesel_internal_on_clause)
789 }
790 }
791
792 impl<S> diesel::JoinTo<diesel::query_source::Alias<S>> for #query_source_ident
793 where
794 diesel::query_source::Alias<S>: diesel::JoinTo<Self>,
795 {
796 type FromClause = diesel::query_source::Alias<S>;
797 type OnClause = <diesel::query_source::Alias<S> as diesel::JoinTo<Self>>::OnClause;
798
799 fn join_target(__diesel_internal_rhs: diesel::query_source::Alias<S>) -> (Self::FromClause, Self::OnClause) {
800 let (_, __diesel_internal_on_clause) = diesel::query_source::Alias::<S>::join_target(Self);
801 (__diesel_internal_rhs, __diesel_internal_on_clause)
802 }
803 }
804
805 #backend_specific_table_impls
806
807 #[doc = concat!("Contains all of the columns of this ", #kind_name)]
808 pub mod columns {
809 use ::diesel;
810 use super::#query_source_ident;
811 #(#imports_for_column_module)*
812
813 #[allow(non_camel_case_types, dead_code)]
814 #[derive(Debug, Clone, Copy, diesel::query_builder::QueryId, PartialEq, Eq, PartialOrd, Ord, Hash)]
815 #[doc = concat!("Represents `", #kind_name, "_name.*`, which is sometimes needed for")]
816 pub struct star;
820
821 impl<__GB> diesel::expression::ValidGrouping<__GB> for star
822 where
823 super::AllColumns: diesel::expression::ValidGrouping<__GB>,
824 {
825 type IsAggregate =
826 <super::AllColumns as diesel::expression::ValidGrouping<__GB>>::IsAggregate;
827 }
828
829 impl diesel::Expression for star {
830 type SqlType = diesel::expression::expression_types::NotSelectable;
831 }
832
833 impl<DB: diesel::backend::Backend> diesel::query_builder::QueryFragment<DB> for star where
834 <#query_source_ident as diesel::QuerySource>::FromClause: diesel::query_builder::QueryFragment<DB>,
835 {
836 #[allow(non_snake_case)]
837 fn walk_ast<'b>(&'b self, mut __diesel_internal_out: diesel::query_builder::AstPass<'_, 'b, DB>) -> diesel::result::QueryResult<()>
838 {
839 use diesel::QuerySource;
840
841 if !__diesel_internal_out.should_skip_from() {
842 const FROM_CLAUSE: diesel::internal::table_macro::StaticQueryFragmentInstance<#query_source_ident> = diesel::internal::table_macro::StaticQueryFragmentInstance::new();
843
844 FROM_CLAUSE.walk_ast(__diesel_internal_out.reborrow())?;
845 __diesel_internal_out.push_sql(".");
846 }
847 __diesel_internal_out.push_sql("*");
848 Ok(())
849 }
850 }
851
852 impl diesel::SelectableExpression<#query_source_ident> for star {}
853
854 impl diesel::AppearsOnTable<#query_source_ident> for star {}
855
856 #(#column_defs)*
857
858 #(#valid_grouping_for_table_columns)*
859 }
860 }
861 }
862}
863
864fn generate_valid_grouping_for_table_columns(table: &TableDecl) -> Vec<TokenStream> {
865 let mut ret = Vec::with_capacity(table.view.column_defs.len() * table.view.column_defs.len());
866
867 let primary_key = if let Some(ref pk) = table.primary_keys {
868 if pk.keys.len() == 1 {
869 pk.keys.first().map(ToString::to_string)
870 } else {
871 None
872 }
873 } else {
874 Some(DEFAULT_PRIMARY_KEY_NAME.into())
875 };
876
877 for (id, right_col_def) in table.view.column_defs.iter().enumerate() {
878 for left_col_def in table.view.column_defs.iter().skip(id) {
879 let right_to_left = if Some(left_col_def.column_name.to_string()) == primary_key {
880 Ident::new("Yes", proc_macro2::Span::mixed_site())
881 } else {
882 Ident::new("No", proc_macro2::Span::mixed_site())
883 };
884
885 let left_to_right = if Some(right_col_def.column_name.to_string()) == primary_key {
886 Ident::new("Yes", proc_macro2::Span::mixed_site())
887 } else {
888 Ident::new("No", proc_macro2::Span::mixed_site())
889 };
890
891 let left_col = &left_col_def.column_name;
892 let right_col = &right_col_def.column_name;
893
894 let left_cfg_attrs = cfg_attributes(&left_col_def.meta);
895 let right_cfg_attrs = cfg_attributes(&right_col_def.meta);
896
897 if left_col != right_col {
898 ret.push({
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut left_cfg_attrs, i) = left_cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let left_cfg_attrs =
match left_cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&left_cfg_attrs, &mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut right_cfg_attrs, i) = right_cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let right_cfg_attrs =
match right_cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&right_cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expression");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IsContainedInGroupBy");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&right_col, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&left_col, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Output");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expression");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"is_contained_in_group_by");
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&right_to_left, &mut _s);
::quote::__private::push_semi(&mut _s);
_s
});
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut left_cfg_attrs, i) = left_cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let left_cfg_attrs =
match left_cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&left_cfg_attrs, &mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut right_cfg_attrs, i) = right_cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let right_cfg_attrs =
match right_cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&right_cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expression");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IsContainedInGroupBy");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&left_col, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&right_col, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Output");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expression");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"is_contained_in_group_by");
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&left_to_right, &mut _s);
::quote::__private::push_semi(&mut _s);
_s
});
_s
}quote::quote! {
899 #(#left_cfg_attrs)*
900 #(#right_cfg_attrs)*
901 impl diesel::expression::IsContainedInGroupBy<#right_col> for #left_col {
902 type Output = diesel::expression::is_contained_in_group_by::#right_to_left;
903 }
904
905 #(#left_cfg_attrs)*
906 #(#right_cfg_attrs)*
907 impl diesel::expression::IsContainedInGroupBy<#left_col> for #right_col {
908 type Output = diesel::expression::is_contained_in_group_by::#left_to_right;
909 }
910 });
911 }
912 }
913 }
914 ret
915}
916
917fn fix_import_for_submodule(import: &syn::ItemUse) -> syn::ItemUse {
921 let mut ret = import.clone();
922
923 if let syn::UseTree::Path(ref mut path) = ret.tree
924 && path.ident == "super"
925 {
926 let inner = path.clone();
927 *path.tree = syn::UseTree::Path(inner);
928 }
929
930 ret
931}
932
933fn is_numeric(ty: &syn::TypePath) -> bool {
934 const NUMERIC_TYPES: &[&str] = &[
935 "SmallInt",
936 "Int2",
937 "Smallint",
938 "SmallSerial",
939 "Integer",
940 "Int4",
941 "Serial",
942 "BigInt",
943 "Int8",
944 "Bigint",
945 "BigSerial",
946 "Decimal",
947 "Float",
948 "Float4",
949 "Float8",
950 "Double",
951 "Numeric",
952 ];
953
954 if let Some(last) = ty.path.segments.last() {
955 match &last.arguments {
956 syn::PathArguments::AngleBracketed(t)
957 if (last.ident == "Nullable" || last.ident == "Unsigned") && t.args.len() == 1 =>
958 {
959 if let Some(syn::GenericArgument::Type(syn::Type::Path(t))) = t.args.first() {
960 NUMERIC_TYPES.iter().any(|i| {
961 t.path.segments.last().map(|s| s.ident.to_string())
962 == Some(String::from(*i))
963 })
964 } else {
965 false
966 }
967 }
968 _ => NUMERIC_TYPES.iter().any(|i| last.ident == *i),
969 }
970 } else {
971 false
972 }
973}
974
975fn is_date_time(ty: &syn::TypePath) -> bool {
976 const DATE_TYPES: &[&str] = &["Time", "Date", "Timestamp", "Timestamptz"];
977 if let Some(last) = ty.path.segments.last() {
978 match &last.arguments {
979 syn::PathArguments::AngleBracketed(t)
980 if last.ident == "Nullable" && t.args.len() == 1 =>
981 {
982 if let Some(syn::GenericArgument::Type(syn::Type::Path(t))) = t.args.first() {
983 DATE_TYPES.iter().any(|i| {
984 t.path.segments.last().map(|s| s.ident.to_string())
985 == Some(String::from(*i))
986 })
987 } else {
988 false
989 }
990 }
991 _ => DATE_TYPES.iter().any(|i| last.ident == *i),
992 }
993 } else {
994 false
995 }
996}
997
998fn is_network(ty: &syn::TypePath) -> bool {
999 const NETWORK_TYPES: &[&str] = &["Cidr", "Inet"];
1000
1001 if let Some(last) = ty.path.segments.last() {
1002 match &last.arguments {
1003 syn::PathArguments::AngleBracketed(t)
1004 if last.ident == "Nullable" && t.args.len() == 1 =>
1005 {
1006 if let Some(syn::GenericArgument::Type(syn::Type::Path(t))) = t.args.first() {
1007 NETWORK_TYPES.iter().any(|i| {
1008 t.path.segments.last().map(|s| s.ident.to_string())
1009 == Some(String::from(*i))
1010 })
1011 } else {
1012 false
1013 }
1014 }
1015 _ => NETWORK_TYPES.iter().any(|i| last.ident == *i),
1016 }
1017 } else {
1018 false
1019 }
1020}
1021
1022fn generate_op_impl(op: &str, tpe: &syn::Ident, cfg_attrs: &[&syn::Attribute]) -> TokenStream {
1023 let fn_name = syn::Ident::new(&op.to_lowercase(), tpe.span());
1024 let op = syn::Ident::new(op, tpe.span());
1025 {
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Rhs");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ops");
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&op, &mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Rhs");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&tpe, &mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "Rhs");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expression");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AsExpression");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_shl(&mut _s);
::quote::ToTokens::to_tokens(&tpe, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Expression");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SqlType");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "sql_types");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ops");
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&op, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Rhs");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Output");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ops");
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&op, &mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "Rhs");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Expression");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::ToTokens::to_tokens(&fn_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "Rhs");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Output");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ops");
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&op, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s,
"__diesel_internal_rhs");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "as_expression");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
_s
});
_s
});
_s
}quote::quote! {
1026 #(#cfg_attrs)*
1027 impl<Rhs> ::core::ops::#op<Rhs> for #tpe
1028 where
1029 Rhs: diesel::expression::AsExpression<
1030 <<#tpe as diesel::Expression>::SqlType as diesel::sql_types::ops::#op>::Rhs,
1031 >,
1032 {
1033 type Output = diesel::internal::table_macro::ops::#op<Self, Rhs::Expression>;
1034
1035 fn #fn_name(self, __diesel_internal_rhs: Rhs) -> Self::Output {
1036 diesel::internal::table_macro::ops::#op::new(self, __diesel_internal_rhs.as_expression())
1037 }
1038 }
1039 }
1040}
1041
1042fn expand_column_def(
1043 column_def: &ColumnDef,
1044 query_source_ident: &Ident,
1045 kind: QuerySourceMacroKind,
1046) -> TokenStream {
1047 let span = Span::mixed_site().located_at(column_def.column_name.span());
1050 let meta = &column_def.meta;
1051 let cfg_attrs = cfg_attributes(&column_def.meta);
1052 let column_name = &column_def.column_name;
1053 let sql_name = &column_def.sql_name;
1054 let sql_type = &column_def.tpe;
1055
1056 let backend_specific_column_impl = if #[allow(non_exhaustive_omitted_patterns)] match kind {
QuerySourceMacroKind::Table => true,
_ => false,
}matches!(kind, QuerySourceMacroKind::Table) {
1057 Some({
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expand_pg");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AppearsInFromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Only");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "super");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Count");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Once");
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expand_pg");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SelectableExpression");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Only");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "super");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
::quote::__private::TokenStream::new());
_s
});
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expand_pg");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "AppearsInFromClause");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Tablesample");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "super");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "TablesampleMethod");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Count");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Once");
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "expand_pg");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SelectableExpression");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_builder");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Tablesample");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "super");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_ident(&mut _s, "where");
::quote::__private::push_ident(&mut _s, "TSM");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "internal");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table_macro");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "TablesampleMethod");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
::quote::__private::TokenStream::new());
_s
});
_s
}quote::quote! {
1058 #(#cfg_attrs)*
1059 diesel::internal::table_macro::expand_pg! {
1060 impl diesel::query_source::AppearsInFromClause<diesel::query_builder::Only<super::table>>
1061 for #column_name
1062 {
1063 type Count = diesel::query_source::Once;
1064 }
1065 }
1066 #(#cfg_attrs)*
1067 diesel::internal::table_macro::expand_pg! {
1068 impl diesel::SelectableExpression<diesel::query_builder::Only<super::table>> for #column_name {}
1069 }
1070 #(#cfg_attrs)*
1071 diesel::internal::table_macro::expand_pg! {
1072 impl<TSM> diesel::query_source::AppearsInFromClause<diesel::query_builder::Tablesample<super::table, TSM>>
1073 for #column_name
1074 where
1075 TSM: diesel::internal::table_macro::TablesampleMethod
1076 {
1077 type Count = diesel::query_source::Once;
1078 }
1079 }
1080 #(#cfg_attrs)*
1081 diesel::internal::table_macro::expand_pg! {
1082 impl<TSM> diesel::SelectableExpression<diesel::query_builder::Tablesample<super::table, TSM>>
1083 for #column_name where TSM: diesel::internal::table_macro::TablesampleMethod {}
1084 }
1085 })
1086 } else {
1087 None
1088 };
1089
1090 let ops_impls = if is_numeric(&column_def.tpe) {
1091 let add = generate_op_impl("Add", column_name, &cfg_attrs);
1092 let sub = generate_op_impl("Sub", column_name, &cfg_attrs);
1093 let div = generate_op_impl("Div", column_name, &cfg_attrs);
1094 let mul = generate_op_impl("Mul", column_name, &cfg_attrs);
1095 Some({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&add, &mut _s);
::quote::ToTokens::to_tokens(&sub, &mut _s);
::quote::ToTokens::to_tokens(&div, &mut _s);
::quote::ToTokens::to_tokens(&mul, &mut _s);
_s
}quote::quote! {
1096 #add
1097 #sub
1098 #div
1099 #mul
1100 })
1101 } else if is_date_time(&column_def.tpe) || is_network(&column_def.tpe) {
1102 let add = generate_op_impl("Add", column_name, &cfg_attrs);
1103 let sub = generate_op_impl("Sub", column_name, &cfg_attrs);
1104 Some({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&add, &mut _s);
::quote::ToTokens::to_tokens(&sub, &mut _s);
_s
}quote::quote! {
1105 #add
1106 #sub
1107 })
1108 } else {
1109 None
1110 };
1111
1112 let max_length = column_def.max_length.as_ref().map(|column_max_length| {
1113 {
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SizeRestrictedColumn");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_ident(&mut _s, "MAX_LENGTH");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "usize");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&column_max_length, &mut _s);
::quote::__private::push_semi(&mut _s);
_s
});
_s
}quote::quote! {
1114 #(#cfg_attrs)*
1115 impl self::diesel::query_source::SizeRestrictedColumn for #column_name {
1116 const MAX_LENGTH: usize = #column_max_length;
1117 }
1118 }
1119 });
1120
1121 let table_specific_impls = if #[allow(non_exhaustive_omitted_patterns)] match kind {
QuerySourceMacroKind::Table => true,
_ => false,
}matches!(kind, QuerySourceMacroKind::Table) {
1122 {
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Column");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Table");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "super");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "table");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_ident(&mut _s, "NAME");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_ident(&mut _s, "str");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&sql_name, &mut _s);
::quote::__private::push_semi(&mut _s);
_s
});
_s
}quote::quote! {
1123 #(#cfg_attrs)*
1124 impl diesel::query_source::Column for #column_name {
1125 type Table = super::table;
1126
1127 const NAME: &'static str = #sql_name;
1128 }
1129 }
1130 } else {
1131 {
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_ident(&mut _s, "diesel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "query_source");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "QueryRelationField");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "QueryRelation");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "super");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "view");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_ident(&mut _s, "NAME");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_ident(&mut _s, "str");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&sql_name, &mut _s);
::quote::__private::push_semi(&mut _s);
_s
});
_s
}quote::quote! {
1132 #(#cfg_attrs)*
1133 impl diesel::query_source::QueryRelationField for #column_name {
1134 type QueryRelation = super::view;
1135
1136 const NAME: &'static str = #sql_name;
1137 }
1138 }
1139 };
1140
1141 {
let _span: ::quote::__private::Span =
::quote::__private::get_span(span).__into_span();
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut meta, i) = meta.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let meta =
match meta.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&meta, &mut _s);
}
}
::quote::__private::push_pound_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span, "allow");
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span,
"non_camel_case_types");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"dead_code");
_s
});
_s
});
::quote::__private::push_pound_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span, "derive");
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span,
"Debug");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"Clone");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"Copy");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"query_builder");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"QueryId");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"Default");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"PartialEq");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"Eq");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"PartialOrd");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"Ord");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"Hash");
_s
});
_s
});
::quote::__private::push_ident_spanned(&mut _s, _span, "pub");
::quote::__private::push_ident_spanned(&mut _s, _span, "struct");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_semi_spanned(&mut _s, _span);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident_spanned(&mut _s, _span, "impl");
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "expression");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Expression");
::quote::__private::push_ident_spanned(&mut _s, _span, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span, "type");
::quote::__private::push_ident_spanned(&mut _s, _span, "SqlType");
::quote::__private::push_eq_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&sql_type, &mut _s);
::quote::__private::push_semi_spanned(&mut _s, _span);
_s
});
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident_spanned(&mut _s, _span, "impl");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "DB");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "query_builder");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "QueryFragment");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "DB");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_ident_spanned(&mut _s, _span, "where");
::quote::__private::push_ident_spanned(&mut _s, _span, "DB");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "backend");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Backend");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"StaticQueryFragmentInstance");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "query_builder");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "QueryFragment");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "DB");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span,
"allow");
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span,
"non_snake_case");
_s
});
_s
});
::quote::__private::push_ident_spanned(&mut _s, _span, "fn");
::quote::__private::push_ident_spanned(&mut _s, _span,
"walk_ast");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_lifetime_spanned(&mut _s, _span, "\'b");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and_spanned(&mut _s, _span);
::quote::__private::push_lifetime_spanned(&mut _s, _span,
"\'b");
::quote::__private::push_ident_spanned(&mut _s, _span,
"self");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"mut");
::quote::__private::push_ident_spanned(&mut _s, _span,
"__diesel_internal_out");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"query_builder");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"AstPass");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_lifetime_spanned(&mut _s, _span,
"\'_");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_lifetime_spanned(&mut _s, _span,
"\'b");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"DB");
::quote::__private::push_gt_spanned(&mut _s, _span);
_s
});
::quote::__private::push_rarrow_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "result");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"QueryResult");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{ ::quote::__private::TokenStream::new() });
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span,
"if");
::quote::__private::push_bang_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"__diesel_internal_out");
::quote::__private::push_dot_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"should_skip_from");
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{ ::quote::__private::TokenStream::new() });
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span,
"const");
::quote::__private::push_ident_spanned(&mut _s, _span,
"FROM_CLAUSE");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"StaticQueryFragmentInstance");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_eq_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"StaticQueryFragmentInstance");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"new");
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{ ::quote::__private::TokenStream::new() });
::quote::__private::push_semi_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"FROM_CLAUSE");
::quote::__private::push_dot_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"walk_ast");
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span,
"__diesel_internal_out");
::quote::__private::push_dot_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"reborrow");
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{ ::quote::__private::TokenStream::new() });
_s
});
::quote::__private::push_question_spanned(&mut _s, _span);
::quote::__private::push_semi_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"__diesel_internal_out");
::quote::__private::push_dot_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"push_sql");
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse_spanned(&mut _s, _span, "\".\"");
_s
});
::quote::__private::push_semi_spanned(&mut _s, _span);
_s
});
::quote::__private::push_ident_spanned(&mut _s, _span,
"__diesel_internal_out");
::quote::__private::push_dot_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"push_identifier");
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&sql_name, &mut _s);
_s
});
_s
});
_s
});
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident_spanned(&mut _s, _span, "impl");
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"SelectableExpression");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "super");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{ ::quote::__private::TokenStream::new() });
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident_spanned(&mut _s, _span, "impl");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "__StmtKind");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"SelectableExpression");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "returning");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"ReturningQuerySource");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "__StmtKind");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "super");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{ ::quote::__private::TokenStream::new() });
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident_spanned(&mut _s, _span, "impl");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "QS");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "AppearsOnTable");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "QS");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_ident_spanned(&mut _s, _span, "where");
::quote::__private::push_ident_spanned(&mut _s, _span, "QS");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "query_source");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"AppearsInFromClause");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "super");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Count");
::quote::__private::push_eq_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "query_source");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Once");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{ ::quote::__private::TokenStream::new() });
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident_spanned(&mut _s, _span, "impl");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Left");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Right");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"SelectableExpression");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Join");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Left");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Right");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "LeftOuter");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_ident_spanned(&mut _s, _span, "where");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "AppearsOnTable");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Join");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Left");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Right");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "LeftOuter");
::quote::__private::push_shr_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Self");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"SelectableExpression");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Left");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Right");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "query_source");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"AppearsInFromClause");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "super");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Count");
::quote::__private::push_eq_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "query_source");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Never");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_add_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "query_source");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "QuerySource");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Left");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "query_source");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "QuerySource");
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{ ::quote::__private::TokenStream::new() });
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident_spanned(&mut _s, _span, "impl");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Left");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Right");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"SelectableExpression");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Join");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Left");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Right");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Inner");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_ident_spanned(&mut _s, _span, "where");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "AppearsOnTable");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Join");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Left");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Right");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Inner");
::quote::__private::push_shr_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Left");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "query_source");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"AppearsInFromClause");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "super");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_add_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "query_source");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "QuerySource");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Right");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "query_source");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"AppearsInFromClause");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "super");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_add_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "query_source");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "QuerySource");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span, "Left");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Count");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Right");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Count");
_s
});
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Pick");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Left");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Right");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Self");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"SelectableExpression");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span, "Left");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Count");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Right");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Count");
_s
});
::quote::__private::push_ident_spanned(&mut _s, _span, "as");
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Pick");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Left");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Right");
::quote::__private::push_shr_spanned(&mut _s, _span);
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Selection");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{ ::quote::__private::TokenStream::new() });
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident_spanned(&mut _s, _span, "impl");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Join");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "On");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"SelectableExpression");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "JoinOn");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Join");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "On");
::quote::__private::push_shr_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_ident_spanned(&mut _s, _span, "where");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"SelectableExpression");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Join");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_add_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "AppearsOnTable");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "JoinOn");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Join");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "On");
::quote::__private::push_shr_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{ ::quote::__private::TokenStream::new() });
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident_spanned(&mut _s, _span, "impl");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "From");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"SelectableExpression");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "SelectStatement");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "FromClause");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "From");
::quote::__private::push_shr_spanned(&mut _s, _span);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_ident_spanned(&mut _s, _span, "where");
::quote::__private::push_ident_spanned(&mut _s, _span, "From");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "query_source");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "QuerySource");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"SelectableExpression");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "From");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_add_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "AppearsOnTable");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "SelectStatement");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "FromClause");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "From");
::quote::__private::push_shr_spanned(&mut _s, _span);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{ ::quote::__private::TokenStream::new() });
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident_spanned(&mut _s, _span, "impl");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "__GB");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "expression");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "ValidGrouping");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "__GB");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_ident_spanned(&mut _s, _span, "where");
::quote::__private::push_ident_spanned(&mut _s, _span, "__GB");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "expression");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"IsContainedInGroupBy");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Output");
::quote::__private::push_eq_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "expression");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"is_contained_in_group_by");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Yes");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span, "type");
::quote::__private::push_ident_spanned(&mut _s, _span,
"IsAggregate");
::quote::__private::push_eq_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"expression");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"is_aggregate");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Yes");
::quote::__private::push_semi_spanned(&mut _s, _span);
_s
});
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident_spanned(&mut _s, _span, "impl");
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "expression");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "ValidGrouping");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{ ::quote::__private::TokenStream::new() });
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span, "type");
::quote::__private::push_ident_spanned(&mut _s, _span,
"IsAggregate");
::quote::__private::push_eq_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"expression");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"is_aggregate");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "No");
::quote::__private::push_semi_spanned(&mut _s, _span);
_s
});
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident_spanned(&mut _s, _span, "impl");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "__GB");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "__F");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "expression");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "ValidGrouping");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"SubselectGroupBy");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "__GB");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "__F");
::quote::__private::push_shr_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_ident_spanned(&mut _s, _span, "where");
::quote::__private::push_ident_spanned(&mut _s, _span, "__F");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "query_source");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"AppearsInFromClause");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "super");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&query_source_ident, &mut _s);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "__F");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Count");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"SubselectFieldGrouping");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Self");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "__GB");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span, "type");
::quote::__private::push_ident_spanned(&mut _s, _span,
"IsAggregate");
::quote::__private::push_eq_spanned(&mut _s, _span);
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "__F");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Count");
::quote::__private::push_ident_spanned(&mut _s, _span, "as");
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"internal");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"table_macro");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"SubselectFieldGrouping");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Self");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "__GB");
::quote::__private::push_shr_spanned(&mut _s, _span);
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"IsAggregate");
::quote::__private::push_semi_spanned(&mut _s, _span);
_s
});
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident_spanned(&mut _s, _span, "impl");
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "expression");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"IsContainedInGroupBy");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span, "type");
::quote::__private::push_ident_spanned(&mut _s, _span, "Output");
::quote::__private::push_eq_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"expression");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"is_contained_in_group_by");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Yes");
::quote::__private::push_semi_spanned(&mut _s, _span);
_s
});
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut cfg_attrs, i) = cfg_attrs.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let cfg_attrs =
match cfg_attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&cfg_attrs, &mut _s);
}
}
::quote::__private::push_ident_spanned(&mut _s, _span, "impl");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "T");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "EqAll");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "T");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "for");
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_ident_spanned(&mut _s, _span, "where");
::quote::__private::push_ident_spanned(&mut _s, _span, "T");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "expression");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "AsExpression");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&sql_type, &mut _s);
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "dsl");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Eq");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::ToTokens::to_tokens(&column_name, &mut _s);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "T");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Expression");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Expression");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "SqlType");
::quote::__private::push_eq_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "sql_types");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Bool");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span, "type");
::quote::__private::push_ident_spanned(&mut _s, _span, "Output");
::quote::__private::push_eq_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "dsl");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Eq");
::quote::__private::push_lt_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Self");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "T");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"Expression");
::quote::__private::push_gt_spanned(&mut _s, _span);
::quote::__private::push_semi_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "fn");
::quote::__private::push_ident_spanned(&mut _s, _span, "eq_all");
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span,
"self");
::quote::__private::push_comma_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"__diesel_internal_rhs");
::quote::__private::push_colon_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "T");
_s
});
::quote::__private::push_rarrow_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Self");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span, "Output");
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span,
"use");
::quote::__private::push_ident_spanned(&mut _s, _span,
"diesel");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"expression_methods");
::quote::__private::push_colon2_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"ExpressionMethods");
::quote::__private::push_semi_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"self");
::quote::__private::push_dot_spanned(&mut _s, _span);
::quote::__private::push_ident_spanned(&mut _s, _span,
"eq");
::quote::__private::push_group_spanned(&mut _s, _span,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident_spanned(&mut _s, _span,
"__diesel_internal_rhs");
_s
});
_s
});
_s
});
::quote::ToTokens::to_tokens(&max_length, &mut _s);
::quote::ToTokens::to_tokens(&ops_impls, &mut _s);
::quote::ToTokens::to_tokens(&backend_specific_column_impl, &mut _s);
::quote::ToTokens::to_tokens(&table_specific_impls, &mut _s);
_s
}quote::quote_spanned! {span=>
1142 #(#meta)*
1143 #[allow(non_camel_case_types, dead_code)]
1144 #[derive(Debug, Clone, Copy, diesel::query_builder::QueryId, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
1145 pub struct #column_name;
1146
1147 #(#cfg_attrs)*
1148 impl diesel::expression::Expression for #column_name {
1149 type SqlType = #sql_type;
1150 }
1151
1152 #(#cfg_attrs)*
1153 impl<DB> diesel::query_builder::QueryFragment<DB> for #column_name where
1154 DB: diesel::backend::Backend,
1155 diesel::internal::table_macro::StaticQueryFragmentInstance<#query_source_ident>: diesel::query_builder::QueryFragment<DB>,
1156 {
1157 #[allow(non_snake_case)]
1158 fn walk_ast<'b>(&'b self, mut __diesel_internal_out: diesel::query_builder::AstPass<'_, 'b, DB>) -> diesel::result::QueryResult<()>
1159 {
1160 if !__diesel_internal_out.should_skip_from() {
1161 const FROM_CLAUSE: diesel::internal::table_macro::StaticQueryFragmentInstance<#query_source_ident> = diesel::internal::table_macro::StaticQueryFragmentInstance::new();
1162
1163 FROM_CLAUSE.walk_ast(__diesel_internal_out.reborrow())?;
1164 __diesel_internal_out.push_sql(".");
1165 }
1166 __diesel_internal_out.push_identifier(#sql_name)
1167 }
1168 }
1169
1170 #(#cfg_attrs)*
1171 impl diesel::SelectableExpression<super::#query_source_ident> for #column_name {
1172 }
1173
1174 #(#cfg_attrs)*
1175 impl<__StmtKind>
1176 diesel::SelectableExpression<
1177 diesel::internal::table_macro::returning::ReturningQuerySource<
1178 __StmtKind,
1179 super::#query_source_ident,
1180 >,
1181 > for #column_name
1182 {
1183 }
1184
1185 #(#cfg_attrs)*
1186 impl<QS> diesel::AppearsOnTable<QS> for #column_name where
1187 QS: diesel::query_source::AppearsInFromClause<super::#query_source_ident, Count=diesel::query_source::Once>,
1188 {
1189 }
1190
1191 #(#cfg_attrs)*
1192 impl<Left, Right> diesel::SelectableExpression<
1193 diesel::internal::table_macro::Join<Left, Right, diesel::internal::table_macro::LeftOuter>,
1194 > for #column_name where
1195 #column_name: diesel::AppearsOnTable<diesel::internal::table_macro::Join<Left, Right, diesel::internal::table_macro::LeftOuter>>,
1196 Self: diesel::SelectableExpression<Left>,
1197 Right: diesel::query_source::AppearsInFromClause<super::#query_source_ident, Count=diesel::query_source::Never> + diesel::query_source::QuerySource,
1200 Left: diesel::query_source::QuerySource
1201 {
1202 }
1203
1204 #(#cfg_attrs)*
1205 impl<Left, Right> diesel::SelectableExpression<
1206 diesel::internal::table_macro::Join<Left, Right, diesel::internal::table_macro::Inner>,
1207 > for #column_name where
1208 #column_name: diesel::AppearsOnTable<diesel::internal::table_macro::Join<Left, Right, diesel::internal::table_macro::Inner>>,
1209 Left: diesel::query_source::AppearsInFromClause<super::#query_source_ident> + diesel::query_source::QuerySource,
1210 Right: diesel::query_source::AppearsInFromClause<super::#query_source_ident> + diesel::query_source::QuerySource,
1211 (Left::Count, Right::Count): diesel::internal::table_macro::Pick<Left, Right>,
1212 Self: diesel::SelectableExpression<
1213 <(Left::Count, Right::Count) as diesel::internal::table_macro::Pick<Left, Right>>::Selection,
1214 >,
1215 {
1216 }
1217
1218 #(#cfg_attrs)*
1220 impl<Join, On> diesel::SelectableExpression<diesel::internal::table_macro::JoinOn<Join, On>> for #column_name where
1221 #column_name: diesel::SelectableExpression<Join> + diesel::AppearsOnTable<diesel::internal::table_macro::JoinOn<Join, On>>,
1222 {
1223 }
1224
1225 #(#cfg_attrs)*
1227 impl<From> diesel::SelectableExpression<diesel::internal::table_macro::SelectStatement<diesel::internal::table_macro::FromClause<From>>> for #column_name where
1228 From: diesel::query_source::QuerySource,
1229 #column_name: diesel::SelectableExpression<From> + diesel::AppearsOnTable<diesel::internal::table_macro::SelectStatement<diesel::internal::table_macro::FromClause<From>>>,
1230 {
1231 }
1232
1233 #(#cfg_attrs)*
1234 impl<__GB> diesel::expression::ValidGrouping<__GB> for #column_name
1235 where __GB: diesel::expression::IsContainedInGroupBy<#column_name, Output = diesel::expression::is_contained_in_group_by::Yes>,
1236 {
1237 type IsAggregate = diesel::expression::is_aggregate::Yes;
1238 }
1239
1240 #(#cfg_attrs)*
1241 impl diesel::expression::ValidGrouping<()> for #column_name {
1242 type IsAggregate = diesel::expression::is_aggregate::No;
1243 }
1244
1245 #(#cfg_attrs)*
1246 impl<__GB, __F> diesel::expression::ValidGrouping<diesel::internal::table_macro::SubselectGroupBy<__GB, __F>> for #column_name
1247 where
1248 __F: diesel::query_source::AppearsInFromClause<super::#query_source_ident>,
1249 __F::Count: diesel::internal::table_macro::SubselectFieldGrouping<Self, __GB>,
1250 {
1251 type IsAggregate = <__F::Count as diesel::internal::table_macro::SubselectFieldGrouping<Self, __GB>>::IsAggregate;
1252 }
1253
1254 #(#cfg_attrs)*
1255 impl diesel::expression::IsContainedInGroupBy<#column_name> for #column_name {
1256 type Output = diesel::expression::is_contained_in_group_by::Yes;
1257 }
1258
1259
1260
1261 #(#cfg_attrs)*
1262 impl<T> diesel::EqAll<T> for #column_name where
1263 T: diesel::expression::AsExpression<#sql_type>,
1264 diesel::dsl::Eq<#column_name, T::Expression>: diesel::Expression<SqlType=diesel::sql_types::Bool>,
1265 {
1266 type Output = diesel::dsl::Eq<Self, T::Expression>;
1267
1268 fn eq_all(self, __diesel_internal_rhs: T) -> Self::Output {
1269 use diesel::expression_methods::ExpressionMethods;
1270 self.eq(__diesel_internal_rhs)
1271 }
1272 }
1273
1274 #max_length
1275
1276 #ops_impls
1277 #backend_specific_column_impl
1278 #table_specific_impls
1279 }
1280}
1281
1282#[cfg(test)]
1283mod helper_tests {
1284 use super::*;
1285
1286 #[test]
1287 fn cfg_combinations_zero_groups_yields_single_empty_vector() {
1288 let combos: Vec<Vec<bool>> = cfg_combinations(0).collect();
1289 assert_eq!(combos, vec![Vec::<bool>::new()]);
1290 }
1291
1292 #[test]
1293 fn cfg_combinations_enumerates_every_flag_vector() {
1294 let combos: Vec<Vec<bool>> = cfg_combinations(2).collect();
1295 assert_eq!(combos.len(), 4);
1296 assert!(combos.contains(&vec![false, false]));
1297 assert!(combos.contains(&vec![true, false]));
1298 assert!(combos.contains(&vec![false, true]));
1299 assert!(combos.contains(&vec![true, true]));
1300 }
1301
1302 #[test]
1303 fn combined_cfg_condition_is_empty_without_groups() {
1304 let condition = generate_combined_cfg_condition(&[], &[]);
1305 assert!(condition.is_empty());
1306 }
1307
1308 #[test]
1309 fn combined_cfg_condition_negates_disabled_groups() {
1310 let attr: syn::Attribute = parse_quote!(#[cfg(feature = "chrono")]);
1311 let group = CfgGroup {
1312 cfg_attrs: vec![&attr],
1313 columns: Vec::new(),
1314 };
1315
1316 let enabled = generate_combined_cfg_condition(std::slice::from_ref(&group), &[true]);
1317 assert_eq!(
1318 enabled.to_string(),
1319 quote::quote! { #[cfg(all(feature = "chrono"))] }.to_string()
1320 );
1321
1322 let disabled = generate_combined_cfg_condition(std::slice::from_ref(&group), &[false]);
1323 assert_eq!(
1324 disabled.to_string(),
1325 quote::quote! { #[cfg(all(not(feature = "chrono")))] }.to_string()
1326 );
1327 }
1328
1329 #[test]
1330 fn combined_cfg_condition_negates_the_conjunction_of_multiple_attrs() {
1331 let first: syn::Attribute = parse_quote!(#[cfg(feature = "x")]);
1332 let second: syn::Attribute = parse_quote!(#[cfg(feature = "y")]);
1333 let group = CfgGroup {
1334 cfg_attrs: vec![&first, &second],
1335 columns: Vec::new(),
1336 };
1337
1338 let enabled = generate_combined_cfg_condition(std::slice::from_ref(&group), &[true]);
1339 assert_eq!(
1340 enabled.to_string(),
1341 quote::quote! { #[cfg(all(feature = "x", feature = "y"))] }.to_string()
1342 );
1343
1344 let disabled = generate_combined_cfg_condition(std::slice::from_ref(&group), &[false]);
1345 assert_eq!(
1346 disabled.to_string(),
1347 quote::quote! { #[cfg(all(not(all(feature = "x", feature = "y"))))] }.to_string()
1348 );
1349 }
1350}