1#[cfg(not(feature = "std"))]
19use alloc::{boxed::Box, vec::Vec};
20
21use helpers::attached_token::AttachedToken;
22#[cfg(feature = "serde")]
23use serde::{Deserialize, Serialize};
24
25#[cfg(feature = "visitor")]
26use sqlparser_derive::{Visit, VisitMut};
27
28use crate::{
29 ast::*,
30 display_utils::{indented_list, SpaceOrNewline},
31 tokenizer::{Token, TokenWithSpan},
32};
33
34#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Query {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["with", "body", "order_by", "limit_clause", "fetch", "locks",
"for_clause", "settings", "format_clause",
"pipe_operators"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.with, &self.body, &self.order_by, &self.limit_clause,
&self.fetch, &self.locks, &self.for_clause, &self.settings,
&self.format_clause, &&self.pipe_operators];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Query", names,
values)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Query {
#[inline]
fn clone(&self) -> Query {
Query {
with: ::core::clone::Clone::clone(&self.with),
body: ::core::clone::Clone::clone(&self.body),
order_by: ::core::clone::Clone::clone(&self.order_by),
limit_clause: ::core::clone::Clone::clone(&self.limit_clause),
fetch: ::core::clone::Clone::clone(&self.fetch),
locks: ::core::clone::Clone::clone(&self.locks),
for_clause: ::core::clone::Clone::clone(&self.for_clause),
settings: ::core::clone::Clone::clone(&self.settings),
format_clause: ::core::clone::Clone::clone(&self.format_clause),
pipe_operators: ::core::clone::Clone::clone(&self.pipe_operators),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Query {
#[inline]
fn eq(&self, other: &Query) -> bool {
self.with == other.with && self.body == other.body &&
self.order_by == other.order_by &&
self.limit_clause == other.limit_clause &&
self.fetch == other.fetch && self.locks == other.locks &&
self.for_clause == other.for_clause &&
self.settings == other.settings &&
self.format_clause == other.format_clause &&
self.pipe_operators == other.pipe_operators
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Query {
#[inline]
fn partial_cmp(&self, other: &Query)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.with, &other.with) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.body,
&other.body) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.order_by,
&other.order_by) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.limit_clause,
&other.limit_clause) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.fetch,
&other.fetch) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.locks,
&other.locks) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.for_clause,
&other.for_clause) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.settings,
&other.settings) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.format_clause,
&other.format_clause) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.pipe_operators,
&other.pipe_operators),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for Query {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Option<With>>;
let _: ::core::cmp::AssertParamIsEq<Box<SetExpr>>;
let _: ::core::cmp::AssertParamIsEq<Option<OrderBy>>;
let _: ::core::cmp::AssertParamIsEq<Option<LimitClause>>;
let _: ::core::cmp::AssertParamIsEq<Option<Fetch>>;
let _: ::core::cmp::AssertParamIsEq<Vec<LockClause>>;
let _: ::core::cmp::AssertParamIsEq<Option<ForClause>>;
let _: ::core::cmp::AssertParamIsEq<Option<Vec<Setting>>>;
let _: ::core::cmp::AssertParamIsEq<Option<FormatClause>>;
let _: ::core::cmp::AssertParamIsEq<Vec<PipeOperator>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for Query {
#[inline]
fn cmp(&self, other: &Query) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.with, &other.with) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.body, &other.body) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.order_by, &other.order_by)
{
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.limit_clause,
&other.limit_clause) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.fetch, &other.fetch) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.locks, &other.locks) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.for_clause,
&other.for_clause) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.settings, &other.settings)
{
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.format_clause,
&other.format_clause) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.pipe_operators,
&other.pipe_operators),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Query {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.with, state);
::core::hash::Hash::hash(&self.body, state);
::core::hash::Hash::hash(&self.order_by, state);
::core::hash::Hash::hash(&self.limit_clause, state);
::core::hash::Hash::hash(&self.fetch, state);
::core::hash::Hash::hash(&self.locks, state);
::core::hash::Hash::hash(&self.for_clause, state);
::core::hash::Hash::hash(&self.settings, state);
::core::hash::Hash::hash(&self.format_clause, state);
::core::hash::Hash::hash(&self.pipe_operators, state)
}
}Hash)]
37#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
38#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for Query {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
visitor.pre_visit_query(self)?;
sqlparser::ast::Visit::visit(&self.with, visitor)?;
sqlparser::ast::Visit::visit(&self.body, visitor)?;
sqlparser::ast::Visit::visit(&self.order_by, visitor)?;
sqlparser::ast::Visit::visit(&self.limit_clause, visitor)?;
sqlparser::ast::Visit::visit(&self.fetch, visitor)?;
sqlparser::ast::Visit::visit(&self.locks, visitor)?;
sqlparser::ast::Visit::visit(&self.for_clause, visitor)?;
sqlparser::ast::Visit::visit(&self.settings, visitor)?;
sqlparser::ast::Visit::visit(&self.format_clause, visitor)?;
sqlparser::ast::Visit::visit(&self.pipe_operators,
visitor)?;
visitor.post_visit_query(self)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for Query {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
visitor.pre_visit_query(self)?;
sqlparser::ast::VisitMut::visit(&mut self.with, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.body, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.order_by,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.limit_clause,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.fetch, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.locks, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.for_clause,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.settings,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.format_clause,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.pipe_operators,
visitor)?;
visitor.post_visit_query(self)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
39#[cfg_attr(feature = "visitor", visit(with = "visit_query"))]
40pub struct Query {
41 pub with: Option<With>,
43 pub body: Box<SetExpr>,
45 pub order_by: Option<OrderBy>,
47 pub limit_clause: Option<LimitClause>,
49 pub fetch: Option<Fetch>,
51 pub locks: Vec<LockClause>,
53 pub for_clause: Option<ForClause>,
57 pub settings: Option<Vec<Setting>>,
61 pub format_clause: Option<FormatClause>,
66
67 pub pipe_operators: Vec<PipeOperator>,
69}
70
71impl fmt::Display for Query {
72 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
73 if let Some(ref with) = self.with {
74 with.fmt(f)?;
75 SpaceOrNewline.fmt(f)?;
76 }
77 self.body.fmt(f)?;
78 if let Some(ref order_by) = self.order_by {
79 f.write_str(" ")?;
80 order_by.fmt(f)?;
81 }
82
83 if let Some(ref limit_clause) = self.limit_clause {
84 limit_clause.fmt(f)?;
85 }
86 if let Some(ref settings) = self.settings {
87 f.write_str(" SETTINGS ")?;
88 display_comma_separated(settings).fmt(f)?;
89 }
90 if let Some(ref fetch) = self.fetch {
91 f.write_str(" ")?;
92 fetch.fmt(f)?;
93 }
94 if !self.locks.is_empty() {
95 f.write_str(" ")?;
96 display_separated(&self.locks, " ").fmt(f)?;
97 }
98 if let Some(ref for_clause) = self.for_clause {
99 f.write_str(" ")?;
100 for_clause.fmt(f)?;
101 }
102 if let Some(ref format) = self.format_clause {
103 f.write_str(" ")?;
104 format.fmt(f)?;
105 }
106 for pipe_operator in &self.pipe_operators {
107 f.write_str(" |> ")?;
108 pipe_operator.fmt(f)?;
109 }
110 Ok(())
111 }
112}
113
114#[derive(#[automatically_derived]
impl ::core::fmt::Debug for ProjectionSelect {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"ProjectionSelect", "projection", &self.projection, "order_by",
&self.order_by, "group_by", &&self.group_by)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for ProjectionSelect {
#[inline]
fn clone(&self) -> ProjectionSelect {
ProjectionSelect {
projection: ::core::clone::Clone::clone(&self.projection),
order_by: ::core::clone::Clone::clone(&self.order_by),
group_by: ::core::clone::Clone::clone(&self.group_by),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ProjectionSelect {
#[inline]
fn eq(&self, other: &ProjectionSelect) -> bool {
self.projection == other.projection && self.order_by == other.order_by
&& self.group_by == other.group_by
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ProjectionSelect {
#[inline]
fn partial_cmp(&self, other: &ProjectionSelect)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.projection,
&other.projection) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.order_by,
&other.order_by) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.group_by,
&other.group_by),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for ProjectionSelect {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Vec<SelectItem>>;
let _: ::core::cmp::AssertParamIsEq<Option<OrderBy>>;
let _: ::core::cmp::AssertParamIsEq<Option<GroupByExpr>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for ProjectionSelect {
#[inline]
fn cmp(&self, other: &ProjectionSelect) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.projection, &other.projection) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.order_by, &other.order_by) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.group_by, &other.group_by),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ProjectionSelect {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.projection, state);
::core::hash::Hash::hash(&self.order_by, state);
::core::hash::Hash::hash(&self.group_by, state)
}
}Hash)]
120#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
121#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for ProjectionSelect {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.projection, visitor)?;
sqlparser::ast::Visit::visit(&self.order_by, visitor)?;
sqlparser::ast::Visit::visit(&self.group_by, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for ProjectionSelect {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.projection,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.order_by,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.group_by,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
122pub struct ProjectionSelect {
123 pub projection: Vec<SelectItem>,
125 pub order_by: Option<OrderBy>,
127 pub group_by: Option<GroupByExpr>,
129}
130
131impl fmt::Display for ProjectionSelect {
132 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
133 f.write_fmt(format_args!("SELECT {0}",
display_comma_separated(&self.projection)))write!(f, "SELECT {}", display_comma_separated(&self.projection))?;
134 if let Some(ref group_by) = self.group_by {
135 f.write_fmt(format_args!(" {0}", group_by))write!(f, " {group_by}")?;
136 }
137 if let Some(ref order_by) = self.order_by {
138 f.write_fmt(format_args!(" {0}", order_by))write!(f, " {order_by}")?;
139 }
140 Ok(())
141 }
142}
143
144#[allow(clippy::large_enum_variant)]
147#[derive(#[automatically_derived]
#[allow(clippy::large_enum_variant)]
impl ::core::fmt::Debug for SetExpr {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
SetExpr::Select(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Select",
&__self_0),
SetExpr::Query(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Query",
&__self_0),
SetExpr::SetOperation {
op: __self_0,
set_quantifier: __self_1,
left: __self_2,
right: __self_3 } =>
::core::fmt::Formatter::debug_struct_field4_finish(f,
"SetOperation", "op", __self_0, "set_quantifier", __self_1,
"left", __self_2, "right", &__self_3),
SetExpr::Values(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Values",
&__self_0),
SetExpr::Insert(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Insert",
&__self_0),
SetExpr::Update(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Update",
&__self_0),
SetExpr::Delete(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Delete",
&__self_0),
SetExpr::Merge(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Merge",
&__self_0),
SetExpr::Table(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Table",
&__self_0),
}
}
}Debug, #[automatically_derived]
#[allow(clippy::large_enum_variant)]
impl ::core::clone::Clone for SetExpr {
#[inline]
fn clone(&self) -> SetExpr {
match self {
SetExpr::Select(__self_0) =>
SetExpr::Select(::core::clone::Clone::clone(__self_0)),
SetExpr::Query(__self_0) =>
SetExpr::Query(::core::clone::Clone::clone(__self_0)),
SetExpr::SetOperation {
op: __self_0,
set_quantifier: __self_1,
left: __self_2,
right: __self_3 } =>
SetExpr::SetOperation {
op: ::core::clone::Clone::clone(__self_0),
set_quantifier: ::core::clone::Clone::clone(__self_1),
left: ::core::clone::Clone::clone(__self_2),
right: ::core::clone::Clone::clone(__self_3),
},
SetExpr::Values(__self_0) =>
SetExpr::Values(::core::clone::Clone::clone(__self_0)),
SetExpr::Insert(__self_0) =>
SetExpr::Insert(::core::clone::Clone::clone(__self_0)),
SetExpr::Update(__self_0) =>
SetExpr::Update(::core::clone::Clone::clone(__self_0)),
SetExpr::Delete(__self_0) =>
SetExpr::Delete(::core::clone::Clone::clone(__self_0)),
SetExpr::Merge(__self_0) =>
SetExpr::Merge(::core::clone::Clone::clone(__self_0)),
SetExpr::Table(__self_0) =>
SetExpr::Table(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
#[allow(clippy::large_enum_variant)]
impl ::core::cmp::PartialEq for SetExpr {
#[inline]
fn eq(&self, other: &SetExpr) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(SetExpr::Select(__self_0), SetExpr::Select(__arg1_0)) =>
__self_0 == __arg1_0,
(SetExpr::Query(__self_0), SetExpr::Query(__arg1_0)) =>
__self_0 == __arg1_0,
(SetExpr::SetOperation {
op: __self_0,
set_quantifier: __self_1,
left: __self_2,
right: __self_3 }, SetExpr::SetOperation {
op: __arg1_0,
set_quantifier: __arg1_1,
left: __arg1_2,
right: __arg1_3 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3,
(SetExpr::Values(__self_0), SetExpr::Values(__arg1_0)) =>
__self_0 == __arg1_0,
(SetExpr::Insert(__self_0), SetExpr::Insert(__arg1_0)) =>
__self_0 == __arg1_0,
(SetExpr::Update(__self_0), SetExpr::Update(__arg1_0)) =>
__self_0 == __arg1_0,
(SetExpr::Delete(__self_0), SetExpr::Delete(__arg1_0)) =>
__self_0 == __arg1_0,
(SetExpr::Merge(__self_0), SetExpr::Merge(__arg1_0)) =>
__self_0 == __arg1_0,
(SetExpr::Table(__self_0), SetExpr::Table(__arg1_0)) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
#[allow(clippy::large_enum_variant)]
impl ::core::cmp::PartialOrd for SetExpr {
#[inline]
fn partial_cmp(&self, other: &SetExpr)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(SetExpr::Select(__self_0), SetExpr::Select(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(SetExpr::Query(__self_0), SetExpr::Query(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(SetExpr::SetOperation {
op: __self_0,
set_quantifier: __self_1,
left: __self_2,
right: __self_3 }, SetExpr::SetOperation {
op: __arg1_0,
set_quantifier: __arg1_1,
left: __arg1_2,
right: __arg1_3 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(SetExpr::Values(__self_0), SetExpr::Values(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(SetExpr::Insert(__self_0), SetExpr::Insert(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(SetExpr::Update(__self_0), SetExpr::Update(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(SetExpr::Delete(__self_0), SetExpr::Delete(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(SetExpr::Merge(__self_0), SetExpr::Merge(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(SetExpr::Table(__self_0), SetExpr::Table(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
#[allow(clippy::large_enum_variant)]
impl ::core::cmp::Eq for SetExpr {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Box<Select>>;
let _: ::core::cmp::AssertParamIsEq<Box<Query>>;
let _: ::core::cmp::AssertParamIsEq<SetOperator>;
let _: ::core::cmp::AssertParamIsEq<SetQuantifier>;
let _: ::core::cmp::AssertParamIsEq<Box<SetExpr>>;
let _: ::core::cmp::AssertParamIsEq<Box<SetExpr>>;
let _: ::core::cmp::AssertParamIsEq<Values>;
let _: ::core::cmp::AssertParamIsEq<Statement>;
let _: ::core::cmp::AssertParamIsEq<Box<Table>>;
}
}Eq, #[automatically_derived]
#[allow(clippy::large_enum_variant)]
impl ::core::cmp::Ord for SetExpr {
#[inline]
fn cmp(&self, other: &SetExpr) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(SetExpr::Select(__self_0), SetExpr::Select(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(SetExpr::Query(__self_0), SetExpr::Query(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(SetExpr::SetOperation {
op: __self_0,
set_quantifier: __self_1,
left: __self_2,
right: __self_3 }, SetExpr::SetOperation {
op: __arg1_0,
set_quantifier: __arg1_1,
left: __arg1_2,
right: __arg1_3 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(SetExpr::Values(__self_0), SetExpr::Values(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(SetExpr::Insert(__self_0), SetExpr::Insert(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(SetExpr::Update(__self_0), SetExpr::Update(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(SetExpr::Delete(__self_0), SetExpr::Delete(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(SetExpr::Merge(__self_0), SetExpr::Merge(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(SetExpr::Table(__self_0), SetExpr::Table(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
#[allow(clippy::large_enum_variant)]
impl ::core::hash::Hash for SetExpr {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
SetExpr::Select(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
SetExpr::Query(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
SetExpr::SetOperation {
op: __self_0,
set_quantifier: __self_1,
left: __self_2,
right: __self_3 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state)
}
SetExpr::Values(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
SetExpr::Insert(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
SetExpr::Update(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
SetExpr::Delete(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
SetExpr::Merge(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
SetExpr::Table(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash)]
148#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
149#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for SetExpr {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Select(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Query(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::SetOperation { op, set_quantifier, left, right } => {
sqlparser::ast::Visit::visit(op, visitor)?;
sqlparser::ast::Visit::visit(set_quantifier, visitor)?;
sqlparser::ast::Visit::visit(left, visitor)?;
sqlparser::ast::Visit::visit(right, visitor)?;
}
Self::Values(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Insert(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Update(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Delete(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Merge(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Table(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for SetExpr {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Select(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Query(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::SetOperation { op, set_quantifier, left, right } => {
sqlparser::ast::VisitMut::visit(op, visitor)?;
sqlparser::ast::VisitMut::visit(set_quantifier, visitor)?;
sqlparser::ast::VisitMut::visit(left, visitor)?;
sqlparser::ast::VisitMut::visit(right, visitor)?;
}
Self::Values(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Insert(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Update(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Delete(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Merge(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Table(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
150pub enum SetExpr {
151 Select(Box<Select>),
153 Query(Box<Query>),
156 SetOperation {
159 op: SetOperator,
161 set_quantifier: SetQuantifier,
163 left: Box<SetExpr>,
165 right: Box<SetExpr>,
167 },
168 Values(Values),
170 Insert(Statement),
172 Update(Statement),
174 Delete(Statement),
176 Merge(Statement),
178 Table(Box<Table>),
180}
181
182impl SetExpr {
183 pub fn as_select(&self) -> Option<&Select> {
185 if let Self::Select(select) = self {
186 Some(&**select)
187 } else {
188 None
189 }
190 }
191}
192
193impl fmt::Display for SetExpr {
194 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
195 match self {
196 SetExpr::Select(s) => s.fmt(f),
197 SetExpr::Query(q) => {
198 f.write_str("(")?;
199 q.fmt(f)?;
200 f.write_str(")")
201 }
202 SetExpr::Values(v) => v.fmt(f),
203 SetExpr::Insert(v) => v.fmt(f),
204 SetExpr::Update(v) => v.fmt(f),
205 SetExpr::Delete(v) => v.fmt(f),
206 SetExpr::Merge(v) => v.fmt(f),
207 SetExpr::Table(t) => t.fmt(f),
208 SetExpr::SetOperation {
209 left,
210 right,
211 op,
212 set_quantifier,
213 } => {
214 left.fmt(f)?;
215 SpaceOrNewline.fmt(f)?;
216 op.fmt(f)?;
217 match set_quantifier {
218 SetQuantifier::All
219 | SetQuantifier::Distinct
220 | SetQuantifier::ByName
221 | SetQuantifier::AllByName
222 | SetQuantifier::DistinctByName => {
223 f.write_str(" ")?;
224 set_quantifier.fmt(f)?;
225 }
226 SetQuantifier::None => {}
227 }
228 SpaceOrNewline.fmt(f)?;
229 right.fmt(f)?;
230 Ok(())
231 }
232 }
233 }
234}
235
236#[derive(#[automatically_derived]
impl ::core::fmt::Debug for SetOperator {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
SetOperator::Union => "Union",
SetOperator::Except => "Except",
SetOperator::Intersect => "Intersect",
SetOperator::Minus => "Minus",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::Copy for SetOperator { }Copy, #[automatically_derived]
impl ::core::clone::Clone for SetOperator {
#[inline]
fn clone(&self) -> SetOperator { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for SetOperator {
#[inline]
fn eq(&self, other: &SetOperator) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for SetOperator {
#[inline]
fn partial_cmp(&self, other: &SetOperator)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for SetOperator {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for SetOperator {
#[inline]
fn cmp(&self, other: &SetOperator) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for SetOperator {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
237#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
238#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for SetOperator {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Union => {}
Self::Except => {}
Self::Intersect => {}
Self::Minus => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for SetOperator {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Union => {}
Self::Except => {}
Self::Intersect => {}
Self::Minus => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
239pub enum SetOperator {
241 Union,
243 Except,
245 Intersect,
247 Minus,
249}
250
251impl fmt::Display for SetOperator {
252 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
253 f.write_str(match self {
254 SetOperator::Union => "UNION",
255 SetOperator::Except => "EXCEPT",
256 SetOperator::Intersect => "INTERSECT",
257 SetOperator::Minus => "MINUS",
258 })
259 }
260}
261
262#[derive(#[automatically_derived]
impl ::core::fmt::Debug for SetQuantifier {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
SetQuantifier::All => "All",
SetQuantifier::Distinct => "Distinct",
SetQuantifier::ByName => "ByName",
SetQuantifier::AllByName => "AllByName",
SetQuantifier::DistinctByName => "DistinctByName",
SetQuantifier::None => "None",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::Copy for SetQuantifier { }Copy, #[automatically_derived]
impl ::core::clone::Clone for SetQuantifier {
#[inline]
fn clone(&self) -> SetQuantifier { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for SetQuantifier {
#[inline]
fn eq(&self, other: &SetQuantifier) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for SetQuantifier {
#[inline]
fn partial_cmp(&self, other: &SetQuantifier)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for SetQuantifier {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for SetQuantifier {
#[inline]
fn cmp(&self, other: &SetQuantifier) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for SetQuantifier {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
266#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
267#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for SetQuantifier {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::All => {}
Self::Distinct => {}
Self::ByName => {}
Self::AllByName => {}
Self::DistinctByName => {}
Self::None => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for SetQuantifier {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::All => {}
Self::Distinct => {}
Self::ByName => {}
Self::AllByName => {}
Self::DistinctByName => {}
Self::None => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
268pub enum SetQuantifier {
269 All,
271 Distinct,
273 ByName,
275 AllByName,
277 DistinctByName,
279 None,
281}
282
283impl fmt::Display for SetQuantifier {
284 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
285 match self {
286 SetQuantifier::All => f.write_fmt(format_args!("ALL"))write!(f, "ALL"),
287 SetQuantifier::Distinct => f.write_fmt(format_args!("DISTINCT"))write!(f, "DISTINCT"),
288 SetQuantifier::ByName => f.write_fmt(format_args!("BY NAME"))write!(f, "BY NAME"),
289 SetQuantifier::AllByName => f.write_fmt(format_args!("ALL BY NAME"))write!(f, "ALL BY NAME"),
290 SetQuantifier::DistinctByName => f.write_fmt(format_args!("DISTINCT BY NAME"))write!(f, "DISTINCT BY NAME"),
291 SetQuantifier::None => Ok(()),
292 }
293 }
294}
295
296#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Table {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Table",
"table_name", &self.table_name, "schema_name", &&self.schema_name)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Table {
#[inline]
fn clone(&self) -> Table {
Table {
table_name: ::core::clone::Clone::clone(&self.table_name),
schema_name: ::core::clone::Clone::clone(&self.schema_name),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Table {
#[inline]
fn eq(&self, other: &Table) -> bool {
self.table_name == other.table_name &&
self.schema_name == other.schema_name
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Table {
#[inline]
fn partial_cmp(&self, other: &Table)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.table_name,
&other.table_name) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.schema_name,
&other.schema_name),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for Table {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Option<String>>;
let _: ::core::cmp::AssertParamIsEq<Option<String>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for Table {
#[inline]
fn cmp(&self, other: &Table) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.table_name, &other.table_name) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.schema_name, &other.schema_name),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Table {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.table_name, state);
::core::hash::Hash::hash(&self.schema_name, state)
}
}Hash)]
297#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
298#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for Table {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.table_name, visitor)?;
sqlparser::ast::Visit::visit(&self.schema_name, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for Table {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.table_name,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.schema_name,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
300pub struct Table {
302 pub table_name: Option<String>,
304 pub schema_name: Option<String>,
306}
307
308impl fmt::Display for Table {
309 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
310 if let Some(ref schema_name) = self.schema_name {
311 f.write_fmt(format_args!("TABLE {0}.{1}", schema_name,
self.table_name.as_ref().unwrap()))write!(
312 f,
313 "TABLE {}.{}",
314 schema_name,
315 self.table_name.as_ref().unwrap(),
316 )?;
317 } else {
318 f.write_fmt(format_args!("TABLE {0}", self.table_name.as_ref().unwrap()))write!(f, "TABLE {}", self.table_name.as_ref().unwrap(),)?;
319 }
320 Ok(())
321 }
322}
323
324#[derive(#[automatically_derived]
impl ::core::fmt::Debug for SelectFlavor {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
SelectFlavor::Standard => "Standard",
SelectFlavor::FromFirst => "FromFirst",
SelectFlavor::FromFirstNoSelect => "FromFirstNoSelect",
})
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for SelectFlavor {
#[inline]
fn clone(&self) -> SelectFlavor { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for SelectFlavor { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for SelectFlavor {
#[inline]
fn eq(&self, other: &SelectFlavor) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for SelectFlavor {
#[inline]
fn partial_cmp(&self, other: &SelectFlavor)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for SelectFlavor {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for SelectFlavor {
#[inline]
fn cmp(&self, other: &SelectFlavor) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for SelectFlavor {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
326#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
327#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for SelectFlavor {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Standard => {}
Self::FromFirst => {}
Self::FromFirstNoSelect => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for SelectFlavor {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Standard => {}
Self::FromFirst => {}
Self::FromFirstNoSelect => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
328pub enum SelectFlavor {
329 Standard,
331 FromFirst,
333 FromFirstNoSelect,
335}
336
337#[derive(#[automatically_derived]
impl ::core::fmt::Debug for SelectModifiers {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["high_priority", "straight_join", "sql_small_result",
"sql_big_result", "sql_buffer_result", "sql_no_cache",
"sql_calc_found_rows"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.high_priority, &self.straight_join,
&self.sql_small_result, &self.sql_big_result,
&self.sql_buffer_result, &self.sql_no_cache,
&&self.sql_calc_found_rows];
::core::fmt::Formatter::debug_struct_fields_finish(f,
"SelectModifiers", names, values)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for SelectModifiers {
#[inline]
fn clone(&self) -> SelectModifiers {
SelectModifiers {
high_priority: ::core::clone::Clone::clone(&self.high_priority),
straight_join: ::core::clone::Clone::clone(&self.straight_join),
sql_small_result: ::core::clone::Clone::clone(&self.sql_small_result),
sql_big_result: ::core::clone::Clone::clone(&self.sql_big_result),
sql_buffer_result: ::core::clone::Clone::clone(&self.sql_buffer_result),
sql_no_cache: ::core::clone::Clone::clone(&self.sql_no_cache),
sql_calc_found_rows: ::core::clone::Clone::clone(&self.sql_calc_found_rows),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for SelectModifiers {
#[inline]
fn eq(&self, other: &SelectModifiers) -> bool {
self.high_priority == other.high_priority &&
self.straight_join == other.straight_join &&
self.sql_small_result == other.sql_small_result &&
self.sql_big_result == other.sql_big_result &&
self.sql_buffer_result == other.sql_buffer_result &&
self.sql_no_cache == other.sql_no_cache &&
self.sql_calc_found_rows == other.sql_calc_found_rows
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for SelectModifiers {
#[inline]
fn partial_cmp(&self, other: &SelectModifiers)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.high_priority,
&other.high_priority) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.straight_join,
&other.straight_join) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.sql_small_result,
&other.sql_small_result) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.sql_big_result,
&other.sql_big_result) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.sql_buffer_result,
&other.sql_buffer_result) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.sql_no_cache,
&other.sql_no_cache) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.sql_calc_found_rows,
&other.sql_calc_found_rows),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for SelectModifiers {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<bool>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for SelectModifiers {
#[inline]
fn cmp(&self, other: &SelectModifiers) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.high_priority, &other.high_priority)
{
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.straight_join,
&other.straight_join) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.sql_small_result,
&other.sql_small_result) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.sql_big_result,
&other.sql_big_result) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.sql_buffer_result,
&other.sql_buffer_result) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.sql_no_cache,
&other.sql_no_cache) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.sql_calc_found_rows,
&other.sql_calc_found_rows),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for SelectModifiers {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.high_priority, state);
::core::hash::Hash::hash(&self.straight_join, state);
::core::hash::Hash::hash(&self.sql_small_result, state);
::core::hash::Hash::hash(&self.sql_big_result, state);
::core::hash::Hash::hash(&self.sql_buffer_result, state);
::core::hash::Hash::hash(&self.sql_no_cache, state);
::core::hash::Hash::hash(&self.sql_calc_found_rows, state)
}
}Hash, #[automatically_derived]
impl ::core::default::Default for SelectModifiers {
#[inline]
fn default() -> SelectModifiers {
SelectModifiers {
high_priority: ::core::default::Default::default(),
straight_join: ::core::default::Default::default(),
sql_small_result: ::core::default::Default::default(),
sql_big_result: ::core::default::Default::default(),
sql_buffer_result: ::core::default::Default::default(),
sql_no_cache: ::core::default::Default::default(),
sql_calc_found_rows: ::core::default::Default::default(),
}
}
}Default)]
355#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
356#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for SelectModifiers {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.high_priority, visitor)?;
sqlparser::ast::Visit::visit(&self.straight_join, visitor)?;
sqlparser::ast::Visit::visit(&self.sql_small_result,
visitor)?;
sqlparser::ast::Visit::visit(&self.sql_big_result,
visitor)?;
sqlparser::ast::Visit::visit(&self.sql_buffer_result,
visitor)?;
sqlparser::ast::Visit::visit(&self.sql_no_cache, visitor)?;
sqlparser::ast::Visit::visit(&self.sql_calc_found_rows,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for SelectModifiers {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.high_priority,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.straight_join,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.sql_small_result,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.sql_big_result,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.sql_buffer_result,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.sql_no_cache,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.sql_calc_found_rows,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
357pub struct SelectModifiers {
358 pub high_priority: bool,
362 pub straight_join: bool,
366 pub sql_small_result: bool,
370 pub sql_big_result: bool,
374 pub sql_buffer_result: bool,
378 pub sql_no_cache: bool,
382 pub sql_calc_found_rows: bool,
387}
388
389impl fmt::Display for SelectModifiers {
390 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
391 if self.high_priority {
392 f.write_str(" HIGH_PRIORITY")?;
393 }
394 if self.straight_join {
395 f.write_str(" STRAIGHT_JOIN")?;
396 }
397 if self.sql_small_result {
398 f.write_str(" SQL_SMALL_RESULT")?;
399 }
400 if self.sql_big_result {
401 f.write_str(" SQL_BIG_RESULT")?;
402 }
403 if self.sql_buffer_result {
404 f.write_str(" SQL_BUFFER_RESULT")?;
405 }
406 if self.sql_no_cache {
407 f.write_str(" SQL_NO_CACHE")?;
408 }
409 if self.sql_calc_found_rows {
410 f.write_str(" SQL_CALC_FOUND_ROWS")?;
411 }
412 Ok(())
413 }
414}
415
416impl SelectModifiers {
417 pub fn is_any_set(&self) -> bool {
419 let Self {
421 high_priority,
422 straight_join,
423 sql_small_result,
424 sql_big_result,
425 sql_buffer_result,
426 sql_no_cache,
427 sql_calc_found_rows,
428 } = self;
429 *high_priority
430 || *straight_join
431 || *sql_small_result
432 || *sql_big_result
433 || *sql_buffer_result
434 || *sql_no_cache
435 || *sql_calc_found_rows
436 }
437}
438
439#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Select {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["select_token", "optimizer_hint", "distinct",
"select_modifiers", "top", "top_before_distinct",
"projection", "exclude", "into", "from", "lateral_views",
"prewhere", "selection", "connect_by", "group_by",
"cluster_by", "distribute_by", "sort_by", "having",
"named_window", "qualify", "window_before_qualify",
"value_table_mode", "flavor"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.select_token, &self.optimizer_hint, &self.distinct,
&self.select_modifiers, &self.top,
&self.top_before_distinct, &self.projection, &self.exclude,
&self.into, &self.from, &self.lateral_views, &self.prewhere,
&self.selection, &self.connect_by, &self.group_by,
&self.cluster_by, &self.distribute_by, &self.sort_by,
&self.having, &self.named_window, &self.qualify,
&self.window_before_qualify, &self.value_table_mode,
&&self.flavor];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Select", names,
values)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Select {
#[inline]
fn clone(&self) -> Select {
Select {
select_token: ::core::clone::Clone::clone(&self.select_token),
optimizer_hint: ::core::clone::Clone::clone(&self.optimizer_hint),
distinct: ::core::clone::Clone::clone(&self.distinct),
select_modifiers: ::core::clone::Clone::clone(&self.select_modifiers),
top: ::core::clone::Clone::clone(&self.top),
top_before_distinct: ::core::clone::Clone::clone(&self.top_before_distinct),
projection: ::core::clone::Clone::clone(&self.projection),
exclude: ::core::clone::Clone::clone(&self.exclude),
into: ::core::clone::Clone::clone(&self.into),
from: ::core::clone::Clone::clone(&self.from),
lateral_views: ::core::clone::Clone::clone(&self.lateral_views),
prewhere: ::core::clone::Clone::clone(&self.prewhere),
selection: ::core::clone::Clone::clone(&self.selection),
connect_by: ::core::clone::Clone::clone(&self.connect_by),
group_by: ::core::clone::Clone::clone(&self.group_by),
cluster_by: ::core::clone::Clone::clone(&self.cluster_by),
distribute_by: ::core::clone::Clone::clone(&self.distribute_by),
sort_by: ::core::clone::Clone::clone(&self.sort_by),
having: ::core::clone::Clone::clone(&self.having),
named_window: ::core::clone::Clone::clone(&self.named_window),
qualify: ::core::clone::Clone::clone(&self.qualify),
window_before_qualify: ::core::clone::Clone::clone(&self.window_before_qualify),
value_table_mode: ::core::clone::Clone::clone(&self.value_table_mode),
flavor: ::core::clone::Clone::clone(&self.flavor),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Select {
#[inline]
fn eq(&self, other: &Select) -> bool {
self.top_before_distinct == other.top_before_distinct &&
self.window_before_qualify == other.window_before_qualify &&
self.select_token == other.select_token &&
self.optimizer_hint == other.optimizer_hint &&
self.distinct == other.distinct &&
self.select_modifiers == other.select_modifiers &&
self.top == other.top && self.projection == other.projection
&& self.exclude == other.exclude && self.into == other.into
&& self.from == other.from &&
self.lateral_views == other.lateral_views &&
self.prewhere == other.prewhere &&
self.selection == other.selection &&
self.connect_by == other.connect_by &&
self.group_by == other.group_by &&
self.cluster_by == other.cluster_by &&
self.distribute_by == other.distribute_by &&
self.sort_by == other.sort_by && self.having == other.having
&& self.named_window == other.named_window &&
self.qualify == other.qualify &&
self.value_table_mode == other.value_table_mode &&
self.flavor == other.flavor
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Select {
#[inline]
fn partial_cmp(&self, other: &Select)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.select_token,
&other.select_token) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.optimizer_hint,
&other.optimizer_hint) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.distinct,
&other.distinct) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.select_modifiers,
&other.select_modifiers) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.top,
&other.top) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.top_before_distinct,
&other.top_before_distinct) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.projection,
&other.projection) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.exclude,
&other.exclude) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.into,
&other.into) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.from,
&other.from) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.lateral_views,
&other.lateral_views) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.prewhere,
&other.prewhere) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.selection,
&other.selection) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.connect_by,
&other.connect_by) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.group_by,
&other.group_by) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.cluster_by,
&other.cluster_by) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.distribute_by,
&other.distribute_by) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.sort_by,
&other.sort_by) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.having,
&other.having) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.named_window,
&other.named_window) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.qualify,
&other.qualify) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.window_before_qualify,
&other.window_before_qualify) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.value_table_mode,
&other.value_table_mode) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.flavor,
&other.flavor),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for Select {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<AttachedToken>;
let _: ::core::cmp::AssertParamIsEq<Option<OptimizerHint>>;
let _: ::core::cmp::AssertParamIsEq<Option<Distinct>>;
let _: ::core::cmp::AssertParamIsEq<Option<SelectModifiers>>;
let _: ::core::cmp::AssertParamIsEq<Option<Top>>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<Vec<SelectItem>>;
let _: ::core::cmp::AssertParamIsEq<Option<ExcludeSelectItem>>;
let _: ::core::cmp::AssertParamIsEq<Option<SelectInto>>;
let _: ::core::cmp::AssertParamIsEq<Vec<TableWithJoins>>;
let _: ::core::cmp::AssertParamIsEq<Vec<LateralView>>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Vec<ConnectByKind>>;
let _: ::core::cmp::AssertParamIsEq<GroupByExpr>;
let _: ::core::cmp::AssertParamIsEq<Vec<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Vec<OrderByExpr>>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Vec<NamedWindowDefinition>>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Option<ValueTableMode>>;
let _: ::core::cmp::AssertParamIsEq<SelectFlavor>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for Select {
#[inline]
fn cmp(&self, other: &Select) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.select_token, &other.select_token) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.optimizer_hint,
&other.optimizer_hint) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.distinct, &other.distinct)
{
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.select_modifiers,
&other.select_modifiers) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.top, &other.top) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.top_before_distinct,
&other.top_before_distinct) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.projection,
&other.projection) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.exclude, &other.exclude) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.into, &other.into) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.from, &other.from) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.lateral_views,
&other.lateral_views) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.prewhere, &other.prewhere)
{
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.selection,
&other.selection) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.connect_by,
&other.connect_by) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.group_by, &other.group_by)
{
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.cluster_by,
&other.cluster_by) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.distribute_by,
&other.distribute_by) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.sort_by, &other.sort_by) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.having, &other.having) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.named_window,
&other.named_window) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.qualify, &other.qualify) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.window_before_qualify,
&other.window_before_qualify) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.value_table_mode,
&other.value_table_mode) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.flavor, &other.flavor),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Select {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.select_token, state);
::core::hash::Hash::hash(&self.optimizer_hint, state);
::core::hash::Hash::hash(&self.distinct, state);
::core::hash::Hash::hash(&self.select_modifiers, state);
::core::hash::Hash::hash(&self.top, state);
::core::hash::Hash::hash(&self.top_before_distinct, state);
::core::hash::Hash::hash(&self.projection, state);
::core::hash::Hash::hash(&self.exclude, state);
::core::hash::Hash::hash(&self.into, state);
::core::hash::Hash::hash(&self.from, state);
::core::hash::Hash::hash(&self.lateral_views, state);
::core::hash::Hash::hash(&self.prewhere, state);
::core::hash::Hash::hash(&self.selection, state);
::core::hash::Hash::hash(&self.connect_by, state);
::core::hash::Hash::hash(&self.group_by, state);
::core::hash::Hash::hash(&self.cluster_by, state);
::core::hash::Hash::hash(&self.distribute_by, state);
::core::hash::Hash::hash(&self.sort_by, state);
::core::hash::Hash::hash(&self.having, state);
::core::hash::Hash::hash(&self.named_window, state);
::core::hash::Hash::hash(&self.qualify, state);
::core::hash::Hash::hash(&self.window_before_qualify, state);
::core::hash::Hash::hash(&self.value_table_mode, state);
::core::hash::Hash::hash(&self.flavor, state)
}
}Hash)]
443#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
444#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for Select {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.select_token, visitor)?;
sqlparser::ast::Visit::visit(&self.optimizer_hint,
visitor)?;
sqlparser::ast::Visit::visit(&self.distinct, visitor)?;
sqlparser::ast::Visit::visit(&self.select_modifiers,
visitor)?;
sqlparser::ast::Visit::visit(&self.top, visitor)?;
sqlparser::ast::Visit::visit(&self.top_before_distinct,
visitor)?;
sqlparser::ast::Visit::visit(&self.projection, visitor)?;
sqlparser::ast::Visit::visit(&self.exclude, visitor)?;
sqlparser::ast::Visit::visit(&self.into, visitor)?;
sqlparser::ast::Visit::visit(&self.from, visitor)?;
sqlparser::ast::Visit::visit(&self.lateral_views, visitor)?;
sqlparser::ast::Visit::visit(&self.prewhere, visitor)?;
sqlparser::ast::Visit::visit(&self.selection, visitor)?;
sqlparser::ast::Visit::visit(&self.connect_by, visitor)?;
sqlparser::ast::Visit::visit(&self.group_by, visitor)?;
sqlparser::ast::Visit::visit(&self.cluster_by, visitor)?;
sqlparser::ast::Visit::visit(&self.distribute_by, visitor)?;
sqlparser::ast::Visit::visit(&self.sort_by, visitor)?;
sqlparser::ast::Visit::visit(&self.having, visitor)?;
sqlparser::ast::Visit::visit(&self.named_window, visitor)?;
sqlparser::ast::Visit::visit(&self.qualify, visitor)?;
sqlparser::ast::Visit::visit(&self.window_before_qualify,
visitor)?;
sqlparser::ast::Visit::visit(&self.value_table_mode,
visitor)?;
sqlparser::ast::Visit::visit(&self.flavor, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for Select {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.select_token,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.optimizer_hint,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.distinct,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.select_modifiers,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.top, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.top_before_distinct,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.projection,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.exclude,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.into, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.from, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.lateral_views,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.prewhere,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.selection,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.connect_by,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.group_by,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.cluster_by,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.distribute_by,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.sort_by,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.having, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.named_window,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.qualify,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.window_before_qualify,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.value_table_mode,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.flavor, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
445pub struct Select {
446 pub select_token: AttachedToken,
448 pub optimizer_hint: Option<OptimizerHint>,
453 pub distinct: Option<Distinct>,
455 pub select_modifiers: Option<SelectModifiers>,
459 pub top: Option<Top>,
461 pub top_before_distinct: bool,
463 pub projection: Vec<SelectItem>,
465 pub exclude: Option<ExcludeSelectItem>,
470 pub into: Option<SelectInto>,
472 pub from: Vec<TableWithJoins>,
474 pub lateral_views: Vec<LateralView>,
476 pub prewhere: Option<Expr>,
481 pub selection: Option<Expr>,
483 pub connect_by: Vec<ConnectByKind>,
485 pub group_by: GroupByExpr,
487 pub cluster_by: Vec<Expr>,
489 pub distribute_by: Vec<Expr>,
491 pub sort_by: Vec<OrderByExpr>,
493 pub having: Option<Expr>,
495 pub named_window: Vec<NamedWindowDefinition>,
497 pub qualify: Option<Expr>,
499 pub window_before_qualify: bool,
504 pub value_table_mode: Option<ValueTableMode>,
506 pub flavor: SelectFlavor,
508}
509
510impl fmt::Display for Select {
511 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
512 match self.flavor {
513 SelectFlavor::Standard => {
514 f.write_fmt(format_args!("SELECT"))write!(f, "SELECT")?;
515 }
516 SelectFlavor::FromFirst => {
517 f.write_fmt(format_args!("FROM {0} SELECT",
display_comma_separated(&self.from)))write!(f, "FROM {} SELECT", display_comma_separated(&self.from))?;
518 }
519 SelectFlavor::FromFirstNoSelect => {
520 f.write_fmt(format_args!("FROM {0}", display_comma_separated(&self.from)))write!(f, "FROM {}", display_comma_separated(&self.from))?;
521 }
522 }
523
524 if let Some(hint) = self.optimizer_hint.as_ref() {
525 f.write_str(" ")?;
526 hint.fmt(f)?;
527 }
528
529 if let Some(value_table_mode) = self.value_table_mode {
530 f.write_str(" ")?;
531 value_table_mode.fmt(f)?;
532 }
533
534 if let Some(ref top) = self.top {
535 if self.top_before_distinct {
536 f.write_str(" ")?;
537 top.fmt(f)?;
538 }
539 }
540 if let Some(ref distinct) = self.distinct {
541 f.write_str(" ")?;
542 distinct.fmt(f)?;
543 }
544 if let Some(ref top) = self.top {
545 if !self.top_before_distinct {
546 f.write_str(" ")?;
547 top.fmt(f)?;
548 }
549 }
550
551 if let Some(ref select_modifiers) = self.select_modifiers {
552 select_modifiers.fmt(f)?;
553 }
554
555 if !self.projection.is_empty() {
556 indented_list(f, &self.projection)?;
557 }
558
559 if let Some(exclude) = &self.exclude {
560 f.write_fmt(format_args!(" {0}", exclude))write!(f, " {exclude}")?;
561 }
562
563 if let Some(ref into) = self.into {
564 f.write_str(" ")?;
565 into.fmt(f)?;
566 }
567
568 if self.flavor == SelectFlavor::Standard && !self.from.is_empty() {
569 SpaceOrNewline.fmt(f)?;
570 f.write_str("FROM")?;
571 indented_list(f, &self.from)?;
572 }
573 if !self.lateral_views.is_empty() {
574 for lv in &self.lateral_views {
575 lv.fmt(f)?;
576 }
577 }
578 if let Some(ref prewhere) = self.prewhere {
579 f.write_str(" PREWHERE ")?;
580 prewhere.fmt(f)?;
581 }
582 if let Some(ref selection) = self.selection {
583 SpaceOrNewline.fmt(f)?;
584 f.write_str("WHERE")?;
585 SpaceOrNewline.fmt(f)?;
586 Indent(selection).fmt(f)?;
587 }
588 for clause in &self.connect_by {
589 SpaceOrNewline.fmt(f)?;
590 clause.fmt(f)?;
591 }
592 match &self.group_by {
593 GroupByExpr::All(_) => {
594 SpaceOrNewline.fmt(f)?;
595 self.group_by.fmt(f)?;
596 }
597 GroupByExpr::Expressions(exprs, _) => {
598 if !exprs.is_empty() {
599 SpaceOrNewline.fmt(f)?;
600 self.group_by.fmt(f)?;
601 }
602 }
603 }
604 if !self.cluster_by.is_empty() {
605 SpaceOrNewline.fmt(f)?;
606 f.write_str("CLUSTER BY")?;
607 SpaceOrNewline.fmt(f)?;
608 Indent(display_comma_separated(&self.cluster_by)).fmt(f)?;
609 }
610 if !self.distribute_by.is_empty() {
611 SpaceOrNewline.fmt(f)?;
612 f.write_str("DISTRIBUTE BY")?;
613 SpaceOrNewline.fmt(f)?;
614 display_comma_separated(&self.distribute_by).fmt(f)?;
615 }
616 if !self.sort_by.is_empty() {
617 SpaceOrNewline.fmt(f)?;
618 f.write_str("SORT BY")?;
619 SpaceOrNewline.fmt(f)?;
620 Indent(display_comma_separated(&self.sort_by)).fmt(f)?;
621 }
622 if let Some(ref having) = self.having {
623 SpaceOrNewline.fmt(f)?;
624 f.write_str("HAVING")?;
625 SpaceOrNewline.fmt(f)?;
626 Indent(having).fmt(f)?;
627 }
628 if self.window_before_qualify {
629 if !self.named_window.is_empty() {
630 SpaceOrNewline.fmt(f)?;
631 f.write_str("WINDOW")?;
632 SpaceOrNewline.fmt(f)?;
633 display_comma_separated(&self.named_window).fmt(f)?;
634 }
635 if let Some(ref qualify) = self.qualify {
636 SpaceOrNewline.fmt(f)?;
637 f.write_str("QUALIFY")?;
638 SpaceOrNewline.fmt(f)?;
639 qualify.fmt(f)?;
640 }
641 } else {
642 if let Some(ref qualify) = self.qualify {
643 SpaceOrNewline.fmt(f)?;
644 f.write_str("QUALIFY")?;
645 SpaceOrNewline.fmt(f)?;
646 qualify.fmt(f)?;
647 }
648 if !self.named_window.is_empty() {
649 SpaceOrNewline.fmt(f)?;
650 f.write_str("WINDOW")?;
651 SpaceOrNewline.fmt(f)?;
652 display_comma_separated(&self.named_window).fmt(f)?;
653 }
654 }
655 Ok(())
656 }
657}
658
659#[derive(#[automatically_derived]
impl ::core::fmt::Debug for LateralView {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "LateralView",
"lateral_view", &self.lateral_view, "lateral_view_name",
&self.lateral_view_name, "lateral_col_alias",
&self.lateral_col_alias, "outer", &&self.outer)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for LateralView {
#[inline]
fn clone(&self) -> LateralView {
LateralView {
lateral_view: ::core::clone::Clone::clone(&self.lateral_view),
lateral_view_name: ::core::clone::Clone::clone(&self.lateral_view_name),
lateral_col_alias: ::core::clone::Clone::clone(&self.lateral_col_alias),
outer: ::core::clone::Clone::clone(&self.outer),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for LateralView {
#[inline]
fn eq(&self, other: &LateralView) -> bool {
self.outer == other.outer && self.lateral_view == other.lateral_view
&& self.lateral_view_name == other.lateral_view_name &&
self.lateral_col_alias == other.lateral_col_alias
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for LateralView {
#[inline]
fn partial_cmp(&self, other: &LateralView)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.lateral_view,
&other.lateral_view) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.lateral_view_name,
&other.lateral_view_name) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.lateral_col_alias,
&other.lateral_col_alias) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.outer,
&other.outer),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for LateralView {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Expr>;
let _: ::core::cmp::AssertParamIsEq<ObjectName>;
let _: ::core::cmp::AssertParamIsEq<Vec<Ident>>;
let _: ::core::cmp::AssertParamIsEq<bool>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for LateralView {
#[inline]
fn cmp(&self, other: &LateralView) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.lateral_view, &other.lateral_view) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.lateral_view_name,
&other.lateral_view_name) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.lateral_col_alias,
&other.lateral_col_alias) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.outer, &other.outer),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for LateralView {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.lateral_view, state);
::core::hash::Hash::hash(&self.lateral_view_name, state);
::core::hash::Hash::hash(&self.lateral_col_alias, state);
::core::hash::Hash::hash(&self.outer, state)
}
}Hash)]
661#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
662#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for LateralView {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.lateral_view, visitor)?;
sqlparser::ast::Visit::visit(&self.lateral_view_name,
visitor)?;
sqlparser::ast::Visit::visit(&self.lateral_col_alias,
visitor)?;
sqlparser::ast::Visit::visit(&self.outer, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for LateralView {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.lateral_view,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.lateral_view_name,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.lateral_col_alias,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.outer, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
663pub struct LateralView {
664 pub lateral_view: Expr,
666 pub lateral_view_name: ObjectName,
668 pub lateral_col_alias: Vec<Ident>,
670 pub outer: bool,
672}
673
674impl fmt::Display for LateralView {
675 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
676 f.write_fmt(format_args!(" LATERAL VIEW{2} {0} {1}", self.lateral_view,
self.lateral_view_name, if self.outer { " OUTER" } else { "" }))write!(
677 f,
678 " LATERAL VIEW{outer} {} {}",
679 self.lateral_view,
680 self.lateral_view_name,
681 outer = if self.outer { " OUTER" } else { "" }
682 )?;
683 if !self.lateral_col_alias.is_empty() {
684 f.write_fmt(format_args!(" AS {0}",
display_comma_separated(&self.lateral_col_alias)))write!(
685 f,
686 " AS {}",
687 display_comma_separated(&self.lateral_col_alias)
688 )?;
689 }
690 Ok(())
691 }
692}
693
694#[derive(#[automatically_derived]
impl ::core::fmt::Debug for NamedWindowExpr {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
NamedWindowExpr::NamedWindow(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"NamedWindow", &__self_0),
NamedWindowExpr::WindowSpec(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"WindowSpec", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for NamedWindowExpr {
#[inline]
fn clone(&self) -> NamedWindowExpr {
match self {
NamedWindowExpr::NamedWindow(__self_0) =>
NamedWindowExpr::NamedWindow(::core::clone::Clone::clone(__self_0)),
NamedWindowExpr::WindowSpec(__self_0) =>
NamedWindowExpr::WindowSpec(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for NamedWindowExpr {
#[inline]
fn eq(&self, other: &NamedWindowExpr) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(NamedWindowExpr::NamedWindow(__self_0),
NamedWindowExpr::NamedWindow(__arg1_0)) =>
__self_0 == __arg1_0,
(NamedWindowExpr::WindowSpec(__self_0),
NamedWindowExpr::WindowSpec(__arg1_0)) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for NamedWindowExpr {
#[inline]
fn partial_cmp(&self, other: &NamedWindowExpr)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(NamedWindowExpr::NamedWindow(__self_0),
NamedWindowExpr::NamedWindow(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(NamedWindowExpr::WindowSpec(__self_0),
NamedWindowExpr::WindowSpec(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for NamedWindowExpr {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<WindowSpec>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for NamedWindowExpr {
#[inline]
fn cmp(&self, other: &NamedWindowExpr) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(NamedWindowExpr::NamedWindow(__self_0),
NamedWindowExpr::NamedWindow(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(NamedWindowExpr::WindowSpec(__self_0),
NamedWindowExpr::WindowSpec(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for NamedWindowExpr {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
NamedWindowExpr::NamedWindow(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
NamedWindowExpr::WindowSpec(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash)]
700#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
701#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for NamedWindowExpr {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::NamedWindow(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::WindowSpec(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for NamedWindowExpr {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::NamedWindow(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::WindowSpec(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
702pub enum NamedWindowExpr {
703 NamedWindow(Ident),
713 WindowSpec(WindowSpec),
720}
721
722impl fmt::Display for NamedWindowExpr {
723 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
724 match self {
725 NamedWindowExpr::NamedWindow(named_window) => {
726 f.write_fmt(format_args!("{0}", named_window))write!(f, "{named_window}")?;
727 }
728 NamedWindowExpr::WindowSpec(window_spec) => {
729 f.write_fmt(format_args!("({0})", window_spec))write!(f, "({window_spec})")?;
730 }
731 };
732 Ok(())
733 }
734}
735
736#[derive(#[automatically_derived]
impl ::core::fmt::Debug for NamedWindowDefinition {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"NamedWindowDefinition", &self.0, &&self.1)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for NamedWindowDefinition {
#[inline]
fn clone(&self) -> NamedWindowDefinition {
NamedWindowDefinition(::core::clone::Clone::clone(&self.0),
::core::clone::Clone::clone(&self.1))
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for NamedWindowDefinition {
#[inline]
fn eq(&self, other: &NamedWindowDefinition) -> bool {
self.0 == other.0 && self.1 == other.1
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for NamedWindowDefinition {
#[inline]
fn partial_cmp(&self, other: &NamedWindowDefinition)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.1, &other.1),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for NamedWindowDefinition {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<NamedWindowExpr>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for NamedWindowDefinition {
#[inline]
fn cmp(&self, other: &NamedWindowDefinition) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.0, &other.0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.1, &other.1),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for NamedWindowDefinition {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.0, state);
::core::hash::Hash::hash(&self.1, state)
}
}Hash)]
737#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
738#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for NamedWindowDefinition {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.0, visitor)?;
sqlparser::ast::Visit::visit(&self.1, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for NamedWindowDefinition {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.0, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.1, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
739pub struct NamedWindowDefinition(pub Ident, pub NamedWindowExpr);
741
742impl fmt::Display for NamedWindowDefinition {
743 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
744 f.write_fmt(format_args!("{0} AS {1}", self.0, self.1))write!(f, "{} AS {}", self.0, self.1)
745 }
746}
747
748#[derive(#[automatically_derived]
impl ::core::fmt::Debug for With {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "With",
"with_token", &self.with_token, "recursive", &self.recursive,
"cte_tables", &&self.cte_tables)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for With {
#[inline]
fn clone(&self) -> With {
With {
with_token: ::core::clone::Clone::clone(&self.with_token),
recursive: ::core::clone::Clone::clone(&self.recursive),
cte_tables: ::core::clone::Clone::clone(&self.cte_tables),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for With {
#[inline]
fn eq(&self, other: &With) -> bool {
self.recursive == other.recursive &&
self.with_token == other.with_token &&
self.cte_tables == other.cte_tables
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for With {
#[inline]
fn partial_cmp(&self, other: &With)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.with_token,
&other.with_token) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.recursive,
&other.recursive) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.cte_tables,
&other.cte_tables),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for With {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<AttachedToken>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<Vec<Cte>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for With {
#[inline]
fn cmp(&self, other: &With) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.with_token, &other.with_token) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.recursive, &other.recursive)
{
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.cte_tables, &other.cte_tables),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for With {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.with_token, state);
::core::hash::Hash::hash(&self.recursive, state);
::core::hash::Hash::hash(&self.cte_tables, state)
}
}Hash)]
749#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
750#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for With {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.with_token, visitor)?;
sqlparser::ast::Visit::visit(&self.recursive, visitor)?;
sqlparser::ast::Visit::visit(&self.cte_tables, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for With {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.with_token,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.recursive,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.cte_tables,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
751pub struct With {
753 pub with_token: AttachedToken,
755 pub recursive: bool,
757 pub cte_tables: Vec<Cte>,
759}
760
761impl fmt::Display for With {
762 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
763 f.write_str("WITH ")?;
764 if self.recursive {
765 f.write_str("RECURSIVE ")?;
766 }
767 display_comma_separated(&self.cte_tables).fmt(f)?;
768 Ok(())
769 }
770}
771
772#[derive(#[automatically_derived]
impl ::core::fmt::Debug for CteAsMaterialized {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
CteAsMaterialized::Materialized => "Materialized",
CteAsMaterialized::NotMaterialized => "NotMaterialized",
})
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for CteAsMaterialized {
#[inline]
fn clone(&self) -> CteAsMaterialized { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for CteAsMaterialized { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for CteAsMaterialized {
#[inline]
fn eq(&self, other: &CteAsMaterialized) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for CteAsMaterialized {
#[inline]
fn partial_cmp(&self, other: &CteAsMaterialized)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for CteAsMaterialized {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for CteAsMaterialized {
#[inline]
fn cmp(&self, other: &CteAsMaterialized) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for CteAsMaterialized {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
773#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
774#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for CteAsMaterialized {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Materialized => {}
Self::NotMaterialized => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for CteAsMaterialized {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Materialized => {}
Self::NotMaterialized => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
775pub enum CteAsMaterialized {
777 Materialized,
779 NotMaterialized,
781}
782
783impl fmt::Display for CteAsMaterialized {
784 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
785 match *self {
786 CteAsMaterialized::Materialized => {
787 f.write_fmt(format_args!("MATERIALIZED"))write!(f, "MATERIALIZED")?;
788 }
789 CteAsMaterialized::NotMaterialized => {
790 f.write_fmt(format_args!("NOT MATERIALIZED"))write!(f, "NOT MATERIALIZED")?;
791 }
792 };
793 Ok(())
794 }
795}
796
797#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Cte {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field5_finish(f, "Cte", "alias",
&self.alias, "query", &self.query, "from", &self.from,
"materialized", &self.materialized, "closing_paren_token",
&&self.closing_paren_token)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Cte {
#[inline]
fn clone(&self) -> Cte {
Cte {
alias: ::core::clone::Clone::clone(&self.alias),
query: ::core::clone::Clone::clone(&self.query),
from: ::core::clone::Clone::clone(&self.from),
materialized: ::core::clone::Clone::clone(&self.materialized),
closing_paren_token: ::core::clone::Clone::clone(&self.closing_paren_token),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Cte {
#[inline]
fn eq(&self, other: &Cte) -> bool {
self.alias == other.alias && self.query == other.query &&
self.from == other.from &&
self.materialized == other.materialized &&
self.closing_paren_token == other.closing_paren_token
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Cte {
#[inline]
fn partial_cmp(&self, other: &Cte)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.alias, &other.alias)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.query,
&other.query) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.from,
&other.from) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.materialized,
&other.materialized) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.closing_paren_token,
&other.closing_paren_token),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for Cte {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TableAlias>;
let _: ::core::cmp::AssertParamIsEq<Box<Query>>;
let _: ::core::cmp::AssertParamIsEq<Option<Ident>>;
let _: ::core::cmp::AssertParamIsEq<Option<CteAsMaterialized>>;
let _: ::core::cmp::AssertParamIsEq<AttachedToken>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for Cte {
#[inline]
fn cmp(&self, other: &Cte) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.alias, &other.alias) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.query, &other.query) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.from, &other.from) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.materialized,
&other.materialized) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.closing_paren_token,
&other.closing_paren_token),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Cte {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.alias, state);
::core::hash::Hash::hash(&self.query, state);
::core::hash::Hash::hash(&self.from, state);
::core::hash::Hash::hash(&self.materialized, state);
::core::hash::Hash::hash(&self.closing_paren_token, state)
}
}Hash)]
802#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
803#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for Cte {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.alias, visitor)?;
sqlparser::ast::Visit::visit(&self.query, visitor)?;
sqlparser::ast::Visit::visit(&self.from, visitor)?;
sqlparser::ast::Visit::visit(&self.materialized, visitor)?;
sqlparser::ast::Visit::visit(&self.closing_paren_token,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for Cte {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.alias, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.query, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.from, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.materialized,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.closing_paren_token,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
804pub struct Cte {
805 pub alias: TableAlias,
807 pub query: Box<Query>,
809 pub from: Option<Ident>,
811 pub materialized: Option<CteAsMaterialized>,
813 pub closing_paren_token: AttachedToken,
815}
816
817impl fmt::Display for Cte {
818 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
819 match self.materialized.as_ref() {
820 None => {
821 self.alias.fmt(f)?;
822 f.write_str(" AS (")?;
823 NewLine.fmt(f)?;
824 Indent(&self.query).fmt(f)?;
825 NewLine.fmt(f)?;
826 f.write_str(")")?;
827 }
828 Some(materialized) => {
829 self.alias.fmt(f)?;
830 f.write_str(" AS ")?;
831 materialized.fmt(f)?;
832 f.write_str(" (")?;
833 NewLine.fmt(f)?;
834 Indent(&self.query).fmt(f)?;
835 NewLine.fmt(f)?;
836 f.write_str(")")?;
837 }
838 };
839 if let Some(ref fr) = self.from {
840 f.write_fmt(format_args!(" FROM {0}", fr))write!(f, " FROM {fr}")?;
841 }
842 Ok(())
843 }
844}
845
846#[derive(#[automatically_derived]
impl ::core::fmt::Debug for SelectItemQualifiedWildcardKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
SelectItemQualifiedWildcardKind::ObjectName(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ObjectName", &__self_0),
SelectItemQualifiedWildcardKind::Expr(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Expr",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for SelectItemQualifiedWildcardKind {
#[inline]
fn clone(&self) -> SelectItemQualifiedWildcardKind {
match self {
SelectItemQualifiedWildcardKind::ObjectName(__self_0) =>
SelectItemQualifiedWildcardKind::ObjectName(::core::clone::Clone::clone(__self_0)),
SelectItemQualifiedWildcardKind::Expr(__self_0) =>
SelectItemQualifiedWildcardKind::Expr(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for SelectItemQualifiedWildcardKind {
#[inline]
fn eq(&self, other: &SelectItemQualifiedWildcardKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(SelectItemQualifiedWildcardKind::ObjectName(__self_0),
SelectItemQualifiedWildcardKind::ObjectName(__arg1_0)) =>
__self_0 == __arg1_0,
(SelectItemQualifiedWildcardKind::Expr(__self_0),
SelectItemQualifiedWildcardKind::Expr(__arg1_0)) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for SelectItemQualifiedWildcardKind {
#[inline]
fn partial_cmp(&self, other: &SelectItemQualifiedWildcardKind)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(SelectItemQualifiedWildcardKind::ObjectName(__self_0),
SelectItemQualifiedWildcardKind::ObjectName(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(SelectItemQualifiedWildcardKind::Expr(__self_0),
SelectItemQualifiedWildcardKind::Expr(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for SelectItemQualifiedWildcardKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ObjectName>;
let _: ::core::cmp::AssertParamIsEq<Expr>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for SelectItemQualifiedWildcardKind {
#[inline]
fn cmp(&self, other: &SelectItemQualifiedWildcardKind)
-> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(SelectItemQualifiedWildcardKind::ObjectName(__self_0),
SelectItemQualifiedWildcardKind::ObjectName(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(SelectItemQualifiedWildcardKind::Expr(__self_0),
SelectItemQualifiedWildcardKind::Expr(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for SelectItemQualifiedWildcardKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
SelectItemQualifiedWildcardKind::ObjectName(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
SelectItemQualifiedWildcardKind::Expr(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash)]
849#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
850#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for SelectItemQualifiedWildcardKind {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::ObjectName(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Expr(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for SelectItemQualifiedWildcardKind {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::ObjectName(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Expr(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
851pub enum SelectItemQualifiedWildcardKind {
852 ObjectName(ObjectName),
855 Expr(Expr),
858}
859
860#[derive(#[automatically_derived]
impl ::core::fmt::Debug for SelectItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
SelectItem::UnnamedExpr(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"UnnamedExpr", &__self_0),
SelectItem::ExprWithAlias { expr: __self_0, alias: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"ExprWithAlias", "expr", __self_0, "alias", &__self_1),
SelectItem::QualifiedWildcard(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"QualifiedWildcard", __self_0, &__self_1),
SelectItem::Wildcard(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Wildcard", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for SelectItem {
#[inline]
fn clone(&self) -> SelectItem {
match self {
SelectItem::UnnamedExpr(__self_0) =>
SelectItem::UnnamedExpr(::core::clone::Clone::clone(__self_0)),
SelectItem::ExprWithAlias { expr: __self_0, alias: __self_1 } =>
SelectItem::ExprWithAlias {
expr: ::core::clone::Clone::clone(__self_0),
alias: ::core::clone::Clone::clone(__self_1),
},
SelectItem::QualifiedWildcard(__self_0, __self_1) =>
SelectItem::QualifiedWildcard(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
SelectItem::Wildcard(__self_0) =>
SelectItem::Wildcard(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for SelectItem {
#[inline]
fn eq(&self, other: &SelectItem) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(SelectItem::UnnamedExpr(__self_0),
SelectItem::UnnamedExpr(__arg1_0)) => __self_0 == __arg1_0,
(SelectItem::ExprWithAlias { expr: __self_0, alias: __self_1
}, SelectItem::ExprWithAlias {
expr: __arg1_0, alias: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(SelectItem::QualifiedWildcard(__self_0, __self_1),
SelectItem::QualifiedWildcard(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(SelectItem::Wildcard(__self_0),
SelectItem::Wildcard(__arg1_0)) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for SelectItem {
#[inline]
fn partial_cmp(&self, other: &SelectItem)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(SelectItem::UnnamedExpr(__self_0),
SelectItem::UnnamedExpr(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(SelectItem::ExprWithAlias { expr: __self_0, alias: __self_1 },
SelectItem::ExprWithAlias { expr: __arg1_0, alias: __arg1_1 })
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
(SelectItem::QualifiedWildcard(__self_0, __self_1),
SelectItem::QualifiedWildcard(__arg1_0, __arg1_1)) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
(SelectItem::Wildcard(__self_0), SelectItem::Wildcard(__arg1_0))
=> ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for SelectItem {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Expr>;
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<SelectItemQualifiedWildcardKind>;
let _: ::core::cmp::AssertParamIsEq<WildcardAdditionalOptions>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for SelectItem {
#[inline]
fn cmp(&self, other: &SelectItem) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(SelectItem::UnnamedExpr(__self_0),
SelectItem::UnnamedExpr(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(SelectItem::ExprWithAlias { expr: __self_0, alias: __self_1
}, SelectItem::ExprWithAlias {
expr: __arg1_0, alias: __arg1_1 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
(SelectItem::QualifiedWildcard(__self_0, __self_1),
SelectItem::QualifiedWildcard(__arg1_0, __arg1_1)) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
(SelectItem::Wildcard(__self_0),
SelectItem::Wildcard(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for SelectItem {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
SelectItem::UnnamedExpr(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
SelectItem::ExprWithAlias { expr: __self_0, alias: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
SelectItem::QualifiedWildcard(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
SelectItem::Wildcard(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash)]
862#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
863#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for SelectItem {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::UnnamedExpr(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::ExprWithAlias { expr, alias } => {
sqlparser::ast::Visit::visit(expr, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
}
Self::QualifiedWildcard(_0, _1) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
sqlparser::ast::Visit::visit(_1, visitor)?;
}
Self::Wildcard(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for SelectItem {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::UnnamedExpr(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::ExprWithAlias { expr, alias } => {
sqlparser::ast::VisitMut::visit(expr, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
Self::QualifiedWildcard(_0, _1) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
sqlparser::ast::VisitMut::visit(_1, visitor)?;
}
Self::Wildcard(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
864pub enum SelectItem {
865 UnnamedExpr(Expr),
867 ExprWithAlias {
869 expr: Expr,
871 alias: Ident,
873 },
874 QualifiedWildcard(SelectItemQualifiedWildcardKind, WildcardAdditionalOptions),
877 Wildcard(WildcardAdditionalOptions),
879}
880
881impl fmt::Display for SelectItemQualifiedWildcardKind {
882 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
883 match &self {
884 SelectItemQualifiedWildcardKind::ObjectName(object_name) => {
885 f.write_fmt(format_args!("{0}.*", object_name))write!(f, "{object_name}.*")
886 }
887 SelectItemQualifiedWildcardKind::Expr(expr) => f.write_fmt(format_args!("{0}.*", expr))write!(f, "{expr}.*"),
888 }
889 }
890}
891
892#[derive(#[automatically_derived]
impl ::core::fmt::Debug for IdentWithAlias {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"IdentWithAlias", "ident", &self.ident, "alias", &&self.alias)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for IdentWithAlias {
#[inline]
fn clone(&self) -> IdentWithAlias {
IdentWithAlias {
ident: ::core::clone::Clone::clone(&self.ident),
alias: ::core::clone::Clone::clone(&self.alias),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for IdentWithAlias {
#[inline]
fn eq(&self, other: &IdentWithAlias) -> bool {
self.ident == other.ident && self.alias == other.alias
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for IdentWithAlias {
#[inline]
fn partial_cmp(&self, other: &IdentWithAlias)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.ident, &other.ident)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.alias,
&other.alias),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for IdentWithAlias {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for IdentWithAlias {
#[inline]
fn cmp(&self, other: &IdentWithAlias) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.ident, &other.ident) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.alias, &other.alias),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for IdentWithAlias {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.ident, state);
::core::hash::Hash::hash(&self.alias, state)
}
}Hash)]
899#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
900#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for IdentWithAlias {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.ident, visitor)?;
sqlparser::ast::Visit::visit(&self.alias, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for IdentWithAlias {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.ident, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.alias, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
901pub struct IdentWithAlias {
902 pub ident: Ident,
904 pub alias: Ident,
906}
907
908impl fmt::Display for IdentWithAlias {
909 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
910 f.write_fmt(format_args!("{0} AS {1}", self.ident, self.alias))write!(f, "{} AS {}", self.ident, self.alias)
911 }
912}
913
914#[derive(#[automatically_derived]
impl ::core::fmt::Debug for WildcardAdditionalOptions {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["wildcard_token", "opt_ilike", "opt_exclude", "opt_except",
"opt_replace", "opt_rename"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.wildcard_token, &self.opt_ilike, &self.opt_exclude,
&self.opt_except, &self.opt_replace, &&self.opt_rename];
::core::fmt::Formatter::debug_struct_fields_finish(f,
"WildcardAdditionalOptions", names, values)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for WildcardAdditionalOptions {
#[inline]
fn clone(&self) -> WildcardAdditionalOptions {
WildcardAdditionalOptions {
wildcard_token: ::core::clone::Clone::clone(&self.wildcard_token),
opt_ilike: ::core::clone::Clone::clone(&self.opt_ilike),
opt_exclude: ::core::clone::Clone::clone(&self.opt_exclude),
opt_except: ::core::clone::Clone::clone(&self.opt_except),
opt_replace: ::core::clone::Clone::clone(&self.opt_replace),
opt_rename: ::core::clone::Clone::clone(&self.opt_rename),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for WildcardAdditionalOptions {
#[inline]
fn eq(&self, other: &WildcardAdditionalOptions) -> bool {
self.wildcard_token == other.wildcard_token &&
self.opt_ilike == other.opt_ilike &&
self.opt_exclude == other.opt_exclude &&
self.opt_except == other.opt_except &&
self.opt_replace == other.opt_replace &&
self.opt_rename == other.opt_rename
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for WildcardAdditionalOptions {
#[inline]
fn partial_cmp(&self, other: &WildcardAdditionalOptions)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.wildcard_token,
&other.wildcard_token) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.opt_ilike,
&other.opt_ilike) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.opt_exclude,
&other.opt_exclude) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.opt_except,
&other.opt_except) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.opt_replace,
&other.opt_replace) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.opt_rename,
&other.opt_rename),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for WildcardAdditionalOptions {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<AttachedToken>;
let _: ::core::cmp::AssertParamIsEq<Option<IlikeSelectItem>>;
let _: ::core::cmp::AssertParamIsEq<Option<ExcludeSelectItem>>;
let _: ::core::cmp::AssertParamIsEq<Option<ExceptSelectItem>>;
let _: ::core::cmp::AssertParamIsEq<Option<ReplaceSelectItem>>;
let _: ::core::cmp::AssertParamIsEq<Option<RenameSelectItem>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for WildcardAdditionalOptions {
#[inline]
fn cmp(&self, other: &WildcardAdditionalOptions)
-> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.wildcard_token,
&other.wildcard_token) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.opt_ilike, &other.opt_ilike)
{
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.opt_exclude,
&other.opt_exclude) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.opt_except,
&other.opt_except) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.opt_replace,
&other.opt_replace) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.opt_rename, &other.opt_rename),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for WildcardAdditionalOptions {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.wildcard_token, state);
::core::hash::Hash::hash(&self.opt_ilike, state);
::core::hash::Hash::hash(&self.opt_exclude, state);
::core::hash::Hash::hash(&self.opt_except, state);
::core::hash::Hash::hash(&self.opt_replace, state);
::core::hash::Hash::hash(&self.opt_rename, state)
}
}Hash)]
916#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
917#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for WildcardAdditionalOptions {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.wildcard_token,
visitor)?;
sqlparser::ast::Visit::visit(&self.opt_ilike, visitor)?;
sqlparser::ast::Visit::visit(&self.opt_exclude, visitor)?;
sqlparser::ast::Visit::visit(&self.opt_except, visitor)?;
sqlparser::ast::Visit::visit(&self.opt_replace, visitor)?;
sqlparser::ast::Visit::visit(&self.opt_rename, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for WildcardAdditionalOptions {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.wildcard_token,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.opt_ilike,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.opt_exclude,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.opt_except,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.opt_replace,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.opt_rename,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
918pub struct WildcardAdditionalOptions {
919 pub wildcard_token: AttachedToken,
921 pub opt_ilike: Option<IlikeSelectItem>,
924 pub opt_exclude: Option<ExcludeSelectItem>,
926 pub opt_except: Option<ExceptSelectItem>,
929 pub opt_replace: Option<ReplaceSelectItem>,
934 pub opt_rename: Option<RenameSelectItem>,
936}
937
938impl Default for WildcardAdditionalOptions {
939 fn default() -> Self {
940 Self {
941 wildcard_token: TokenWithSpan::wrap(Token::Mul).into(),
942 opt_ilike: None,
943 opt_exclude: None,
944 opt_except: None,
945 opt_replace: None,
946 opt_rename: None,
947 }
948 }
949}
950
951impl fmt::Display for WildcardAdditionalOptions {
952 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
953 if let Some(ilike) = &self.opt_ilike {
954 f.write_fmt(format_args!(" {0}", ilike))write!(f, " {ilike}")?;
955 }
956 if let Some(exclude) = &self.opt_exclude {
957 f.write_fmt(format_args!(" {0}", exclude))write!(f, " {exclude}")?;
958 }
959 if let Some(except) = &self.opt_except {
960 f.write_fmt(format_args!(" {0}", except))write!(f, " {except}")?;
961 }
962 if let Some(replace) = &self.opt_replace {
963 f.write_fmt(format_args!(" {0}", replace))write!(f, " {replace}")?;
964 }
965 if let Some(rename) = &self.opt_rename {
966 f.write_fmt(format_args!(" {0}", rename))write!(f, " {rename}")?;
967 }
968 Ok(())
969 }
970}
971
972#[derive(#[automatically_derived]
impl ::core::fmt::Debug for IlikeSelectItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f,
"IlikeSelectItem", "pattern", &&self.pattern)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for IlikeSelectItem {
#[inline]
fn clone(&self) -> IlikeSelectItem {
IlikeSelectItem {
pattern: ::core::clone::Clone::clone(&self.pattern),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for IlikeSelectItem {
#[inline]
fn eq(&self, other: &IlikeSelectItem) -> bool {
self.pattern == other.pattern
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for IlikeSelectItem {
#[inline]
fn partial_cmp(&self, other: &IlikeSelectItem)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.pattern, &other.pattern)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for IlikeSelectItem {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<String>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for IlikeSelectItem {
#[inline]
fn cmp(&self, other: &IlikeSelectItem) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.pattern, &other.pattern)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for IlikeSelectItem {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.pattern, state)
}
}Hash)]
979#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
980#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for IlikeSelectItem {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.pattern, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for IlikeSelectItem {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.pattern,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
981pub struct IlikeSelectItem {
982 pub pattern: String,
984}
985
986impl fmt::Display for IlikeSelectItem {
987 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
988 f.write_fmt(format_args!("ILIKE \'{0}\'",
value::escape_single_quote_string(&self.pattern)))write!(
989 f,
990 "ILIKE '{}'",
991 value::escape_single_quote_string(&self.pattern)
992 )?;
993 Ok(())
994 }
995}
996#[derive(#[automatically_derived]
impl ::core::fmt::Debug for ExcludeSelectItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ExcludeSelectItem::Single(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Single",
&__self_0),
ExcludeSelectItem::Multiple(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Multiple", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for ExcludeSelectItem {
#[inline]
fn clone(&self) -> ExcludeSelectItem {
match self {
ExcludeSelectItem::Single(__self_0) =>
ExcludeSelectItem::Single(::core::clone::Clone::clone(__self_0)),
ExcludeSelectItem::Multiple(__self_0) =>
ExcludeSelectItem::Multiple(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ExcludeSelectItem {
#[inline]
fn eq(&self, other: &ExcludeSelectItem) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ExcludeSelectItem::Single(__self_0),
ExcludeSelectItem::Single(__arg1_0)) =>
__self_0 == __arg1_0,
(ExcludeSelectItem::Multiple(__self_0),
ExcludeSelectItem::Multiple(__arg1_0)) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ExcludeSelectItem {
#[inline]
fn partial_cmp(&self, other: &ExcludeSelectItem)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(ExcludeSelectItem::Single(__self_0),
ExcludeSelectItem::Single(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(ExcludeSelectItem::Multiple(__self_0),
ExcludeSelectItem::Multiple(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for ExcludeSelectItem {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<Vec<Ident>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for ExcludeSelectItem {
#[inline]
fn cmp(&self, other: &ExcludeSelectItem) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(ExcludeSelectItem::Single(__self_0),
ExcludeSelectItem::Single(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(ExcludeSelectItem::Multiple(__self_0),
ExcludeSelectItem::Multiple(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ExcludeSelectItem {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
ExcludeSelectItem::Single(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
ExcludeSelectItem::Multiple(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash)]
1004#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1005#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for ExcludeSelectItem {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Single(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Multiple(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for ExcludeSelectItem {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Single(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Multiple(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1006pub enum ExcludeSelectItem {
1007 Single(Ident),
1014 Multiple(Vec<Ident>),
1020}
1021
1022impl fmt::Display for ExcludeSelectItem {
1023 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1024 f.write_fmt(format_args!("EXCLUDE"))write!(f, "EXCLUDE")?;
1025 match self {
1026 Self::Single(column) => {
1027 f.write_fmt(format_args!(" {0}", column))write!(f, " {column}")?;
1028 }
1029 Self::Multiple(columns) => {
1030 f.write_fmt(format_args!(" ({0})", display_comma_separated(columns)))write!(f, " ({})", display_comma_separated(columns))?;
1031 }
1032 }
1033 Ok(())
1034 }
1035}
1036
1037#[derive(#[automatically_derived]
impl ::core::fmt::Debug for RenameSelectItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
RenameSelectItem::Single(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Single",
&__self_0),
RenameSelectItem::Multiple(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Multiple", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for RenameSelectItem {
#[inline]
fn clone(&self) -> RenameSelectItem {
match self {
RenameSelectItem::Single(__self_0) =>
RenameSelectItem::Single(::core::clone::Clone::clone(__self_0)),
RenameSelectItem::Multiple(__self_0) =>
RenameSelectItem::Multiple(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for RenameSelectItem {
#[inline]
fn eq(&self, other: &RenameSelectItem) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(RenameSelectItem::Single(__self_0),
RenameSelectItem::Single(__arg1_0)) => __self_0 == __arg1_0,
(RenameSelectItem::Multiple(__self_0),
RenameSelectItem::Multiple(__arg1_0)) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for RenameSelectItem {
#[inline]
fn partial_cmp(&self, other: &RenameSelectItem)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(RenameSelectItem::Single(__self_0),
RenameSelectItem::Single(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(RenameSelectItem::Multiple(__self_0),
RenameSelectItem::Multiple(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for RenameSelectItem {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<IdentWithAlias>;
let _: ::core::cmp::AssertParamIsEq<Vec<IdentWithAlias>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for RenameSelectItem {
#[inline]
fn cmp(&self, other: &RenameSelectItem) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(RenameSelectItem::Single(__self_0),
RenameSelectItem::Single(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(RenameSelectItem::Multiple(__self_0),
RenameSelectItem::Multiple(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for RenameSelectItem {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
RenameSelectItem::Single(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
RenameSelectItem::Multiple(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash)]
1045#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1046#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for RenameSelectItem {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Single(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Multiple(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for RenameSelectItem {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Single(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Multiple(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1047pub enum RenameSelectItem {
1048 Single(IdentWithAlias),
1055 Multiple(Vec<IdentWithAlias>),
1061}
1062
1063impl fmt::Display for RenameSelectItem {
1064 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1065 f.write_fmt(format_args!("RENAME"))write!(f, "RENAME")?;
1066 match self {
1067 Self::Single(column) => {
1068 f.write_fmt(format_args!(" {0}", column))write!(f, " {column}")?;
1069 }
1070 Self::Multiple(columns) => {
1071 f.write_fmt(format_args!(" ({0})", display_comma_separated(columns)))write!(f, " ({})", display_comma_separated(columns))?;
1072 }
1073 }
1074 Ok(())
1075 }
1076}
1077
1078#[derive(#[automatically_derived]
impl ::core::fmt::Debug for ExceptSelectItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"ExceptSelectItem", "first_element", &self.first_element,
"additional_elements", &&self.additional_elements)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for ExceptSelectItem {
#[inline]
fn clone(&self) -> ExceptSelectItem {
ExceptSelectItem {
first_element: ::core::clone::Clone::clone(&self.first_element),
additional_elements: ::core::clone::Clone::clone(&self.additional_elements),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ExceptSelectItem {
#[inline]
fn eq(&self, other: &ExceptSelectItem) -> bool {
self.first_element == other.first_element &&
self.additional_elements == other.additional_elements
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ExceptSelectItem {
#[inline]
fn partial_cmp(&self, other: &ExceptSelectItem)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.first_element,
&other.first_element) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.additional_elements,
&other.additional_elements),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for ExceptSelectItem {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<Vec<Ident>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for ExceptSelectItem {
#[inline]
fn cmp(&self, other: &ExceptSelectItem) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.first_element, &other.first_element)
{
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.additional_elements,
&other.additional_elements),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ExceptSelectItem {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.first_element, state);
::core::hash::Hash::hash(&self.additional_elements, state)
}
}Hash)]
1085#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1086#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for ExceptSelectItem {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.first_element, visitor)?;
sqlparser::ast::Visit::visit(&self.additional_elements,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for ExceptSelectItem {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.first_element,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.additional_elements,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1087pub struct ExceptSelectItem {
1088 pub first_element: Ident,
1090 pub additional_elements: Vec<Ident>,
1092}
1093
1094impl fmt::Display for ExceptSelectItem {
1095 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1096 f.write_fmt(format_args!("EXCEPT "))write!(f, "EXCEPT ")?;
1097 if self.additional_elements.is_empty() {
1098 f.write_fmt(format_args!("({0})", self.first_element))write!(f, "({})", self.first_element)?;
1099 } else {
1100 f.write_fmt(format_args!("({0}, {1})", self.first_element,
display_comma_separated(&self.additional_elements)))write!(
1101 f,
1102 "({}, {})",
1103 self.first_element,
1104 display_comma_separated(&self.additional_elements)
1105 )?;
1106 }
1107 Ok(())
1108 }
1109}
1110
1111#[derive(#[automatically_derived]
impl ::core::fmt::Debug for ReplaceSelectItem {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f,
"ReplaceSelectItem", "items", &&self.items)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for ReplaceSelectItem {
#[inline]
fn clone(&self) -> ReplaceSelectItem {
ReplaceSelectItem { items: ::core::clone::Clone::clone(&self.items) }
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ReplaceSelectItem {
#[inline]
fn eq(&self, other: &ReplaceSelectItem) -> bool {
self.items == other.items
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ReplaceSelectItem {
#[inline]
fn partial_cmp(&self, other: &ReplaceSelectItem)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.items, &other.items)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for ReplaceSelectItem {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Vec<Box<ReplaceSelectElement>>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for ReplaceSelectItem {
#[inline]
fn cmp(&self, other: &ReplaceSelectItem) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.items, &other.items)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ReplaceSelectItem {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.items, state)
}
}Hash)]
1119#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1120#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for ReplaceSelectItem {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.items, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for ReplaceSelectItem {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.items, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1121pub struct ReplaceSelectItem {
1122 pub items: Vec<Box<ReplaceSelectElement>>,
1124}
1125
1126impl fmt::Display for ReplaceSelectItem {
1127 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1128 f.write_fmt(format_args!("REPLACE"))write!(f, "REPLACE")?;
1129 f.write_fmt(format_args!(" ({0})", display_comma_separated(&self.items)))write!(f, " ({})", display_comma_separated(&self.items))?;
1130 Ok(())
1131 }
1132}
1133
1134#[derive(#[automatically_derived]
impl ::core::fmt::Debug for ReplaceSelectElement {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"ReplaceSelectElement", "expr", &self.expr, "column_name",
&self.column_name, "as_keyword", &&self.as_keyword)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for ReplaceSelectElement {
#[inline]
fn clone(&self) -> ReplaceSelectElement {
ReplaceSelectElement {
expr: ::core::clone::Clone::clone(&self.expr),
column_name: ::core::clone::Clone::clone(&self.column_name),
as_keyword: ::core::clone::Clone::clone(&self.as_keyword),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ReplaceSelectElement {
#[inline]
fn eq(&self, other: &ReplaceSelectElement) -> bool {
self.as_keyword == other.as_keyword && self.expr == other.expr &&
self.column_name == other.column_name
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ReplaceSelectElement {
#[inline]
fn partial_cmp(&self, other: &ReplaceSelectElement)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.expr, &other.expr) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.column_name,
&other.column_name) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.as_keyword,
&other.as_keyword),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for ReplaceSelectElement {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Expr>;
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<bool>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for ReplaceSelectElement {
#[inline]
fn cmp(&self, other: &ReplaceSelectElement) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.expr, &other.expr) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.column_name,
&other.column_name) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.as_keyword, &other.as_keyword),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ReplaceSelectElement {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.expr, state);
::core::hash::Hash::hash(&self.column_name, state);
::core::hash::Hash::hash(&self.as_keyword, state)
}
}Hash)]
1139#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1140#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for ReplaceSelectElement {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.expr, visitor)?;
sqlparser::ast::Visit::visit(&self.column_name, visitor)?;
sqlparser::ast::Visit::visit(&self.as_keyword, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for ReplaceSelectElement {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.expr, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.column_name,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.as_keyword,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1141pub struct ReplaceSelectElement {
1142 pub expr: Expr,
1144 pub column_name: Ident,
1146 pub as_keyword: bool,
1148}
1149
1150impl fmt::Display for ReplaceSelectElement {
1151 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1152 if self.as_keyword {
1153 f.write_fmt(format_args!("{0} AS {1}", self.expr, self.column_name))write!(f, "{} AS {}", self.expr, self.column_name)
1154 } else {
1155 f.write_fmt(format_args!("{0} {1}", self.expr, self.column_name))write!(f, "{} {}", self.expr, self.column_name)
1156 }
1157 }
1158}
1159
1160impl fmt::Display for SelectItem {
1161 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1162 use core::fmt::Write;
1163 match &self {
1164 SelectItem::UnnamedExpr(expr) => expr.fmt(f),
1165 SelectItem::ExprWithAlias { expr, alias } => {
1166 expr.fmt(f)?;
1167 f.write_str(" AS ")?;
1168 alias.fmt(f)
1169 }
1170 SelectItem::QualifiedWildcard(kind, additional_options) => {
1171 kind.fmt(f)?;
1172 additional_options.fmt(f)
1173 }
1174 SelectItem::Wildcard(additional_options) => {
1175 f.write_char('*')?;
1176 additional_options.fmt(f)
1177 }
1178 }
1179 }
1180}
1181
1182#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableWithJoins {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"TableWithJoins", "relation", &self.relation, "joins",
&&self.joins)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableWithJoins {
#[inline]
fn clone(&self) -> TableWithJoins {
TableWithJoins {
relation: ::core::clone::Clone::clone(&self.relation),
joins: ::core::clone::Clone::clone(&self.joins),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TableWithJoins {
#[inline]
fn eq(&self, other: &TableWithJoins) -> bool {
self.relation == other.relation && self.joins == other.joins
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableWithJoins {
#[inline]
fn partial_cmp(&self, other: &TableWithJoins)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.relation,
&other.relation) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.joins,
&other.joins),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableWithJoins {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TableFactor>;
let _: ::core::cmp::AssertParamIsEq<Vec<Join>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableWithJoins {
#[inline]
fn cmp(&self, other: &TableWithJoins) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.relation, &other.relation) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.joins, &other.joins),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableWithJoins {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.relation, state);
::core::hash::Hash::hash(&self.joins, state)
}
}Hash)]
1183#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1184#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableWithJoins {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.relation, visitor)?;
sqlparser::ast::Visit::visit(&self.joins, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableWithJoins {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.relation,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.joins, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1185pub struct TableWithJoins {
1187 pub relation: TableFactor,
1189 pub joins: Vec<Join>,
1191}
1192
1193impl fmt::Display for TableWithJoins {
1194 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1195 self.relation.fmt(f)?;
1196 for join in &self.joins {
1197 SpaceOrNewline.fmt(f)?;
1198 join.fmt(f)?;
1199 }
1200 Ok(())
1201 }
1202}
1203
1204#[derive(#[automatically_derived]
impl ::core::fmt::Debug for ConnectByKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ConnectByKind::ConnectBy {
connect_token: __self_0,
nocycle: __self_1,
relationships: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"ConnectBy", "connect_token", __self_0, "nocycle", __self_1,
"relationships", &__self_2),
ConnectByKind::StartWith {
start_token: __self_0, condition: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"StartWith", "start_token", __self_0, "condition",
&__self_1),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for ConnectByKind {
#[inline]
fn clone(&self) -> ConnectByKind {
match self {
ConnectByKind::ConnectBy {
connect_token: __self_0,
nocycle: __self_1,
relationships: __self_2 } =>
ConnectByKind::ConnectBy {
connect_token: ::core::clone::Clone::clone(__self_0),
nocycle: ::core::clone::Clone::clone(__self_1),
relationships: ::core::clone::Clone::clone(__self_2),
},
ConnectByKind::StartWith {
start_token: __self_0, condition: __self_1 } =>
ConnectByKind::StartWith {
start_token: ::core::clone::Clone::clone(__self_0),
condition: ::core::clone::Clone::clone(__self_1),
},
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ConnectByKind {
#[inline]
fn eq(&self, other: &ConnectByKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ConnectByKind::ConnectBy {
connect_token: __self_0,
nocycle: __self_1,
relationships: __self_2 }, ConnectByKind::ConnectBy {
connect_token: __arg1_0,
nocycle: __arg1_1,
relationships: __arg1_2 }) =>
__self_1 == __arg1_1 && __self_0 == __arg1_0 &&
__self_2 == __arg1_2,
(ConnectByKind::StartWith {
start_token: __self_0, condition: __self_1 },
ConnectByKind::StartWith {
start_token: __arg1_0, condition: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ConnectByKind {
#[inline]
fn partial_cmp(&self, other: &ConnectByKind)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(ConnectByKind::ConnectBy {
connect_token: __self_0,
nocycle: __self_1,
relationships: __self_2 }, ConnectByKind::ConnectBy {
connect_token: __arg1_0,
nocycle: __arg1_1,
relationships: __arg1_2 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_2, __arg1_2),
cmp => cmp,
},
cmp => cmp,
},
(ConnectByKind::StartWith {
start_token: __self_0, condition: __self_1 },
ConnectByKind::StartWith {
start_token: __arg1_0, condition: __arg1_1 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for ConnectByKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<AttachedToken>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<Vec<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Box<Expr>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for ConnectByKind {
#[inline]
fn cmp(&self, other: &ConnectByKind) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(ConnectByKind::ConnectBy {
connect_token: __self_0,
nocycle: __self_1,
relationships: __self_2 }, ConnectByKind::ConnectBy {
connect_token: __arg1_0,
nocycle: __arg1_1,
relationships: __arg1_2 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_2, __arg1_2),
cmp => cmp,
},
cmp => cmp,
},
(ConnectByKind::StartWith {
start_token: __self_0, condition: __self_1 },
ConnectByKind::StartWith {
start_token: __arg1_0, condition: __arg1_1 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ConnectByKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
ConnectByKind::ConnectBy {
connect_token: __self_0,
nocycle: __self_1,
relationships: __self_2 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state)
}
ConnectByKind::StartWith {
start_token: __self_0, condition: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
}
}
}Hash)]
1209#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1210#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for ConnectByKind {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::ConnectBy { connect_token, nocycle, relationships } =>
{
sqlparser::ast::Visit::visit(connect_token, visitor)?;
sqlparser::ast::Visit::visit(nocycle, visitor)?;
sqlparser::ast::Visit::visit(relationships, visitor)?;
}
Self::StartWith { start_token, condition } => {
sqlparser::ast::Visit::visit(start_token, visitor)?;
sqlparser::ast::Visit::visit(condition, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for ConnectByKind {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::ConnectBy { connect_token, nocycle, relationships } =>
{
sqlparser::ast::VisitMut::visit(connect_token, visitor)?;
sqlparser::ast::VisitMut::visit(nocycle, visitor)?;
sqlparser::ast::VisitMut::visit(relationships, visitor)?;
}
Self::StartWith { start_token, condition } => {
sqlparser::ast::VisitMut::visit(start_token, visitor)?;
sqlparser::ast::VisitMut::visit(condition, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1211pub enum ConnectByKind {
1212 ConnectBy {
1214 connect_token: AttachedToken,
1216
1217 nocycle: bool,
1221
1222 relationships: Vec<Expr>,
1224 },
1225
1226 StartWith {
1231 start_token: AttachedToken,
1233
1234 condition: Box<Expr>,
1236 },
1237}
1238
1239impl fmt::Display for ConnectByKind {
1240 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1241 match self {
1242 ConnectByKind::ConnectBy {
1243 connect_token: _,
1244 nocycle,
1245 relationships,
1246 } => {
1247 f.write_fmt(format_args!("CONNECT BY {0}{1}",
if *nocycle { "NOCYCLE " } else { "" },
display_comma_separated(relationships)))write!(
1248 f,
1249 "CONNECT BY {nocycle}{relationships}",
1250 nocycle = if *nocycle { "NOCYCLE " } else { "" },
1251 relationships = display_comma_separated(relationships)
1252 )
1253 }
1254 ConnectByKind::StartWith {
1255 start_token: _,
1256 condition,
1257 } => {
1258 f.write_fmt(format_args!("START WITH {0}", condition))write!(f, "START WITH {condition}")
1259 }
1260 }
1261 }
1262}
1263
1264#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Setting {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Setting",
"key", &self.key, "value", &&self.value)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Setting {
#[inline]
fn clone(&self) -> Setting {
Setting {
key: ::core::clone::Clone::clone(&self.key),
value: ::core::clone::Clone::clone(&self.value),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Setting {
#[inline]
fn eq(&self, other: &Setting) -> bool {
self.key == other.key && self.value == other.value
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Setting {
#[inline]
fn partial_cmp(&self, other: &Setting)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.key, &other.key) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.value,
&other.value),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for Setting {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<Expr>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for Setting {
#[inline]
fn cmp(&self, other: &Setting) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.key, &other.key) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.value, &other.value),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Setting {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.key, state);
::core::hash::Hash::hash(&self.value, state)
}
}Hash)]
1265#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1266#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for Setting {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.key, visitor)?;
sqlparser::ast::Visit::visit(&self.value, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for Setting {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.key, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.value, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1267pub struct Setting {
1269 pub key: Ident,
1271 pub value: Expr,
1273}
1274
1275impl fmt::Display for Setting {
1276 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1277 f.write_fmt(format_args!("{0} = {1}", self.key, self.value))write!(f, "{} = {}", self.key, self.value)
1278 }
1279}
1280
1281#[derive(#[automatically_derived]
impl ::core::fmt::Debug for ExprWithAlias {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "ExprWithAlias",
"expr", &self.expr, "alias", &&self.alias)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for ExprWithAlias {
#[inline]
fn clone(&self) -> ExprWithAlias {
ExprWithAlias {
expr: ::core::clone::Clone::clone(&self.expr),
alias: ::core::clone::Clone::clone(&self.alias),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ExprWithAlias {
#[inline]
fn eq(&self, other: &ExprWithAlias) -> bool {
self.expr == other.expr && self.alias == other.alias
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ExprWithAlias {
#[inline]
fn partial_cmp(&self, other: &ExprWithAlias)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.expr, &other.expr) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.alias,
&other.alias),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for ExprWithAlias {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Expr>;
let _: ::core::cmp::AssertParamIsEq<Option<Ident>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for ExprWithAlias {
#[inline]
fn cmp(&self, other: &ExprWithAlias) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.expr, &other.expr) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.alias, &other.alias),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ExprWithAlias {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.expr, state);
::core::hash::Hash::hash(&self.alias, state)
}
}Hash)]
1288#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1289#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for ExprWithAlias {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.expr, visitor)?;
sqlparser::ast::Visit::visit(&self.alias, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for ExprWithAlias {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.expr, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.alias, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1290pub struct ExprWithAlias {
1291 pub expr: Expr,
1293 pub alias: Option<Ident>,
1295}
1296
1297impl fmt::Display for ExprWithAlias {
1298 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1299 let ExprWithAlias { expr, alias } = self;
1300 f.write_fmt(format_args!("{0}", expr))write!(f, "{expr}")?;
1301 if let Some(alias) = alias {
1302 f.write_fmt(format_args!(" AS {0}", alias))write!(f, " AS {alias}")?;
1303 }
1304 Ok(())
1305 }
1306}
1307
1308#[derive(#[automatically_derived]
impl ::core::fmt::Debug for ExprWithAliasAndOrderBy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"ExprWithAliasAndOrderBy", "expr", &self.expr, "order_by",
&&self.order_by)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for ExprWithAliasAndOrderBy {
#[inline]
fn clone(&self) -> ExprWithAliasAndOrderBy {
ExprWithAliasAndOrderBy {
expr: ::core::clone::Clone::clone(&self.expr),
order_by: ::core::clone::Clone::clone(&self.order_by),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ExprWithAliasAndOrderBy {
#[inline]
fn eq(&self, other: &ExprWithAliasAndOrderBy) -> bool {
self.expr == other.expr && self.order_by == other.order_by
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ExprWithAliasAndOrderBy {
#[inline]
fn partial_cmp(&self, other: &ExprWithAliasAndOrderBy)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.expr, &other.expr) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.order_by,
&other.order_by),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for ExprWithAliasAndOrderBy {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ExprWithAlias>;
let _: ::core::cmp::AssertParamIsEq<OrderByOptions>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for ExprWithAliasAndOrderBy {
#[inline]
fn cmp(&self, other: &ExprWithAliasAndOrderBy) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.expr, &other.expr) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.order_by, &other.order_by),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ExprWithAliasAndOrderBy {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.expr, state);
::core::hash::Hash::hash(&self.order_by, state)
}
}Hash)]
1315#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1316#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for ExprWithAliasAndOrderBy {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.expr, visitor)?;
sqlparser::ast::Visit::visit(&self.order_by, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for ExprWithAliasAndOrderBy {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.expr, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.order_by,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1317pub struct ExprWithAliasAndOrderBy {
1318 pub expr: ExprWithAlias,
1320 pub order_by: OrderByOptions,
1322}
1323
1324impl fmt::Display for ExprWithAliasAndOrderBy {
1325 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1326 f.write_fmt(format_args!("{0}{1}", self.expr, self.order_by))write!(f, "{}{}", self.expr, self.order_by)
1327 }
1328}
1329
1330#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableFunctionArgs {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"TableFunctionArgs", "args", &self.args, "settings",
&&self.settings)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableFunctionArgs {
#[inline]
fn clone(&self) -> TableFunctionArgs {
TableFunctionArgs {
args: ::core::clone::Clone::clone(&self.args),
settings: ::core::clone::Clone::clone(&self.settings),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TableFunctionArgs {
#[inline]
fn eq(&self, other: &TableFunctionArgs) -> bool {
self.args == other.args && self.settings == other.settings
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableFunctionArgs {
#[inline]
fn partial_cmp(&self, other: &TableFunctionArgs)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.args, &other.args) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.settings,
&other.settings),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableFunctionArgs {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Vec<FunctionArg>>;
let _: ::core::cmp::AssertParamIsEq<Option<Vec<Setting>>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableFunctionArgs {
#[inline]
fn cmp(&self, other: &TableFunctionArgs) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.args, &other.args) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.settings, &other.settings),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableFunctionArgs {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.args, state);
::core::hash::Hash::hash(&self.settings, state)
}
}Hash)]
1332#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1333#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableFunctionArgs {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.args, visitor)?;
sqlparser::ast::Visit::visit(&self.settings, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableFunctionArgs {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.args, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.settings,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1334pub struct TableFunctionArgs {
1335 pub args: Vec<FunctionArg>,
1337 pub settings: Option<Vec<Setting>>,
1342}
1343
1344#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableIndexHintType {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
TableIndexHintType::Use => "Use",
TableIndexHintType::Ignore => "Ignore",
TableIndexHintType::Force => "Force",
})
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableIndexHintType {
#[inline]
fn clone(&self) -> TableIndexHintType { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for TableIndexHintType { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for TableIndexHintType {
#[inline]
fn eq(&self, other: &TableIndexHintType) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableIndexHintType {
#[inline]
fn partial_cmp(&self, other: &TableIndexHintType)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableIndexHintType {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableIndexHintType {
#[inline]
fn cmp(&self, other: &TableIndexHintType) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableIndexHintType {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
1345#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1346#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableIndexHintType {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Use => {}
Self::Ignore => {}
Self::Force => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableIndexHintType {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Use => {}
Self::Ignore => {}
Self::Force => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1347pub enum TableIndexHintType {
1349 Use,
1351 Ignore,
1353 Force,
1355}
1356
1357impl fmt::Display for TableIndexHintType {
1358 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1359 f.write_str(match self {
1360 TableIndexHintType::Use => "USE",
1361 TableIndexHintType::Ignore => "IGNORE",
1362 TableIndexHintType::Force => "FORCE",
1363 })
1364 }
1365}
1366
1367#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableIndexType {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
TableIndexType::Index => "Index",
TableIndexType::Key => "Key",
})
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableIndexType {
#[inline]
fn clone(&self) -> TableIndexType { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for TableIndexType { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for TableIndexType {
#[inline]
fn eq(&self, other: &TableIndexType) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableIndexType {
#[inline]
fn partial_cmp(&self, other: &TableIndexType)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableIndexType {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableIndexType {
#[inline]
fn cmp(&self, other: &TableIndexType) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableIndexType {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
1368#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1369#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableIndexType {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self { Self::Index => {} Self::Key => {} }
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableIndexType {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self { Self::Index => {} Self::Key => {} }
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1370pub enum TableIndexType {
1372 Index,
1374 Key,
1376}
1377
1378impl fmt::Display for TableIndexType {
1379 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1380 f.write_str(match self {
1381 TableIndexType::Index => "INDEX",
1382 TableIndexType::Key => "KEY",
1383 })
1384 }
1385}
1386
1387#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableIndexHintForClause {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
TableIndexHintForClause::Join => "Join",
TableIndexHintForClause::OrderBy => "OrderBy",
TableIndexHintForClause::GroupBy => "GroupBy",
})
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableIndexHintForClause {
#[inline]
fn clone(&self) -> TableIndexHintForClause { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for TableIndexHintForClause { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for TableIndexHintForClause {
#[inline]
fn eq(&self, other: &TableIndexHintForClause) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableIndexHintForClause {
#[inline]
fn partial_cmp(&self, other: &TableIndexHintForClause)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableIndexHintForClause {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableIndexHintForClause {
#[inline]
fn cmp(&self, other: &TableIndexHintForClause) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableIndexHintForClause {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
1388#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1389#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableIndexHintForClause {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Join => {}
Self::OrderBy => {}
Self::GroupBy => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableIndexHintForClause {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Join => {}
Self::OrderBy => {}
Self::GroupBy => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1390pub enum TableIndexHintForClause {
1392 Join,
1394 OrderBy,
1396 GroupBy,
1398}
1399
1400impl fmt::Display for TableIndexHintForClause {
1401 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1402 f.write_str(match self {
1403 TableIndexHintForClause::Join => "JOIN",
1404 TableIndexHintForClause::OrderBy => "ORDER BY",
1405 TableIndexHintForClause::GroupBy => "GROUP BY",
1406 })
1407 }
1408}
1409
1410#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableIndexHints {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f,
"TableIndexHints", "hint_type", &self.hint_type, "index_type",
&self.index_type, "for_clause", &self.for_clause, "index_names",
&&self.index_names)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableIndexHints {
#[inline]
fn clone(&self) -> TableIndexHints {
TableIndexHints {
hint_type: ::core::clone::Clone::clone(&self.hint_type),
index_type: ::core::clone::Clone::clone(&self.index_type),
for_clause: ::core::clone::Clone::clone(&self.for_clause),
index_names: ::core::clone::Clone::clone(&self.index_names),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TableIndexHints {
#[inline]
fn eq(&self, other: &TableIndexHints) -> bool {
self.hint_type == other.hint_type &&
self.index_type == other.index_type &&
self.for_clause == other.for_clause &&
self.index_names == other.index_names
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableIndexHints {
#[inline]
fn partial_cmp(&self, other: &TableIndexHints)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.hint_type,
&other.hint_type) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.index_type,
&other.index_type) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.for_clause,
&other.for_clause) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.index_names,
&other.index_names),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableIndexHints {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TableIndexHintType>;
let _: ::core::cmp::AssertParamIsEq<TableIndexType>;
let _: ::core::cmp::AssertParamIsEq<Option<TableIndexHintForClause>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Ident>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableIndexHints {
#[inline]
fn cmp(&self, other: &TableIndexHints) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.hint_type, &other.hint_type) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.index_type,
&other.index_type) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.for_clause,
&other.for_clause) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.index_names,
&other.index_names),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableIndexHints {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.hint_type, state);
::core::hash::Hash::hash(&self.index_type, state);
::core::hash::Hash::hash(&self.for_clause, state);
::core::hash::Hash::hash(&self.index_names, state)
}
}Hash)]
1411#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1412#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableIndexHints {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.hint_type, visitor)?;
sqlparser::ast::Visit::visit(&self.index_type, visitor)?;
sqlparser::ast::Visit::visit(&self.for_clause, visitor)?;
sqlparser::ast::Visit::visit(&self.index_names, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableIndexHints {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.hint_type,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.index_type,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.for_clause,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.index_names,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1413pub struct TableIndexHints {
1415 pub hint_type: TableIndexHintType,
1417 pub index_type: TableIndexType,
1419 pub for_clause: Option<TableIndexHintForClause>,
1421 pub index_names: Vec<Ident>,
1423}
1424
1425impl fmt::Display for TableIndexHints {
1426 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1427 f.write_fmt(format_args!("{0} {1} ", self.hint_type, self.index_type))write!(f, "{} {} ", self.hint_type, self.index_type)?;
1428 if let Some(for_clause) = &self.for_clause {
1429 f.write_fmt(format_args!("FOR {0} ", for_clause))write!(f, "FOR {for_clause} ")?;
1430 }
1431 f.write_fmt(format_args!("({0})", display_comma_separated(&self.index_names)))write!(f, "({})", display_comma_separated(&self.index_names))
1432 }
1433}
1434
1435#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableFactor {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
TableFactor::Table {
name: __self_0,
alias: __self_1,
args: __self_2,
with_hints: __self_3,
version: __self_4,
with_ordinality: __self_5,
partitions: __self_6,
json_path: __self_7,
sample: __self_8,
index_hints: __self_9 } => {
let names: &'static _ =
&["name", "alias", "args", "with_hints", "version",
"with_ordinality", "partitions", "json_path", "sample",
"index_hints"];
let values: &[&dyn ::core::fmt::Debug] =
&[__self_0, __self_1, __self_2, __self_3, __self_4,
__self_5, __self_6, __self_7, __self_8, &__self_9];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Table",
names, values)
}
TableFactor::Derived {
lateral: __self_0,
subquery: __self_1,
alias: __self_2,
sample: __self_3 } =>
::core::fmt::Formatter::debug_struct_field4_finish(f,
"Derived", "lateral", __self_0, "subquery", __self_1,
"alias", __self_2, "sample", &__self_3),
TableFactor::TableFunction { expr: __self_0, alias: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"TableFunction", "expr", __self_0, "alias", &__self_1),
TableFactor::Function {
lateral: __self_0,
name: __self_1,
args: __self_2,
alias: __self_3 } =>
::core::fmt::Formatter::debug_struct_field4_finish(f,
"Function", "lateral", __self_0, "name", __self_1, "args",
__self_2, "alias", &__self_3),
TableFactor::UNNEST {
alias: __self_0,
array_exprs: __self_1,
with_offset: __self_2,
with_offset_alias: __self_3,
with_ordinality: __self_4 } =>
::core::fmt::Formatter::debug_struct_field5_finish(f,
"UNNEST", "alias", __self_0, "array_exprs", __self_1,
"with_offset", __self_2, "with_offset_alias", __self_3,
"with_ordinality", &__self_4),
TableFactor::JsonTable {
json_expr: __self_0,
json_path: __self_1,
columns: __self_2,
alias: __self_3 } =>
::core::fmt::Formatter::debug_struct_field4_finish(f,
"JsonTable", "json_expr", __self_0, "json_path", __self_1,
"columns", __self_2, "alias", &__self_3),
TableFactor::OpenJsonTable {
json_expr: __self_0,
json_path: __self_1,
columns: __self_2,
alias: __self_3 } =>
::core::fmt::Formatter::debug_struct_field4_finish(f,
"OpenJsonTable", "json_expr", __self_0, "json_path",
__self_1, "columns", __self_2, "alias", &__self_3),
TableFactor::NestedJoin {
table_with_joins: __self_0, alias: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"NestedJoin", "table_with_joins", __self_0, "alias",
&__self_1),
TableFactor::Pivot {
table: __self_0,
aggregate_functions: __self_1,
value_column: __self_2,
value_source: __self_3,
default_on_null: __self_4,
alias: __self_5 } => {
let names: &'static _ =
&["table", "aggregate_functions", "value_column",
"value_source", "default_on_null", "alias"];
let values: &[&dyn ::core::fmt::Debug] =
&[__self_0, __self_1, __self_2, __self_3, __self_4,
&__self_5];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Pivot",
names, values)
}
TableFactor::Unpivot {
table: __self_0,
value: __self_1,
name: __self_2,
columns: __self_3,
null_inclusion: __self_4,
alias: __self_5 } => {
let names: &'static _ =
&["table", "value", "name", "columns", "null_inclusion",
"alias"];
let values: &[&dyn ::core::fmt::Debug] =
&[__self_0, __self_1, __self_2, __self_3, __self_4,
&__self_5];
::core::fmt::Formatter::debug_struct_fields_finish(f,
"Unpivot", names, values)
}
TableFactor::MatchRecognize {
table: __self_0,
partition_by: __self_1,
order_by: __self_2,
measures: __self_3,
rows_per_match: __self_4,
after_match_skip: __self_5,
pattern: __self_6,
symbols: __self_7,
alias: __self_8 } => {
let names: &'static _ =
&["table", "partition_by", "order_by", "measures",
"rows_per_match", "after_match_skip", "pattern", "symbols",
"alias"];
let values: &[&dyn ::core::fmt::Debug] =
&[__self_0, __self_1, __self_2, __self_3, __self_4,
__self_5, __self_6, __self_7, &__self_8];
::core::fmt::Formatter::debug_struct_fields_finish(f,
"MatchRecognize", names, values)
}
TableFactor::XmlTable {
namespaces: __self_0,
row_expression: __self_1,
passing: __self_2,
columns: __self_3,
alias: __self_4 } =>
::core::fmt::Formatter::debug_struct_field5_finish(f,
"XmlTable", "namespaces", __self_0, "row_expression",
__self_1, "passing", __self_2, "columns", __self_3, "alias",
&__self_4),
TableFactor::SemanticView {
name: __self_0,
dimensions: __self_1,
metrics: __self_2,
facts: __self_3,
where_clause: __self_4,
alias: __self_5 } => {
let names: &'static _ =
&["name", "dimensions", "metrics", "facts", "where_clause",
"alias"];
let values: &[&dyn ::core::fmt::Debug] =
&[__self_0, __self_1, __self_2, __self_3, __self_4,
&__self_5];
::core::fmt::Formatter::debug_struct_fields_finish(f,
"SemanticView", names, values)
}
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableFactor {
#[inline]
fn clone(&self) -> TableFactor {
match self {
TableFactor::Table {
name: __self_0,
alias: __self_1,
args: __self_2,
with_hints: __self_3,
version: __self_4,
with_ordinality: __self_5,
partitions: __self_6,
json_path: __self_7,
sample: __self_8,
index_hints: __self_9 } =>
TableFactor::Table {
name: ::core::clone::Clone::clone(__self_0),
alias: ::core::clone::Clone::clone(__self_1),
args: ::core::clone::Clone::clone(__self_2),
with_hints: ::core::clone::Clone::clone(__self_3),
version: ::core::clone::Clone::clone(__self_4),
with_ordinality: ::core::clone::Clone::clone(__self_5),
partitions: ::core::clone::Clone::clone(__self_6),
json_path: ::core::clone::Clone::clone(__self_7),
sample: ::core::clone::Clone::clone(__self_8),
index_hints: ::core::clone::Clone::clone(__self_9),
},
TableFactor::Derived {
lateral: __self_0,
subquery: __self_1,
alias: __self_2,
sample: __self_3 } =>
TableFactor::Derived {
lateral: ::core::clone::Clone::clone(__self_0),
subquery: ::core::clone::Clone::clone(__self_1),
alias: ::core::clone::Clone::clone(__self_2),
sample: ::core::clone::Clone::clone(__self_3),
},
TableFactor::TableFunction { expr: __self_0, alias: __self_1 } =>
TableFactor::TableFunction {
expr: ::core::clone::Clone::clone(__self_0),
alias: ::core::clone::Clone::clone(__self_1),
},
TableFactor::Function {
lateral: __self_0,
name: __self_1,
args: __self_2,
alias: __self_3 } =>
TableFactor::Function {
lateral: ::core::clone::Clone::clone(__self_0),
name: ::core::clone::Clone::clone(__self_1),
args: ::core::clone::Clone::clone(__self_2),
alias: ::core::clone::Clone::clone(__self_3),
},
TableFactor::UNNEST {
alias: __self_0,
array_exprs: __self_1,
with_offset: __self_2,
with_offset_alias: __self_3,
with_ordinality: __self_4 } =>
TableFactor::UNNEST {
alias: ::core::clone::Clone::clone(__self_0),
array_exprs: ::core::clone::Clone::clone(__self_1),
with_offset: ::core::clone::Clone::clone(__self_2),
with_offset_alias: ::core::clone::Clone::clone(__self_3),
with_ordinality: ::core::clone::Clone::clone(__self_4),
},
TableFactor::JsonTable {
json_expr: __self_0,
json_path: __self_1,
columns: __self_2,
alias: __self_3 } =>
TableFactor::JsonTable {
json_expr: ::core::clone::Clone::clone(__self_0),
json_path: ::core::clone::Clone::clone(__self_1),
columns: ::core::clone::Clone::clone(__self_2),
alias: ::core::clone::Clone::clone(__self_3),
},
TableFactor::OpenJsonTable {
json_expr: __self_0,
json_path: __self_1,
columns: __self_2,
alias: __self_3 } =>
TableFactor::OpenJsonTable {
json_expr: ::core::clone::Clone::clone(__self_0),
json_path: ::core::clone::Clone::clone(__self_1),
columns: ::core::clone::Clone::clone(__self_2),
alias: ::core::clone::Clone::clone(__self_3),
},
TableFactor::NestedJoin {
table_with_joins: __self_0, alias: __self_1 } =>
TableFactor::NestedJoin {
table_with_joins: ::core::clone::Clone::clone(__self_0),
alias: ::core::clone::Clone::clone(__self_1),
},
TableFactor::Pivot {
table: __self_0,
aggregate_functions: __self_1,
value_column: __self_2,
value_source: __self_3,
default_on_null: __self_4,
alias: __self_5 } =>
TableFactor::Pivot {
table: ::core::clone::Clone::clone(__self_0),
aggregate_functions: ::core::clone::Clone::clone(__self_1),
value_column: ::core::clone::Clone::clone(__self_2),
value_source: ::core::clone::Clone::clone(__self_3),
default_on_null: ::core::clone::Clone::clone(__self_4),
alias: ::core::clone::Clone::clone(__self_5),
},
TableFactor::Unpivot {
table: __self_0,
value: __self_1,
name: __self_2,
columns: __self_3,
null_inclusion: __self_4,
alias: __self_5 } =>
TableFactor::Unpivot {
table: ::core::clone::Clone::clone(__self_0),
value: ::core::clone::Clone::clone(__self_1),
name: ::core::clone::Clone::clone(__self_2),
columns: ::core::clone::Clone::clone(__self_3),
null_inclusion: ::core::clone::Clone::clone(__self_4),
alias: ::core::clone::Clone::clone(__self_5),
},
TableFactor::MatchRecognize {
table: __self_0,
partition_by: __self_1,
order_by: __self_2,
measures: __self_3,
rows_per_match: __self_4,
after_match_skip: __self_5,
pattern: __self_6,
symbols: __self_7,
alias: __self_8 } =>
TableFactor::MatchRecognize {
table: ::core::clone::Clone::clone(__self_0),
partition_by: ::core::clone::Clone::clone(__self_1),
order_by: ::core::clone::Clone::clone(__self_2),
measures: ::core::clone::Clone::clone(__self_3),
rows_per_match: ::core::clone::Clone::clone(__self_4),
after_match_skip: ::core::clone::Clone::clone(__self_5),
pattern: ::core::clone::Clone::clone(__self_6),
symbols: ::core::clone::Clone::clone(__self_7),
alias: ::core::clone::Clone::clone(__self_8),
},
TableFactor::XmlTable {
namespaces: __self_0,
row_expression: __self_1,
passing: __self_2,
columns: __self_3,
alias: __self_4 } =>
TableFactor::XmlTable {
namespaces: ::core::clone::Clone::clone(__self_0),
row_expression: ::core::clone::Clone::clone(__self_1),
passing: ::core::clone::Clone::clone(__self_2),
columns: ::core::clone::Clone::clone(__self_3),
alias: ::core::clone::Clone::clone(__self_4),
},
TableFactor::SemanticView {
name: __self_0,
dimensions: __self_1,
metrics: __self_2,
facts: __self_3,
where_clause: __self_4,
alias: __self_5 } =>
TableFactor::SemanticView {
name: ::core::clone::Clone::clone(__self_0),
dimensions: ::core::clone::Clone::clone(__self_1),
metrics: ::core::clone::Clone::clone(__self_2),
facts: ::core::clone::Clone::clone(__self_3),
where_clause: ::core::clone::Clone::clone(__self_4),
alias: ::core::clone::Clone::clone(__self_5),
},
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TableFactor {
#[inline]
fn eq(&self, other: &TableFactor) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(TableFactor::Table {
name: __self_0,
alias: __self_1,
args: __self_2,
with_hints: __self_3,
version: __self_4,
with_ordinality: __self_5,
partitions: __self_6,
json_path: __self_7,
sample: __self_8,
index_hints: __self_9 }, TableFactor::Table {
name: __arg1_0,
alias: __arg1_1,
args: __arg1_2,
with_hints: __arg1_3,
version: __arg1_4,
with_ordinality: __arg1_5,
partitions: __arg1_6,
json_path: __arg1_7,
sample: __arg1_8,
index_hints: __arg1_9 }) =>
__self_5 == __arg1_5 && __self_0 == __arg1_0 &&
__self_1 == __arg1_1 && __self_2 == __arg1_2 &&
__self_3 == __arg1_3 && __self_4 == __arg1_4 &&
__self_6 == __arg1_6 && __self_7 == __arg1_7 &&
__self_8 == __arg1_8 && __self_9 == __arg1_9,
(TableFactor::Derived {
lateral: __self_0,
subquery: __self_1,
alias: __self_2,
sample: __self_3 }, TableFactor::Derived {
lateral: __arg1_0,
subquery: __arg1_1,
alias: __arg1_2,
sample: __arg1_3 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3,
(TableFactor::TableFunction { expr: __self_0, alias: __self_1
}, TableFactor::TableFunction {
expr: __arg1_0, alias: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(TableFactor::Function {
lateral: __self_0,
name: __self_1,
args: __self_2,
alias: __self_3 }, TableFactor::Function {
lateral: __arg1_0,
name: __arg1_1,
args: __arg1_2,
alias: __arg1_3 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3,
(TableFactor::UNNEST {
alias: __self_0,
array_exprs: __self_1,
with_offset: __self_2,
with_offset_alias: __self_3,
with_ordinality: __self_4 }, TableFactor::UNNEST {
alias: __arg1_0,
array_exprs: __arg1_1,
with_offset: __arg1_2,
with_offset_alias: __arg1_3,
with_ordinality: __arg1_4 }) =>
__self_2 == __arg1_2 && __self_4 == __arg1_4 &&
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_3 == __arg1_3,
(TableFactor::JsonTable {
json_expr: __self_0,
json_path: __self_1,
columns: __self_2,
alias: __self_3 }, TableFactor::JsonTable {
json_expr: __arg1_0,
json_path: __arg1_1,
columns: __arg1_2,
alias: __arg1_3 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3,
(TableFactor::OpenJsonTable {
json_expr: __self_0,
json_path: __self_1,
columns: __self_2,
alias: __self_3 }, TableFactor::OpenJsonTable {
json_expr: __arg1_0,
json_path: __arg1_1,
columns: __arg1_2,
alias: __arg1_3 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3,
(TableFactor::NestedJoin {
table_with_joins: __self_0, alias: __self_1 },
TableFactor::NestedJoin {
table_with_joins: __arg1_0, alias: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(TableFactor::Pivot {
table: __self_0,
aggregate_functions: __self_1,
value_column: __self_2,
value_source: __self_3,
default_on_null: __self_4,
alias: __self_5 }, TableFactor::Pivot {
table: __arg1_0,
aggregate_functions: __arg1_1,
value_column: __arg1_2,
value_source: __arg1_3,
default_on_null: __arg1_4,
alias: __arg1_5 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3 &&
__self_4 == __arg1_4 && __self_5 == __arg1_5,
(TableFactor::Unpivot {
table: __self_0,
value: __self_1,
name: __self_2,
columns: __self_3,
null_inclusion: __self_4,
alias: __self_5 }, TableFactor::Unpivot {
table: __arg1_0,
value: __arg1_1,
name: __arg1_2,
columns: __arg1_3,
null_inclusion: __arg1_4,
alias: __arg1_5 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3 &&
__self_4 == __arg1_4 && __self_5 == __arg1_5,
(TableFactor::MatchRecognize {
table: __self_0,
partition_by: __self_1,
order_by: __self_2,
measures: __self_3,
rows_per_match: __self_4,
after_match_skip: __self_5,
pattern: __self_6,
symbols: __self_7,
alias: __self_8 }, TableFactor::MatchRecognize {
table: __arg1_0,
partition_by: __arg1_1,
order_by: __arg1_2,
measures: __arg1_3,
rows_per_match: __arg1_4,
after_match_skip: __arg1_5,
pattern: __arg1_6,
symbols: __arg1_7,
alias: __arg1_8 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3 &&
__self_4 == __arg1_4 && __self_5 == __arg1_5 &&
__self_6 == __arg1_6 && __self_7 == __arg1_7 &&
__self_8 == __arg1_8,
(TableFactor::XmlTable {
namespaces: __self_0,
row_expression: __self_1,
passing: __self_2,
columns: __self_3,
alias: __self_4 }, TableFactor::XmlTable {
namespaces: __arg1_0,
row_expression: __arg1_1,
passing: __arg1_2,
columns: __arg1_3,
alias: __arg1_4 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3 &&
__self_4 == __arg1_4,
(TableFactor::SemanticView {
name: __self_0,
dimensions: __self_1,
metrics: __self_2,
facts: __self_3,
where_clause: __self_4,
alias: __self_5 }, TableFactor::SemanticView {
name: __arg1_0,
dimensions: __arg1_1,
metrics: __arg1_2,
facts: __arg1_3,
where_clause: __arg1_4,
alias: __arg1_5 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3 &&
__self_4 == __arg1_4 && __self_5 == __arg1_5,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableFactor {
#[inline]
fn partial_cmp(&self, other: &TableFactor)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(TableFactor::Table {
name: __self_0,
alias: __self_1,
args: __self_2,
with_hints: __self_3,
version: __self_4,
with_ordinality: __self_5,
partitions: __self_6,
json_path: __self_7,
sample: __self_8,
index_hints: __self_9 }, TableFactor::Table {
name: __arg1_0,
alias: __arg1_1,
args: __arg1_2,
with_hints: __arg1_3,
version: __arg1_4,
with_ordinality: __arg1_5,
partitions: __arg1_6,
json_path: __arg1_7,
sample: __arg1_8,
index_hints: __arg1_9 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_3,
__arg1_3) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_4,
__arg1_4) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_5,
__arg1_5) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_6,
__arg1_6) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_7,
__arg1_7) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_8,
__arg1_8) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_9, __arg1_9),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::Derived {
lateral: __self_0,
subquery: __self_1,
alias: __self_2,
sample: __self_3 }, TableFactor::Derived {
lateral: __arg1_0,
subquery: __arg1_1,
alias: __arg1_2,
sample: __arg1_3 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::TableFunction { expr: __self_0, alias: __self_1 },
TableFactor::TableFunction { expr: __arg1_0, alias: __arg1_1
}) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
(TableFactor::Function {
lateral: __self_0,
name: __self_1,
args: __self_2,
alias: __self_3 }, TableFactor::Function {
lateral: __arg1_0,
name: __arg1_1,
args: __arg1_2,
alias: __arg1_3 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::UNNEST {
alias: __self_0,
array_exprs: __self_1,
with_offset: __self_2,
with_offset_alias: __self_3,
with_ordinality: __self_4 }, TableFactor::UNNEST {
alias: __arg1_0,
array_exprs: __arg1_1,
with_offset: __arg1_2,
with_offset_alias: __arg1_3,
with_ordinality: __arg1_4 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_3,
__arg1_3) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_4, __arg1_4),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::JsonTable {
json_expr: __self_0,
json_path: __self_1,
columns: __self_2,
alias: __self_3 }, TableFactor::JsonTable {
json_expr: __arg1_0,
json_path: __arg1_1,
columns: __arg1_2,
alias: __arg1_3 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::OpenJsonTable {
json_expr: __self_0,
json_path: __self_1,
columns: __self_2,
alias: __self_3 }, TableFactor::OpenJsonTable {
json_expr: __arg1_0,
json_path: __arg1_1,
columns: __arg1_2,
alias: __arg1_3 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::NestedJoin {
table_with_joins: __self_0, alias: __self_1 },
TableFactor::NestedJoin {
table_with_joins: __arg1_0, alias: __arg1_1 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
(TableFactor::Pivot {
table: __self_0,
aggregate_functions: __self_1,
value_column: __self_2,
value_source: __self_3,
default_on_null: __self_4,
alias: __self_5 }, TableFactor::Pivot {
table: __arg1_0,
aggregate_functions: __arg1_1,
value_column: __arg1_2,
value_source: __arg1_3,
default_on_null: __arg1_4,
alias: __arg1_5 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_3,
__arg1_3) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_4,
__arg1_4) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_5, __arg1_5),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::Unpivot {
table: __self_0,
value: __self_1,
name: __self_2,
columns: __self_3,
null_inclusion: __self_4,
alias: __self_5 }, TableFactor::Unpivot {
table: __arg1_0,
value: __arg1_1,
name: __arg1_2,
columns: __arg1_3,
null_inclusion: __arg1_4,
alias: __arg1_5 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_3,
__arg1_3) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_4,
__arg1_4) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_5, __arg1_5),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::MatchRecognize {
table: __self_0,
partition_by: __self_1,
order_by: __self_2,
measures: __self_3,
rows_per_match: __self_4,
after_match_skip: __self_5,
pattern: __self_6,
symbols: __self_7,
alias: __self_8 }, TableFactor::MatchRecognize {
table: __arg1_0,
partition_by: __arg1_1,
order_by: __arg1_2,
measures: __arg1_3,
rows_per_match: __arg1_4,
after_match_skip: __arg1_5,
pattern: __arg1_6,
symbols: __arg1_7,
alias: __arg1_8 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_3,
__arg1_3) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_4,
__arg1_4) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_5,
__arg1_5) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_6,
__arg1_6) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_7,
__arg1_7) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_8, __arg1_8),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::XmlTable {
namespaces: __self_0,
row_expression: __self_1,
passing: __self_2,
columns: __self_3,
alias: __self_4 }, TableFactor::XmlTable {
namespaces: __arg1_0,
row_expression: __arg1_1,
passing: __arg1_2,
columns: __arg1_3,
alias: __arg1_4 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_3,
__arg1_3) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_4, __arg1_4),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::SemanticView {
name: __self_0,
dimensions: __self_1,
metrics: __self_2,
facts: __self_3,
where_clause: __self_4,
alias: __self_5 }, TableFactor::SemanticView {
name: __arg1_0,
dimensions: __arg1_1,
metrics: __arg1_2,
facts: __arg1_3,
where_clause: __arg1_4,
alias: __arg1_5 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_3,
__arg1_3) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_4,
__arg1_4) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_5, __arg1_5),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableFactor {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ObjectName>;
let _: ::core::cmp::AssertParamIsEq<Option<TableAlias>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableFunctionArgs>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableVersion>>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<Vec<Ident>>;
let _: ::core::cmp::AssertParamIsEq<Option<JsonPath>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableSampleKind>>;
let _: ::core::cmp::AssertParamIsEq<Vec<TableIndexHints>>;
let _: ::core::cmp::AssertParamIsEq<Box<Query>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableAlias>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableSampleKind>>;
let _: ::core::cmp::AssertParamIsEq<Expr>;
let _: ::core::cmp::AssertParamIsEq<Option<TableAlias>>;
let _: ::core::cmp::AssertParamIsEq<Vec<FunctionArg>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableAlias>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableAlias>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Option<Ident>>;
let _: ::core::cmp::AssertParamIsEq<Value>;
let _: ::core::cmp::AssertParamIsEq<Vec<JsonTableColumn>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableAlias>>;
let _: ::core::cmp::AssertParamIsEq<Option<Value>>;
let _: ::core::cmp::AssertParamIsEq<Vec<OpenJsonTableColumn>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableAlias>>;
let _: ::core::cmp::AssertParamIsEq<Box<TableWithJoins>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableAlias>>;
let _: ::core::cmp::AssertParamIsEq<Box<TableFactor>>;
let _: ::core::cmp::AssertParamIsEq<Vec<ExprWithAlias>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Expr>>;
let _: ::core::cmp::AssertParamIsEq<PivotValueSource>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableAlias>>;
let _: ::core::cmp::AssertParamIsEq<Box<TableFactor>>;
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<Vec<ExprWithAlias>>;
let _: ::core::cmp::AssertParamIsEq<Option<NullInclusion>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableAlias>>;
let _: ::core::cmp::AssertParamIsEq<Box<TableFactor>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Vec<OrderByExpr>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Measure>>;
let _: ::core::cmp::AssertParamIsEq<Option<RowsPerMatch>>;
let _: ::core::cmp::AssertParamIsEq<Option<AfterMatchSkip>>;
let _: ::core::cmp::AssertParamIsEq<MatchRecognizePattern>;
let _: ::core::cmp::AssertParamIsEq<Vec<SymbolDefinition>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableAlias>>;
let _: ::core::cmp::AssertParamIsEq<Vec<XmlNamespaceDefinition>>;
let _: ::core::cmp::AssertParamIsEq<XmlPassingClause>;
let _: ::core::cmp::AssertParamIsEq<Vec<XmlTableColumn>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableAlias>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableAlias>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableFactor {
#[inline]
fn cmp(&self, other: &TableFactor) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(TableFactor::Table {
name: __self_0,
alias: __self_1,
args: __self_2,
with_hints: __self_3,
version: __self_4,
with_ordinality: __self_5,
partitions: __self_6,
json_path: __self_7,
sample: __self_8,
index_hints: __self_9 }, TableFactor::Table {
name: __arg1_0,
alias: __arg1_1,
args: __arg1_2,
with_hints: __arg1_3,
version: __arg1_4,
with_ordinality: __arg1_5,
partitions: __arg1_6,
json_path: __arg1_7,
sample: __arg1_8,
index_hints: __arg1_9 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_3, __arg1_3) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_4, __arg1_4) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_5, __arg1_5) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_6, __arg1_6) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_7, __arg1_7) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_8, __arg1_8) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_9, __arg1_9),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::Derived {
lateral: __self_0,
subquery: __self_1,
alias: __self_2,
sample: __self_3 }, TableFactor::Derived {
lateral: __arg1_0,
subquery: __arg1_1,
alias: __arg1_2,
sample: __arg1_3 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::TableFunction {
expr: __self_0, alias: __self_1 },
TableFactor::TableFunction { expr: __arg1_0, alias: __arg1_1
}) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
(TableFactor::Function {
lateral: __self_0,
name: __self_1,
args: __self_2,
alias: __self_3 }, TableFactor::Function {
lateral: __arg1_0,
name: __arg1_1,
args: __arg1_2,
alias: __arg1_3 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::UNNEST {
alias: __self_0,
array_exprs: __self_1,
with_offset: __self_2,
with_offset_alias: __self_3,
with_ordinality: __self_4 }, TableFactor::UNNEST {
alias: __arg1_0,
array_exprs: __arg1_1,
with_offset: __arg1_2,
with_offset_alias: __arg1_3,
with_ordinality: __arg1_4 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_3, __arg1_3) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_4, __arg1_4),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::JsonTable {
json_expr: __self_0,
json_path: __self_1,
columns: __self_2,
alias: __self_3 }, TableFactor::JsonTable {
json_expr: __arg1_0,
json_path: __arg1_1,
columns: __arg1_2,
alias: __arg1_3 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::OpenJsonTable {
json_expr: __self_0,
json_path: __self_1,
columns: __self_2,
alias: __self_3 }, TableFactor::OpenJsonTable {
json_expr: __arg1_0,
json_path: __arg1_1,
columns: __arg1_2,
alias: __arg1_3 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::NestedJoin {
table_with_joins: __self_0, alias: __self_1 },
TableFactor::NestedJoin {
table_with_joins: __arg1_0, alias: __arg1_1 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
(TableFactor::Pivot {
table: __self_0,
aggregate_functions: __self_1,
value_column: __self_2,
value_source: __self_3,
default_on_null: __self_4,
alias: __self_5 }, TableFactor::Pivot {
table: __arg1_0,
aggregate_functions: __arg1_1,
value_column: __arg1_2,
value_source: __arg1_3,
default_on_null: __arg1_4,
alias: __arg1_5 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_3, __arg1_3) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_4, __arg1_4) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_5, __arg1_5),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::Unpivot {
table: __self_0,
value: __self_1,
name: __self_2,
columns: __self_3,
null_inclusion: __self_4,
alias: __self_5 }, TableFactor::Unpivot {
table: __arg1_0,
value: __arg1_1,
name: __arg1_2,
columns: __arg1_3,
null_inclusion: __arg1_4,
alias: __arg1_5 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_3, __arg1_3) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_4, __arg1_4) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_5, __arg1_5),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::MatchRecognize {
table: __self_0,
partition_by: __self_1,
order_by: __self_2,
measures: __self_3,
rows_per_match: __self_4,
after_match_skip: __self_5,
pattern: __self_6,
symbols: __self_7,
alias: __self_8 }, TableFactor::MatchRecognize {
table: __arg1_0,
partition_by: __arg1_1,
order_by: __arg1_2,
measures: __arg1_3,
rows_per_match: __arg1_4,
after_match_skip: __arg1_5,
pattern: __arg1_6,
symbols: __arg1_7,
alias: __arg1_8 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_3, __arg1_3) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_4, __arg1_4) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_5, __arg1_5) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_6, __arg1_6) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_7, __arg1_7) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_8, __arg1_8),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::XmlTable {
namespaces: __self_0,
row_expression: __self_1,
passing: __self_2,
columns: __self_3,
alias: __self_4 }, TableFactor::XmlTable {
namespaces: __arg1_0,
row_expression: __arg1_1,
passing: __arg1_2,
columns: __arg1_3,
alias: __arg1_4 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_3, __arg1_3) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_4, __arg1_4),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(TableFactor::SemanticView {
name: __self_0,
dimensions: __self_1,
metrics: __self_2,
facts: __self_3,
where_clause: __self_4,
alias: __self_5 }, TableFactor::SemanticView {
name: __arg1_0,
dimensions: __arg1_1,
metrics: __arg1_2,
facts: __arg1_3,
where_clause: __arg1_4,
alias: __arg1_5 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_3, __arg1_3) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_4, __arg1_4) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_5, __arg1_5),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableFactor {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
TableFactor::Table {
name: __self_0,
alias: __self_1,
args: __self_2,
with_hints: __self_3,
version: __self_4,
with_ordinality: __self_5,
partitions: __self_6,
json_path: __self_7,
sample: __self_8,
index_hints: __self_9 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state);
::core::hash::Hash::hash(__self_4, state);
::core::hash::Hash::hash(__self_5, state);
::core::hash::Hash::hash(__self_6, state);
::core::hash::Hash::hash(__self_7, state);
::core::hash::Hash::hash(__self_8, state);
::core::hash::Hash::hash(__self_9, state)
}
TableFactor::Derived {
lateral: __self_0,
subquery: __self_1,
alias: __self_2,
sample: __self_3 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state)
}
TableFactor::TableFunction { expr: __self_0, alias: __self_1 } =>
{
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
TableFactor::Function {
lateral: __self_0,
name: __self_1,
args: __self_2,
alias: __self_3 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state)
}
TableFactor::UNNEST {
alias: __self_0,
array_exprs: __self_1,
with_offset: __self_2,
with_offset_alias: __self_3,
with_ordinality: __self_4 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state);
::core::hash::Hash::hash(__self_4, state)
}
TableFactor::JsonTable {
json_expr: __self_0,
json_path: __self_1,
columns: __self_2,
alias: __self_3 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state)
}
TableFactor::OpenJsonTable {
json_expr: __self_0,
json_path: __self_1,
columns: __self_2,
alias: __self_3 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state)
}
TableFactor::NestedJoin {
table_with_joins: __self_0, alias: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
TableFactor::Pivot {
table: __self_0,
aggregate_functions: __self_1,
value_column: __self_2,
value_source: __self_3,
default_on_null: __self_4,
alias: __self_5 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state);
::core::hash::Hash::hash(__self_4, state);
::core::hash::Hash::hash(__self_5, state)
}
TableFactor::Unpivot {
table: __self_0,
value: __self_1,
name: __self_2,
columns: __self_3,
null_inclusion: __self_4,
alias: __self_5 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state);
::core::hash::Hash::hash(__self_4, state);
::core::hash::Hash::hash(__self_5, state)
}
TableFactor::MatchRecognize {
table: __self_0,
partition_by: __self_1,
order_by: __self_2,
measures: __self_3,
rows_per_match: __self_4,
after_match_skip: __self_5,
pattern: __self_6,
symbols: __self_7,
alias: __self_8 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state);
::core::hash::Hash::hash(__self_4, state);
::core::hash::Hash::hash(__self_5, state);
::core::hash::Hash::hash(__self_6, state);
::core::hash::Hash::hash(__self_7, state);
::core::hash::Hash::hash(__self_8, state)
}
TableFactor::XmlTable {
namespaces: __self_0,
row_expression: __self_1,
passing: __self_2,
columns: __self_3,
alias: __self_4 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state);
::core::hash::Hash::hash(__self_4, state)
}
TableFactor::SemanticView {
name: __self_0,
dimensions: __self_1,
metrics: __self_2,
facts: __self_3,
where_clause: __self_4,
alias: __self_5 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state);
::core::hash::Hash::hash(__self_4, state);
::core::hash::Hash::hash(__self_5, state)
}
}
}
}Hash)]
1437#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1438#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableFactor {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
visitor.pre_visit_table_factor(self)?;
match self {
Self::Table {
name,
alias,
args,
with_hints,
version,
with_ordinality,
partitions,
json_path,
sample,
index_hints } => {
visitor.pre_visit_relation(name)?;
sqlparser::ast::Visit::visit(name, visitor)?;
visitor.post_visit_relation(name)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
sqlparser::ast::Visit::visit(args, visitor)?;
sqlparser::ast::Visit::visit(with_hints, visitor)?;
sqlparser::ast::Visit::visit(version, visitor)?;
sqlparser::ast::Visit::visit(with_ordinality, visitor)?;
sqlparser::ast::Visit::visit(partitions, visitor)?;
sqlparser::ast::Visit::visit(json_path, visitor)?;
sqlparser::ast::Visit::visit(sample, visitor)?;
sqlparser::ast::Visit::visit(index_hints, visitor)?;
}
Self::Derived { lateral, subquery, alias, sample } => {
sqlparser::ast::Visit::visit(lateral, visitor)?;
sqlparser::ast::Visit::visit(subquery, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
sqlparser::ast::Visit::visit(sample, visitor)?;
}
Self::TableFunction { expr, alias } => {
sqlparser::ast::Visit::visit(expr, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
}
Self::Function { lateral, name, args, alias } => {
sqlparser::ast::Visit::visit(lateral, visitor)?;
sqlparser::ast::Visit::visit(name, visitor)?;
sqlparser::ast::Visit::visit(args, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
}
Self::UNNEST {
alias,
array_exprs,
with_offset,
with_offset_alias,
with_ordinality } => {
sqlparser::ast::Visit::visit(alias, visitor)?;
sqlparser::ast::Visit::visit(array_exprs, visitor)?;
sqlparser::ast::Visit::visit(with_offset, visitor)?;
sqlparser::ast::Visit::visit(with_offset_alias, visitor)?;
sqlparser::ast::Visit::visit(with_ordinality, visitor)?;
}
Self::JsonTable { json_expr, json_path, columns, alias } =>
{
sqlparser::ast::Visit::visit(json_expr, visitor)?;
sqlparser::ast::Visit::visit(json_path, visitor)?;
sqlparser::ast::Visit::visit(columns, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
}
Self::OpenJsonTable { json_expr, json_path, columns, alias }
=> {
sqlparser::ast::Visit::visit(json_expr, visitor)?;
sqlparser::ast::Visit::visit(json_path, visitor)?;
sqlparser::ast::Visit::visit(columns, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
}
Self::NestedJoin { table_with_joins, alias } => {
sqlparser::ast::Visit::visit(table_with_joins, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
}
Self::Pivot {
table,
aggregate_functions,
value_column,
value_source,
default_on_null,
alias } => {
sqlparser::ast::Visit::visit(table, visitor)?;
sqlparser::ast::Visit::visit(aggregate_functions, visitor)?;
sqlparser::ast::Visit::visit(value_column, visitor)?;
sqlparser::ast::Visit::visit(value_source, visitor)?;
sqlparser::ast::Visit::visit(default_on_null, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
}
Self::Unpivot {
table, value, name, columns, null_inclusion, alias } => {
sqlparser::ast::Visit::visit(table, visitor)?;
sqlparser::ast::Visit::visit(value, visitor)?;
sqlparser::ast::Visit::visit(name, visitor)?;
sqlparser::ast::Visit::visit(columns, visitor)?;
sqlparser::ast::Visit::visit(null_inclusion, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
}
Self::MatchRecognize {
table,
partition_by,
order_by,
measures,
rows_per_match,
after_match_skip,
pattern,
symbols,
alias } => {
sqlparser::ast::Visit::visit(table, visitor)?;
sqlparser::ast::Visit::visit(partition_by, visitor)?;
sqlparser::ast::Visit::visit(order_by, visitor)?;
sqlparser::ast::Visit::visit(measures, visitor)?;
sqlparser::ast::Visit::visit(rows_per_match, visitor)?;
sqlparser::ast::Visit::visit(after_match_skip, visitor)?;
sqlparser::ast::Visit::visit(pattern, visitor)?;
sqlparser::ast::Visit::visit(symbols, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
}
Self::XmlTable {
namespaces, row_expression, passing, columns, alias } => {
sqlparser::ast::Visit::visit(namespaces, visitor)?;
sqlparser::ast::Visit::visit(row_expression, visitor)?;
sqlparser::ast::Visit::visit(passing, visitor)?;
sqlparser::ast::Visit::visit(columns, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
}
Self::SemanticView {
name, dimensions, metrics, facts, where_clause, alias } => {
sqlparser::ast::Visit::visit(name, visitor)?;
sqlparser::ast::Visit::visit(dimensions, visitor)?;
sqlparser::ast::Visit::visit(metrics, visitor)?;
sqlparser::ast::Visit::visit(facts, visitor)?;
sqlparser::ast::Visit::visit(where_clause, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
}
}
visitor.post_visit_table_factor(self)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableFactor {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
visitor.pre_visit_table_factor(self)?;
match self {
Self::Table {
name,
alias,
args,
with_hints,
version,
with_ordinality,
partitions,
json_path,
sample,
index_hints } => {
visitor.pre_visit_relation(name)?;
sqlparser::ast::VisitMut::visit(name, visitor)?;
visitor.post_visit_relation(name)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
sqlparser::ast::VisitMut::visit(args, visitor)?;
sqlparser::ast::VisitMut::visit(with_hints, visitor)?;
sqlparser::ast::VisitMut::visit(version, visitor)?;
sqlparser::ast::VisitMut::visit(with_ordinality, visitor)?;
sqlparser::ast::VisitMut::visit(partitions, visitor)?;
sqlparser::ast::VisitMut::visit(json_path, visitor)?;
sqlparser::ast::VisitMut::visit(sample, visitor)?;
sqlparser::ast::VisitMut::visit(index_hints, visitor)?;
}
Self::Derived { lateral, subquery, alias, sample } => {
sqlparser::ast::VisitMut::visit(lateral, visitor)?;
sqlparser::ast::VisitMut::visit(subquery, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
sqlparser::ast::VisitMut::visit(sample, visitor)?;
}
Self::TableFunction { expr, alias } => {
sqlparser::ast::VisitMut::visit(expr, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
Self::Function { lateral, name, args, alias } => {
sqlparser::ast::VisitMut::visit(lateral, visitor)?;
sqlparser::ast::VisitMut::visit(name, visitor)?;
sqlparser::ast::VisitMut::visit(args, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
Self::UNNEST {
alias,
array_exprs,
with_offset,
with_offset_alias,
with_ordinality } => {
sqlparser::ast::VisitMut::visit(alias, visitor)?;
sqlparser::ast::VisitMut::visit(array_exprs, visitor)?;
sqlparser::ast::VisitMut::visit(with_offset, visitor)?;
sqlparser::ast::VisitMut::visit(with_offset_alias,
visitor)?;
sqlparser::ast::VisitMut::visit(with_ordinality, visitor)?;
}
Self::JsonTable { json_expr, json_path, columns, alias } =>
{
sqlparser::ast::VisitMut::visit(json_expr, visitor)?;
sqlparser::ast::VisitMut::visit(json_path, visitor)?;
sqlparser::ast::VisitMut::visit(columns, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
Self::OpenJsonTable { json_expr, json_path, columns, alias }
=> {
sqlparser::ast::VisitMut::visit(json_expr, visitor)?;
sqlparser::ast::VisitMut::visit(json_path, visitor)?;
sqlparser::ast::VisitMut::visit(columns, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
Self::NestedJoin { table_with_joins, alias } => {
sqlparser::ast::VisitMut::visit(table_with_joins, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
Self::Pivot {
table,
aggregate_functions,
value_column,
value_source,
default_on_null,
alias } => {
sqlparser::ast::VisitMut::visit(table, visitor)?;
sqlparser::ast::VisitMut::visit(aggregate_functions,
visitor)?;
sqlparser::ast::VisitMut::visit(value_column, visitor)?;
sqlparser::ast::VisitMut::visit(value_source, visitor)?;
sqlparser::ast::VisitMut::visit(default_on_null, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
Self::Unpivot {
table, value, name, columns, null_inclusion, alias } => {
sqlparser::ast::VisitMut::visit(table, visitor)?;
sqlparser::ast::VisitMut::visit(value, visitor)?;
sqlparser::ast::VisitMut::visit(name, visitor)?;
sqlparser::ast::VisitMut::visit(columns, visitor)?;
sqlparser::ast::VisitMut::visit(null_inclusion, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
Self::MatchRecognize {
table,
partition_by,
order_by,
measures,
rows_per_match,
after_match_skip,
pattern,
symbols,
alias } => {
sqlparser::ast::VisitMut::visit(table, visitor)?;
sqlparser::ast::VisitMut::visit(partition_by, visitor)?;
sqlparser::ast::VisitMut::visit(order_by, visitor)?;
sqlparser::ast::VisitMut::visit(measures, visitor)?;
sqlparser::ast::VisitMut::visit(rows_per_match, visitor)?;
sqlparser::ast::VisitMut::visit(after_match_skip, visitor)?;
sqlparser::ast::VisitMut::visit(pattern, visitor)?;
sqlparser::ast::VisitMut::visit(symbols, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
Self::XmlTable {
namespaces, row_expression, passing, columns, alias } => {
sqlparser::ast::VisitMut::visit(namespaces, visitor)?;
sqlparser::ast::VisitMut::visit(row_expression, visitor)?;
sqlparser::ast::VisitMut::visit(passing, visitor)?;
sqlparser::ast::VisitMut::visit(columns, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
Self::SemanticView {
name, dimensions, metrics, facts, where_clause, alias } => {
sqlparser::ast::VisitMut::visit(name, visitor)?;
sqlparser::ast::VisitMut::visit(dimensions, visitor)?;
sqlparser::ast::VisitMut::visit(metrics, visitor)?;
sqlparser::ast::VisitMut::visit(facts, visitor)?;
sqlparser::ast::VisitMut::visit(where_clause, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
}
visitor.post_visit_table_factor(self)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1439#[cfg_attr(feature = "visitor", visit(with = "visit_table_factor"))]
1440pub enum TableFactor {
1441 Table {
1443 #[cfg_attr(feature = "visitor", visit(with = "visit_relation"))]
1444 name: ObjectName,
1446 alias: Option<TableAlias>,
1448 args: Option<TableFunctionArgs>,
1456 with_hints: Vec<Expr>,
1458 version: Option<TableVersion>,
1461 with_ordinality: bool,
1465 partitions: Vec<Ident>,
1467 json_path: Option<JsonPath>,
1469 sample: Option<TableSampleKind>,
1472 index_hints: Vec<TableIndexHints>,
1475 },
1476 Derived {
1478 lateral: bool,
1480 subquery: Box<Query>,
1482 alias: Option<TableAlias>,
1484 sample: Option<TableSampleKind>,
1486 },
1487 TableFunction {
1489 expr: Expr,
1491 alias: Option<TableAlias>,
1493 },
1494 Function {
1496 lateral: bool,
1498 name: ObjectName,
1500 args: Vec<FunctionArg>,
1502 alias: Option<TableAlias>,
1504 },
1505 UNNEST {
1516 alias: Option<TableAlias>,
1518 array_exprs: Vec<Expr>,
1520 with_offset: bool,
1522 with_offset_alias: Option<Ident>,
1524 with_ordinality: bool,
1526 },
1527 JsonTable {
1543 json_expr: Expr,
1545 json_path: Value,
1548 columns: Vec<JsonTableColumn>,
1551 alias: Option<TableAlias>,
1553 },
1554 OpenJsonTable {
1564 json_expr: Expr,
1566 json_path: Option<Value>,
1569 columns: Vec<OpenJsonTableColumn>,
1572 alias: Option<TableAlias>,
1574 },
1575 NestedJoin {
1582 table_with_joins: Box<TableWithJoins>,
1584 alias: Option<TableAlias>,
1586 },
1587 Pivot {
1593 table: Box<TableFactor>,
1595 aggregate_functions: Vec<ExprWithAlias>, value_column: Vec<Expr>,
1599 value_source: PivotValueSource,
1601 default_on_null: Option<Expr>,
1603 alias: Option<TableAlias>,
1605 },
1606 Unpivot {
1616 table: Box<TableFactor>,
1618 value: Expr,
1620 name: Ident,
1622 columns: Vec<ExprWithAlias>,
1624 null_inclusion: Option<NullInclusion>,
1626 alias: Option<TableAlias>,
1628 },
1629 MatchRecognize {
1633 table: Box<TableFactor>,
1635 partition_by: Vec<Expr>,
1637 order_by: Vec<OrderByExpr>,
1639 measures: Vec<Measure>,
1641 rows_per_match: Option<RowsPerMatch>,
1643 after_match_skip: Option<AfterMatchSkip>,
1645 pattern: MatchRecognizePattern,
1647 symbols: Vec<SymbolDefinition>,
1649 alias: Option<TableAlias>,
1651 },
1652 XmlTable {
1672 namespaces: Vec<XmlNamespaceDefinition>,
1674 row_expression: Expr,
1676 passing: XmlPassingClause,
1678 columns: Vec<XmlTableColumn>,
1680 alias: Option<TableAlias>,
1682 },
1683 SemanticView {
1695 name: ObjectName,
1697 dimensions: Vec<Expr>,
1699 metrics: Vec<Expr>,
1701 facts: Vec<Expr>,
1703 where_clause: Option<Expr>,
1705 alias: Option<TableAlias>,
1707 },
1708}
1709
1710#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableSampleKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
TableSampleKind::BeforeTableAlias(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"BeforeTableAlias", &__self_0),
TableSampleKind::AfterTableAlias(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"AfterTableAlias", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableSampleKind {
#[inline]
fn clone(&self) -> TableSampleKind {
match self {
TableSampleKind::BeforeTableAlias(__self_0) =>
TableSampleKind::BeforeTableAlias(::core::clone::Clone::clone(__self_0)),
TableSampleKind::AfterTableAlias(__self_0) =>
TableSampleKind::AfterTableAlias(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TableSampleKind {
#[inline]
fn eq(&self, other: &TableSampleKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(TableSampleKind::BeforeTableAlias(__self_0),
TableSampleKind::BeforeTableAlias(__arg1_0)) =>
__self_0 == __arg1_0,
(TableSampleKind::AfterTableAlias(__self_0),
TableSampleKind::AfterTableAlias(__arg1_0)) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableSampleKind {
#[inline]
fn partial_cmp(&self, other: &TableSampleKind)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(TableSampleKind::BeforeTableAlias(__self_0),
TableSampleKind::BeforeTableAlias(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(TableSampleKind::AfterTableAlias(__self_0),
TableSampleKind::AfterTableAlias(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableSampleKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Box<TableSample>>;
let _: ::core::cmp::AssertParamIsEq<Box<TableSample>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableSampleKind {
#[inline]
fn cmp(&self, other: &TableSampleKind) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(TableSampleKind::BeforeTableAlias(__self_0),
TableSampleKind::BeforeTableAlias(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(TableSampleKind::AfterTableAlias(__self_0),
TableSampleKind::AfterTableAlias(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableSampleKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
TableSampleKind::BeforeTableAlias(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
TableSampleKind::AfterTableAlias(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash)]
1712#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1713#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableSampleKind {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::BeforeTableAlias(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::AfterTableAlias(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableSampleKind {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::BeforeTableAlias(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::AfterTableAlias(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1714pub enum TableSampleKind {
1715 BeforeTableAlias(Box<TableSample>),
1717 AfterTableAlias(Box<TableSample>),
1719}
1720
1721#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableSample {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["modifier", "name", "quantity", "seed", "bucket", "offset"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.modifier, &self.name, &self.quantity, &self.seed,
&self.bucket, &&self.offset];
::core::fmt::Formatter::debug_struct_fields_finish(f, "TableSample",
names, values)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableSample {
#[inline]
fn clone(&self) -> TableSample {
TableSample {
modifier: ::core::clone::Clone::clone(&self.modifier),
name: ::core::clone::Clone::clone(&self.name),
quantity: ::core::clone::Clone::clone(&self.quantity),
seed: ::core::clone::Clone::clone(&self.seed),
bucket: ::core::clone::Clone::clone(&self.bucket),
offset: ::core::clone::Clone::clone(&self.offset),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TableSample {
#[inline]
fn eq(&self, other: &TableSample) -> bool {
self.modifier == other.modifier && self.name == other.name &&
self.quantity == other.quantity && self.seed == other.seed
&& self.bucket == other.bucket && self.offset == other.offset
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableSample {
#[inline]
fn partial_cmp(&self, other: &TableSample)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.modifier,
&other.modifier) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.name,
&other.name) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.quantity,
&other.quantity) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.seed,
&other.seed) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.bucket,
&other.bucket) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.offset,
&other.offset),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableSample {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TableSampleModifier>;
let _: ::core::cmp::AssertParamIsEq<Option<TableSampleMethod>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableSampleQuantity>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableSampleSeed>>;
let _: ::core::cmp::AssertParamIsEq<Option<TableSampleBucket>>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableSample {
#[inline]
fn cmp(&self, other: &TableSample) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.modifier, &other.modifier) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.name, &other.name) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.quantity, &other.quantity)
{
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.seed, &other.seed) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.bucket, &other.bucket) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.offset, &other.offset),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableSample {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.modifier, state);
::core::hash::Hash::hash(&self.name, state);
::core::hash::Hash::hash(&self.quantity, state);
::core::hash::Hash::hash(&self.seed, state);
::core::hash::Hash::hash(&self.bucket, state);
::core::hash::Hash::hash(&self.offset, state)
}
}Hash)]
1722#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1723#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableSample {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.modifier, visitor)?;
sqlparser::ast::Visit::visit(&self.name, visitor)?;
sqlparser::ast::Visit::visit(&self.quantity, visitor)?;
sqlparser::ast::Visit::visit(&self.seed, visitor)?;
sqlparser::ast::Visit::visit(&self.bucket, visitor)?;
sqlparser::ast::Visit::visit(&self.offset, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableSample {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.modifier,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.name, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.quantity,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.seed, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.bucket, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.offset, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1724pub struct TableSample {
1726 pub modifier: TableSampleModifier,
1728 pub name: Option<TableSampleMethod>,
1730 pub quantity: Option<TableSampleQuantity>,
1732 pub seed: Option<TableSampleSeed>,
1734 pub bucket: Option<TableSampleBucket>,
1736 pub offset: Option<Expr>,
1738}
1739
1740#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableSampleModifier {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
TableSampleModifier::Sample => "Sample",
TableSampleModifier::TableSample => "TableSample",
})
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableSampleModifier {
#[inline]
fn clone(&self) -> TableSampleModifier { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for TableSampleModifier { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for TableSampleModifier {
#[inline]
fn eq(&self, other: &TableSampleModifier) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableSampleModifier {
#[inline]
fn partial_cmp(&self, other: &TableSampleModifier)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableSampleModifier {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableSampleModifier {
#[inline]
fn cmp(&self, other: &TableSampleModifier) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableSampleModifier {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
1741#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1742#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableSampleModifier {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self { Self::Sample => {} Self::TableSample => {} }
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableSampleModifier {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self { Self::Sample => {} Self::TableSample => {} }
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1743pub enum TableSampleModifier {
1745 Sample,
1747 TableSample,
1749}
1750
1751impl fmt::Display for TableSampleModifier {
1752 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1753 match self {
1754 TableSampleModifier::Sample => f.write_fmt(format_args!("SAMPLE"))write!(f, "SAMPLE")?,
1755 TableSampleModifier::TableSample => f.write_fmt(format_args!("TABLESAMPLE"))write!(f, "TABLESAMPLE")?,
1756 }
1757 Ok(())
1758 }
1759}
1760
1761#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableSampleQuantity {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"TableSampleQuantity", "parenthesized", &self.parenthesized,
"value", &self.value, "unit", &&self.unit)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableSampleQuantity {
#[inline]
fn clone(&self) -> TableSampleQuantity {
TableSampleQuantity {
parenthesized: ::core::clone::Clone::clone(&self.parenthesized),
value: ::core::clone::Clone::clone(&self.value),
unit: ::core::clone::Clone::clone(&self.unit),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TableSampleQuantity {
#[inline]
fn eq(&self, other: &TableSampleQuantity) -> bool {
self.parenthesized == other.parenthesized && self.value == other.value
&& self.unit == other.unit
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableSampleQuantity {
#[inline]
fn partial_cmp(&self, other: &TableSampleQuantity)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.parenthesized,
&other.parenthesized) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.value,
&other.value) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.unit,
&other.unit),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableSampleQuantity {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<Expr>;
let _: ::core::cmp::AssertParamIsEq<Option<TableSampleUnit>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableSampleQuantity {
#[inline]
fn cmp(&self, other: &TableSampleQuantity) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.parenthesized, &other.parenthesized)
{
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.value, &other.value) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.unit, &other.unit),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableSampleQuantity {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.parenthesized, state);
::core::hash::Hash::hash(&self.value, state);
::core::hash::Hash::hash(&self.unit, state)
}
}Hash)]
1762#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1763#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableSampleQuantity {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.parenthesized, visitor)?;
sqlparser::ast::Visit::visit(&self.value, visitor)?;
sqlparser::ast::Visit::visit(&self.unit, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableSampleQuantity {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.parenthesized,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.value, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.unit, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1764pub struct TableSampleQuantity {
1766 pub parenthesized: bool,
1768 pub value: Expr,
1770 pub unit: Option<TableSampleUnit>,
1772}
1773
1774impl fmt::Display for TableSampleQuantity {
1775 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1776 if self.parenthesized {
1777 f.write_fmt(format_args!("("))write!(f, "(")?;
1778 }
1779 f.write_fmt(format_args!("{0}", self.value))write!(f, "{}", self.value)?;
1780 if let Some(unit) = &self.unit {
1781 f.write_fmt(format_args!(" {0}", unit))write!(f, " {unit}")?;
1782 }
1783 if self.parenthesized {
1784 f.write_fmt(format_args!(")"))write!(f, ")")?;
1785 }
1786 Ok(())
1787 }
1788}
1789
1790#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableSampleMethod {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
TableSampleMethod::Row => "Row",
TableSampleMethod::Bernoulli => "Bernoulli",
TableSampleMethod::System => "System",
TableSampleMethod::Block => "Block",
})
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableSampleMethod {
#[inline]
fn clone(&self) -> TableSampleMethod { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for TableSampleMethod { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for TableSampleMethod {
#[inline]
fn eq(&self, other: &TableSampleMethod) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableSampleMethod {
#[inline]
fn partial_cmp(&self, other: &TableSampleMethod)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableSampleMethod {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableSampleMethod {
#[inline]
fn cmp(&self, other: &TableSampleMethod) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableSampleMethod {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
1792#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1793#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableSampleMethod {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Row => {}
Self::Bernoulli => {}
Self::System => {}
Self::Block => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableSampleMethod {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Row => {}
Self::Bernoulli => {}
Self::System => {}
Self::Block => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1794pub enum TableSampleMethod {
1796 Row,
1798 Bernoulli,
1800 System,
1802 Block,
1804}
1805
1806impl fmt::Display for TableSampleMethod {
1807 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1808 match self {
1809 TableSampleMethod::Bernoulli => f.write_fmt(format_args!("BERNOULLI"))write!(f, "BERNOULLI"),
1810 TableSampleMethod::Row => f.write_fmt(format_args!("ROW"))write!(f, "ROW"),
1811 TableSampleMethod::System => f.write_fmt(format_args!("SYSTEM"))write!(f, "SYSTEM"),
1812 TableSampleMethod::Block => f.write_fmt(format_args!("BLOCK"))write!(f, "BLOCK"),
1813 }
1814 }
1815}
1816
1817#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableSampleSeed {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"TableSampleSeed", "modifier", &self.modifier, "value",
&&self.value)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableSampleSeed {
#[inline]
fn clone(&self) -> TableSampleSeed {
TableSampleSeed {
modifier: ::core::clone::Clone::clone(&self.modifier),
value: ::core::clone::Clone::clone(&self.value),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TableSampleSeed {
#[inline]
fn eq(&self, other: &TableSampleSeed) -> bool {
self.modifier == other.modifier && self.value == other.value
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableSampleSeed {
#[inline]
fn partial_cmp(&self, other: &TableSampleSeed)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.modifier,
&other.modifier) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.value,
&other.value),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableSampleSeed {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TableSampleSeedModifier>;
let _: ::core::cmp::AssertParamIsEq<Value>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableSampleSeed {
#[inline]
fn cmp(&self, other: &TableSampleSeed) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.modifier, &other.modifier) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.value, &other.value),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableSampleSeed {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.modifier, state);
::core::hash::Hash::hash(&self.value, state)
}
}Hash)]
1818#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1819#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableSampleSeed {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.modifier, visitor)?;
sqlparser::ast::Visit::visit(&self.value, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableSampleSeed {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.modifier,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.value, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1820pub struct TableSampleSeed {
1822 pub modifier: TableSampleSeedModifier,
1824 pub value: Value,
1826}
1827
1828impl fmt::Display for TableSampleSeed {
1829 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1830 f.write_fmt(format_args!("{0} ({1})", self.modifier, self.value))write!(f, "{} ({})", self.modifier, self.value)?;
1831 Ok(())
1832 }
1833}
1834
1835#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableSampleSeedModifier {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
TableSampleSeedModifier::Repeatable => "Repeatable",
TableSampleSeedModifier::Seed => "Seed",
})
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableSampleSeedModifier {
#[inline]
fn clone(&self) -> TableSampleSeedModifier { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for TableSampleSeedModifier { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for TableSampleSeedModifier {
#[inline]
fn eq(&self, other: &TableSampleSeedModifier) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableSampleSeedModifier {
#[inline]
fn partial_cmp(&self, other: &TableSampleSeedModifier)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableSampleSeedModifier {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableSampleSeedModifier {
#[inline]
fn cmp(&self, other: &TableSampleSeedModifier) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableSampleSeedModifier {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
1836#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1837#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableSampleSeedModifier {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self { Self::Repeatable => {} Self::Seed => {} }
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableSampleSeedModifier {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self { Self::Repeatable => {} Self::Seed => {} }
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1838pub enum TableSampleSeedModifier {
1840 Repeatable,
1842 Seed,
1844}
1845
1846impl fmt::Display for TableSampleSeedModifier {
1847 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1848 match self {
1849 TableSampleSeedModifier::Repeatable => f.write_fmt(format_args!("REPEATABLE"))write!(f, "REPEATABLE"),
1850 TableSampleSeedModifier::Seed => f.write_fmt(format_args!("SEED"))write!(f, "SEED"),
1851 }
1852 }
1853}
1854
1855#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableSampleUnit {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
TableSampleUnit::Rows => "Rows",
TableSampleUnit::Percent => "Percent",
})
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableSampleUnit {
#[inline]
fn clone(&self) -> TableSampleUnit { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for TableSampleUnit { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for TableSampleUnit {
#[inline]
fn eq(&self, other: &TableSampleUnit) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableSampleUnit {
#[inline]
fn partial_cmp(&self, other: &TableSampleUnit)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableSampleUnit {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableSampleUnit {
#[inline]
fn cmp(&self, other: &TableSampleUnit) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableSampleUnit {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
1856#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1857#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableSampleUnit {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self { Self::Rows => {} Self::Percent => {} }
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableSampleUnit {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self { Self::Rows => {} Self::Percent => {} }
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1858pub enum TableSampleUnit {
1860 Rows,
1862 Percent,
1864}
1865
1866impl fmt::Display for TableSampleUnit {
1867 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1868 match self {
1869 TableSampleUnit::Percent => f.write_fmt(format_args!("PERCENT"))write!(f, "PERCENT"),
1870 TableSampleUnit::Rows => f.write_fmt(format_args!("ROWS"))write!(f, "ROWS"),
1871 }
1872 }
1873}
1874
1875#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableSampleBucket {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"TableSampleBucket", "bucket", &self.bucket, "total", &self.total,
"on", &&self.on)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableSampleBucket {
#[inline]
fn clone(&self) -> TableSampleBucket {
TableSampleBucket {
bucket: ::core::clone::Clone::clone(&self.bucket),
total: ::core::clone::Clone::clone(&self.total),
on: ::core::clone::Clone::clone(&self.on),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TableSampleBucket {
#[inline]
fn eq(&self, other: &TableSampleBucket) -> bool {
self.bucket == other.bucket && self.total == other.total &&
self.on == other.on
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableSampleBucket {
#[inline]
fn partial_cmp(&self, other: &TableSampleBucket)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.bucket,
&other.bucket) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.total,
&other.total) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.on, &other.on),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableSampleBucket {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Value>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableSampleBucket {
#[inline]
fn cmp(&self, other: &TableSampleBucket) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.bucket, &other.bucket) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.total, &other.total) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.on, &other.on),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableSampleBucket {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.bucket, state);
::core::hash::Hash::hash(&self.total, state);
::core::hash::Hash::hash(&self.on, state)
}
}Hash)]
1876#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1877#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableSampleBucket {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.bucket, visitor)?;
sqlparser::ast::Visit::visit(&self.total, visitor)?;
sqlparser::ast::Visit::visit(&self.on, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableSampleBucket {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.bucket, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.total, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.on, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1878pub struct TableSampleBucket {
1880 pub bucket: Value,
1882 pub total: Value,
1884 pub on: Option<Expr>,
1886}
1887
1888impl fmt::Display for TableSampleBucket {
1889 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1890 f.write_fmt(format_args!("BUCKET {0} OUT OF {1}", self.bucket, self.total))write!(f, "BUCKET {} OUT OF {}", self.bucket, self.total)?;
1891 if let Some(on) = &self.on {
1892 f.write_fmt(format_args!(" ON {0}", on))write!(f, " ON {on}")?;
1893 }
1894 Ok(())
1895 }
1896}
1897impl fmt::Display for TableSample {
1898 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1899 f.write_fmt(format_args!("{0}", self.modifier))write!(f, "{}", self.modifier)?;
1900 if let Some(name) = &self.name {
1901 f.write_fmt(format_args!(" {0}", name))write!(f, " {name}")?;
1902 }
1903 if let Some(quantity) = &self.quantity {
1904 f.write_fmt(format_args!(" {0}", quantity))write!(f, " {quantity}")?;
1905 }
1906 if let Some(seed) = &self.seed {
1907 f.write_fmt(format_args!(" {0}", seed))write!(f, " {seed}")?;
1908 }
1909 if let Some(bucket) = &self.bucket {
1910 f.write_fmt(format_args!(" ({0})", bucket))write!(f, " ({bucket})")?;
1911 }
1912 if let Some(offset) = &self.offset {
1913 f.write_fmt(format_args!(" OFFSET {0}", offset))write!(f, " OFFSET {offset}")?;
1914 }
1915 Ok(())
1916 }
1917}
1918
1919#[derive(#[automatically_derived]
impl ::core::fmt::Debug for PivotValueSource {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
PivotValueSource::List(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "List",
&__self_0),
PivotValueSource::Any(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Any",
&__self_0),
PivotValueSource::Subquery(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Subquery", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for PivotValueSource {
#[inline]
fn clone(&self) -> PivotValueSource {
match self {
PivotValueSource::List(__self_0) =>
PivotValueSource::List(::core::clone::Clone::clone(__self_0)),
PivotValueSource::Any(__self_0) =>
PivotValueSource::Any(::core::clone::Clone::clone(__self_0)),
PivotValueSource::Subquery(__self_0) =>
PivotValueSource::Subquery(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for PivotValueSource {
#[inline]
fn eq(&self, other: &PivotValueSource) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(PivotValueSource::List(__self_0),
PivotValueSource::List(__arg1_0)) => __self_0 == __arg1_0,
(PivotValueSource::Any(__self_0),
PivotValueSource::Any(__arg1_0)) => __self_0 == __arg1_0,
(PivotValueSource::Subquery(__self_0),
PivotValueSource::Subquery(__arg1_0)) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for PivotValueSource {
#[inline]
fn partial_cmp(&self, other: &PivotValueSource)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(PivotValueSource::List(__self_0),
PivotValueSource::List(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(PivotValueSource::Any(__self_0), PivotValueSource::Any(__arg1_0))
=> ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(PivotValueSource::Subquery(__self_0),
PivotValueSource::Subquery(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for PivotValueSource {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Vec<ExprWithAlias>>;
let _: ::core::cmp::AssertParamIsEq<Vec<OrderByExpr>>;
let _: ::core::cmp::AssertParamIsEq<Box<Query>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for PivotValueSource {
#[inline]
fn cmp(&self, other: &PivotValueSource) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(PivotValueSource::List(__self_0),
PivotValueSource::List(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(PivotValueSource::Any(__self_0),
PivotValueSource::Any(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(PivotValueSource::Subquery(__self_0),
PivotValueSource::Subquery(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for PivotValueSource {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
PivotValueSource::List(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
PivotValueSource::Any(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
PivotValueSource::Subquery(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash)]
1921#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1922#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for PivotValueSource {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::List(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Any(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Subquery(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for PivotValueSource {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::List(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Any(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Subquery(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1923pub enum PivotValueSource {
1924 List(Vec<ExprWithAlias>),
1928 Any(Vec<OrderByExpr>),
1932 Subquery(Box<Query>),
1936}
1937
1938impl fmt::Display for PivotValueSource {
1939 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1940 match self {
1941 PivotValueSource::List(values) => f.write_fmt(format_args!("{0}", display_comma_separated(values)))write!(f, "{}", display_comma_separated(values)),
1942 PivotValueSource::Any(order_by) => {
1943 f.write_fmt(format_args!("ANY"))write!(f, "ANY")?;
1944 if !order_by.is_empty() {
1945 f.write_fmt(format_args!(" ORDER BY {0}", display_comma_separated(order_by)))write!(f, " ORDER BY {}", display_comma_separated(order_by))?;
1946 }
1947 Ok(())
1948 }
1949 PivotValueSource::Subquery(query) => f.write_fmt(format_args!("{0}", query))write!(f, "{query}"),
1950 }
1951 }
1952}
1953
1954#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Measure {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Measure",
"expr", &self.expr, "alias", &&self.alias)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Measure {
#[inline]
fn clone(&self) -> Measure {
Measure {
expr: ::core::clone::Clone::clone(&self.expr),
alias: ::core::clone::Clone::clone(&self.alias),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Measure {
#[inline]
fn eq(&self, other: &Measure) -> bool {
self.expr == other.expr && self.alias == other.alias
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Measure {
#[inline]
fn partial_cmp(&self, other: &Measure)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.expr, &other.expr) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.alias,
&other.alias),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for Measure {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Expr>;
let _: ::core::cmp::AssertParamIsEq<Ident>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for Measure {
#[inline]
fn cmp(&self, other: &Measure) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.expr, &other.expr) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.alias, &other.alias),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Measure {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.expr, state);
::core::hash::Hash::hash(&self.alias, state)
}
}Hash)]
1958#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1959#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for Measure {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.expr, visitor)?;
sqlparser::ast::Visit::visit(&self.alias, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for Measure {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.expr, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.alias, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1960pub struct Measure {
1962 pub expr: Expr,
1964 pub alias: Ident,
1966}
1967
1968impl fmt::Display for Measure {
1969 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1970 f.write_fmt(format_args!("{0} AS {1}", self.expr, self.alias))write!(f, "{} AS {}", self.expr, self.alias)
1971 }
1972}
1973
1974#[derive(#[automatically_derived]
impl ::core::fmt::Debug for RowsPerMatch {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
RowsPerMatch::OneRow =>
::core::fmt::Formatter::write_str(f, "OneRow"),
RowsPerMatch::AllRows(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"AllRows", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for RowsPerMatch {
#[inline]
fn clone(&self) -> RowsPerMatch {
match self {
RowsPerMatch::OneRow => RowsPerMatch::OneRow,
RowsPerMatch::AllRows(__self_0) =>
RowsPerMatch::AllRows(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for RowsPerMatch {
#[inline]
fn eq(&self, other: &RowsPerMatch) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(RowsPerMatch::AllRows(__self_0),
RowsPerMatch::AllRows(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for RowsPerMatch {
#[inline]
fn partial_cmp(&self, other: &RowsPerMatch)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(RowsPerMatch::AllRows(__self_0), RowsPerMatch::AllRows(__arg1_0))
=> ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for RowsPerMatch {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Option<EmptyMatchesMode>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for RowsPerMatch {
#[inline]
fn cmp(&self, other: &RowsPerMatch) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(RowsPerMatch::AllRows(__self_0),
RowsPerMatch::AllRows(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for RowsPerMatch {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
RowsPerMatch::AllRows(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
1978#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
1979#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for RowsPerMatch {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::OneRow => {}
Self::AllRows(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for RowsPerMatch {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::OneRow => {}
Self::AllRows(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
1980pub enum RowsPerMatch {
1981 OneRow,
1983 AllRows(Option<EmptyMatchesMode>),
1985}
1986
1987impl fmt::Display for RowsPerMatch {
1988 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1989 match self {
1990 RowsPerMatch::OneRow => f.write_fmt(format_args!("ONE ROW PER MATCH"))write!(f, "ONE ROW PER MATCH"),
1991 RowsPerMatch::AllRows(mode) => {
1992 f.write_fmt(format_args!("ALL ROWS PER MATCH"))write!(f, "ALL ROWS PER MATCH")?;
1993 if let Some(mode) = mode {
1994 f.write_fmt(format_args!(" {0}", mode))write!(f, " {mode}")?;
1995 }
1996 Ok(())
1997 }
1998 }
1999 }
2000}
2001
2002#[derive(#[automatically_derived]
impl ::core::fmt::Debug for AfterMatchSkip {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
AfterMatchSkip::PastLastRow =>
::core::fmt::Formatter::write_str(f, "PastLastRow"),
AfterMatchSkip::ToNextRow =>
::core::fmt::Formatter::write_str(f, "ToNextRow"),
AfterMatchSkip::ToFirst(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ToFirst", &__self_0),
AfterMatchSkip::ToLast(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "ToLast",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for AfterMatchSkip {
#[inline]
fn clone(&self) -> AfterMatchSkip {
match self {
AfterMatchSkip::PastLastRow => AfterMatchSkip::PastLastRow,
AfterMatchSkip::ToNextRow => AfterMatchSkip::ToNextRow,
AfterMatchSkip::ToFirst(__self_0) =>
AfterMatchSkip::ToFirst(::core::clone::Clone::clone(__self_0)),
AfterMatchSkip::ToLast(__self_0) =>
AfterMatchSkip::ToLast(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for AfterMatchSkip {
#[inline]
fn eq(&self, other: &AfterMatchSkip) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(AfterMatchSkip::ToFirst(__self_0),
AfterMatchSkip::ToFirst(__arg1_0)) => __self_0 == __arg1_0,
(AfterMatchSkip::ToLast(__self_0),
AfterMatchSkip::ToLast(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for AfterMatchSkip {
#[inline]
fn partial_cmp(&self, other: &AfterMatchSkip)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(AfterMatchSkip::ToFirst(__self_0),
AfterMatchSkip::ToFirst(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(AfterMatchSkip::ToLast(__self_0),
AfterMatchSkip::ToLast(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for AfterMatchSkip {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for AfterMatchSkip {
#[inline]
fn cmp(&self, other: &AfterMatchSkip) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(AfterMatchSkip::ToFirst(__self_0),
AfterMatchSkip::ToFirst(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(AfterMatchSkip::ToLast(__self_0),
AfterMatchSkip::ToLast(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for AfterMatchSkip {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
AfterMatchSkip::ToFirst(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
AfterMatchSkip::ToLast(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
2006#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2007#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for AfterMatchSkip {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::PastLastRow => {}
Self::ToNextRow => {}
Self::ToFirst(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::ToLast(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for AfterMatchSkip {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::PastLastRow => {}
Self::ToNextRow => {}
Self::ToFirst(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::ToLast(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2008pub enum AfterMatchSkip {
2009 PastLastRow,
2011 ToNextRow,
2013 ToFirst(Ident),
2015 ToLast(Ident),
2017}
2018
2019impl fmt::Display for AfterMatchSkip {
2020 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2021 f.write_fmt(format_args!("AFTER MATCH SKIP "))write!(f, "AFTER MATCH SKIP ")?;
2022 match self {
2023 AfterMatchSkip::PastLastRow => f.write_fmt(format_args!("PAST LAST ROW"))write!(f, "PAST LAST ROW"),
2024 AfterMatchSkip::ToNextRow => f.write_fmt(format_args!(" TO NEXT ROW"))write!(f, " TO NEXT ROW"),
2025 AfterMatchSkip::ToFirst(symbol) => f.write_fmt(format_args!("TO FIRST {0}", symbol))write!(f, "TO FIRST {symbol}"),
2026 AfterMatchSkip::ToLast(symbol) => f.write_fmt(format_args!("TO LAST {0}", symbol))write!(f, "TO LAST {symbol}"),
2027 }
2028 }
2029}
2030
2031#[derive(#[automatically_derived]
impl ::core::fmt::Debug for EmptyMatchesMode {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
EmptyMatchesMode::Show => "Show",
EmptyMatchesMode::Omit => "Omit",
EmptyMatchesMode::WithUnmatched => "WithUnmatched",
})
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for EmptyMatchesMode {
#[inline]
fn clone(&self) -> EmptyMatchesMode {
match self {
EmptyMatchesMode::Show => EmptyMatchesMode::Show,
EmptyMatchesMode::Omit => EmptyMatchesMode::Omit,
EmptyMatchesMode::WithUnmatched =>
EmptyMatchesMode::WithUnmatched,
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for EmptyMatchesMode {
#[inline]
fn eq(&self, other: &EmptyMatchesMode) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for EmptyMatchesMode {
#[inline]
fn partial_cmp(&self, other: &EmptyMatchesMode)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for EmptyMatchesMode {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for EmptyMatchesMode {
#[inline]
fn cmp(&self, other: &EmptyMatchesMode) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for EmptyMatchesMode {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
2032#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2033#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for EmptyMatchesMode {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Show => {}
Self::Omit => {}
Self::WithUnmatched => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for EmptyMatchesMode {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Show => {}
Self::Omit => {}
Self::WithUnmatched => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2034pub enum EmptyMatchesMode {
2036 Show,
2038 Omit,
2040 WithUnmatched,
2042}
2043
2044impl fmt::Display for EmptyMatchesMode {
2045 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2046 match self {
2047 EmptyMatchesMode::Show => f.write_fmt(format_args!("SHOW EMPTY MATCHES"))write!(f, "SHOW EMPTY MATCHES"),
2048 EmptyMatchesMode::Omit => f.write_fmt(format_args!("OMIT EMPTY MATCHES"))write!(f, "OMIT EMPTY MATCHES"),
2049 EmptyMatchesMode::WithUnmatched => f.write_fmt(format_args!("WITH UNMATCHED ROWS"))write!(f, "WITH UNMATCHED ROWS"),
2050 }
2051 }
2052}
2053
2054#[derive(#[automatically_derived]
impl ::core::fmt::Debug for SymbolDefinition {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"SymbolDefinition", "symbol", &self.symbol, "definition",
&&self.definition)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for SymbolDefinition {
#[inline]
fn clone(&self) -> SymbolDefinition {
SymbolDefinition {
symbol: ::core::clone::Clone::clone(&self.symbol),
definition: ::core::clone::Clone::clone(&self.definition),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for SymbolDefinition {
#[inline]
fn eq(&self, other: &SymbolDefinition) -> bool {
self.symbol == other.symbol && self.definition == other.definition
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for SymbolDefinition {
#[inline]
fn partial_cmp(&self, other: &SymbolDefinition)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.symbol,
&other.symbol) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.definition,
&other.definition),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for SymbolDefinition {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<Expr>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for SymbolDefinition {
#[inline]
fn cmp(&self, other: &SymbolDefinition) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.symbol, &other.symbol) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.definition, &other.definition),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for SymbolDefinition {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.symbol, state);
::core::hash::Hash::hash(&self.definition, state)
}
}Hash)]
2058#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2059#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for SymbolDefinition {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.symbol, visitor)?;
sqlparser::ast::Visit::visit(&self.definition, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for SymbolDefinition {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.symbol, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.definition,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2060pub struct SymbolDefinition {
2062 pub symbol: Ident,
2064 pub definition: Expr,
2066}
2067
2068impl fmt::Display for SymbolDefinition {
2069 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2070 f.write_fmt(format_args!("{0} AS {1}", self.symbol, self.definition))write!(f, "{} AS {}", self.symbol, self.definition)
2071 }
2072}
2073
2074#[derive(#[automatically_derived]
impl ::core::fmt::Debug for MatchRecognizeSymbol {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
MatchRecognizeSymbol::Named(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Named",
&__self_0),
MatchRecognizeSymbol::Start =>
::core::fmt::Formatter::write_str(f, "Start"),
MatchRecognizeSymbol::End =>
::core::fmt::Formatter::write_str(f, "End"),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for MatchRecognizeSymbol {
#[inline]
fn clone(&self) -> MatchRecognizeSymbol {
match self {
MatchRecognizeSymbol::Named(__self_0) =>
MatchRecognizeSymbol::Named(::core::clone::Clone::clone(__self_0)),
MatchRecognizeSymbol::Start => MatchRecognizeSymbol::Start,
MatchRecognizeSymbol::End => MatchRecognizeSymbol::End,
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for MatchRecognizeSymbol {
#[inline]
fn eq(&self, other: &MatchRecognizeSymbol) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(MatchRecognizeSymbol::Named(__self_0),
MatchRecognizeSymbol::Named(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for MatchRecognizeSymbol {
#[inline]
fn partial_cmp(&self, other: &MatchRecognizeSymbol)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(MatchRecognizeSymbol::Named(__self_0),
MatchRecognizeSymbol::Named(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for MatchRecognizeSymbol {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for MatchRecognizeSymbol {
#[inline]
fn cmp(&self, other: &MatchRecognizeSymbol) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(MatchRecognizeSymbol::Named(__self_0),
MatchRecognizeSymbol::Named(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for MatchRecognizeSymbol {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
MatchRecognizeSymbol::Named(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
2076#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2077#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for MatchRecognizeSymbol {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Named(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Start => {}
Self::End => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for MatchRecognizeSymbol {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Named(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Start => {}
Self::End => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2078pub enum MatchRecognizeSymbol {
2079 Named(Ident),
2081 Start,
2083 End,
2085}
2086
2087impl fmt::Display for MatchRecognizeSymbol {
2088 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2089 match self {
2090 MatchRecognizeSymbol::Named(symbol) => f.write_fmt(format_args!("{0}", symbol))write!(f, "{symbol}"),
2091 MatchRecognizeSymbol::Start => f.write_fmt(format_args!("^"))write!(f, "^"),
2092 MatchRecognizeSymbol::End => f.write_fmt(format_args!("$"))write!(f, "$"),
2093 }
2094 }
2095}
2096
2097#[derive(#[automatically_derived]
impl ::core::fmt::Debug for MatchRecognizePattern {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
MatchRecognizePattern::Symbol(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Symbol",
&__self_0),
MatchRecognizePattern::Exclude(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Exclude", &__self_0),
MatchRecognizePattern::Permute(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Permute", &__self_0),
MatchRecognizePattern::Concat(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Concat",
&__self_0),
MatchRecognizePattern::Group(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Group",
&__self_0),
MatchRecognizePattern::Alternation(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Alternation", &__self_0),
MatchRecognizePattern::Repetition(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Repetition", __self_0, &__self_1),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for MatchRecognizePattern {
#[inline]
fn clone(&self) -> MatchRecognizePattern {
match self {
MatchRecognizePattern::Symbol(__self_0) =>
MatchRecognizePattern::Symbol(::core::clone::Clone::clone(__self_0)),
MatchRecognizePattern::Exclude(__self_0) =>
MatchRecognizePattern::Exclude(::core::clone::Clone::clone(__self_0)),
MatchRecognizePattern::Permute(__self_0) =>
MatchRecognizePattern::Permute(::core::clone::Clone::clone(__self_0)),
MatchRecognizePattern::Concat(__self_0) =>
MatchRecognizePattern::Concat(::core::clone::Clone::clone(__self_0)),
MatchRecognizePattern::Group(__self_0) =>
MatchRecognizePattern::Group(::core::clone::Clone::clone(__self_0)),
MatchRecognizePattern::Alternation(__self_0) =>
MatchRecognizePattern::Alternation(::core::clone::Clone::clone(__self_0)),
MatchRecognizePattern::Repetition(__self_0, __self_1) =>
MatchRecognizePattern::Repetition(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for MatchRecognizePattern {
#[inline]
fn eq(&self, other: &MatchRecognizePattern) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(MatchRecognizePattern::Symbol(__self_0),
MatchRecognizePattern::Symbol(__arg1_0)) =>
__self_0 == __arg1_0,
(MatchRecognizePattern::Exclude(__self_0),
MatchRecognizePattern::Exclude(__arg1_0)) =>
__self_0 == __arg1_0,
(MatchRecognizePattern::Permute(__self_0),
MatchRecognizePattern::Permute(__arg1_0)) =>
__self_0 == __arg1_0,
(MatchRecognizePattern::Concat(__self_0),
MatchRecognizePattern::Concat(__arg1_0)) =>
__self_0 == __arg1_0,
(MatchRecognizePattern::Group(__self_0),
MatchRecognizePattern::Group(__arg1_0)) =>
__self_0 == __arg1_0,
(MatchRecognizePattern::Alternation(__self_0),
MatchRecognizePattern::Alternation(__arg1_0)) =>
__self_0 == __arg1_0,
(MatchRecognizePattern::Repetition(__self_0, __self_1),
MatchRecognizePattern::Repetition(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for MatchRecognizePattern {
#[inline]
fn partial_cmp(&self, other: &MatchRecognizePattern)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(MatchRecognizePattern::Symbol(__self_0),
MatchRecognizePattern::Symbol(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(MatchRecognizePattern::Exclude(__self_0),
MatchRecognizePattern::Exclude(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(MatchRecognizePattern::Permute(__self_0),
MatchRecognizePattern::Permute(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(MatchRecognizePattern::Concat(__self_0),
MatchRecognizePattern::Concat(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(MatchRecognizePattern::Group(__self_0),
MatchRecognizePattern::Group(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(MatchRecognizePattern::Alternation(__self_0),
MatchRecognizePattern::Alternation(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(MatchRecognizePattern::Repetition(__self_0, __self_1),
MatchRecognizePattern::Repetition(__arg1_0, __arg1_1)) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for MatchRecognizePattern {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<MatchRecognizeSymbol>;
let _: ::core::cmp::AssertParamIsEq<Vec<MatchRecognizeSymbol>>;
let _: ::core::cmp::AssertParamIsEq<Vec<MatchRecognizePattern>>;
let _: ::core::cmp::AssertParamIsEq<Box<MatchRecognizePattern>>;
let _: ::core::cmp::AssertParamIsEq<Vec<MatchRecognizePattern>>;
let _: ::core::cmp::AssertParamIsEq<Box<MatchRecognizePattern>>;
let _: ::core::cmp::AssertParamIsEq<RepetitionQuantifier>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for MatchRecognizePattern {
#[inline]
fn cmp(&self, other: &MatchRecognizePattern) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(MatchRecognizePattern::Symbol(__self_0),
MatchRecognizePattern::Symbol(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(MatchRecognizePattern::Exclude(__self_0),
MatchRecognizePattern::Exclude(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(MatchRecognizePattern::Permute(__self_0),
MatchRecognizePattern::Permute(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(MatchRecognizePattern::Concat(__self_0),
MatchRecognizePattern::Concat(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(MatchRecognizePattern::Group(__self_0),
MatchRecognizePattern::Group(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(MatchRecognizePattern::Alternation(__self_0),
MatchRecognizePattern::Alternation(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(MatchRecognizePattern::Repetition(__self_0, __self_1),
MatchRecognizePattern::Repetition(__arg1_0, __arg1_1)) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for MatchRecognizePattern {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
MatchRecognizePattern::Symbol(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
MatchRecognizePattern::Exclude(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
MatchRecognizePattern::Permute(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
MatchRecognizePattern::Concat(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
MatchRecognizePattern::Group(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
MatchRecognizePattern::Alternation(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
MatchRecognizePattern::Repetition(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
}
}
}Hash)]
2101#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2102#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for MatchRecognizePattern {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Symbol(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Exclude(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Permute(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Concat(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Group(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Alternation(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Repetition(_0, _1) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
sqlparser::ast::Visit::visit(_1, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for MatchRecognizePattern {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Symbol(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Exclude(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Permute(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Concat(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Group(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Alternation(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Repetition(_0, _1) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
sqlparser::ast::VisitMut::visit(_1, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2103pub enum MatchRecognizePattern {
2104 Symbol(MatchRecognizeSymbol),
2106 Exclude(MatchRecognizeSymbol),
2108 Permute(Vec<MatchRecognizeSymbol>),
2110 Concat(Vec<MatchRecognizePattern>),
2112 Group(Box<MatchRecognizePattern>),
2114 Alternation(Vec<MatchRecognizePattern>),
2116 Repetition(Box<MatchRecognizePattern>, RepetitionQuantifier),
2118}
2119
2120impl fmt::Display for MatchRecognizePattern {
2121 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2122 use MatchRecognizePattern::*;
2123 match self {
2124 Symbol(symbol) => f.write_fmt(format_args!("{0}", symbol))write!(f, "{symbol}"),
2125 Exclude(symbol) => f.write_fmt(format_args!("{{- {0} -}}", symbol))write!(f, "{{- {symbol} -}}"),
2126 Permute(symbols) => f.write_fmt(format_args!("PERMUTE({0})", display_comma_separated(symbols)))write!(f, "PERMUTE({})", display_comma_separated(symbols)),
2127 Concat(patterns) => f.write_fmt(format_args!("{0}", display_separated(patterns, " ")))write!(f, "{}", display_separated(patterns, " ")),
2128 Group(pattern) => f.write_fmt(format_args!("( {0} )", pattern))write!(f, "( {pattern} )"),
2129 Alternation(patterns) => f.write_fmt(format_args!("{0}", display_separated(patterns, " | ")))write!(f, "{}", display_separated(patterns, " | ")),
2130 Repetition(pattern, op) => f.write_fmt(format_args!("{0}{1}", pattern, op))write!(f, "{pattern}{op}"),
2131 }
2132 }
2133}
2134
2135#[derive(#[automatically_derived]
impl ::core::fmt::Debug for RepetitionQuantifier {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
RepetitionQuantifier::ZeroOrMore =>
::core::fmt::Formatter::write_str(f, "ZeroOrMore"),
RepetitionQuantifier::OneOrMore =>
::core::fmt::Formatter::write_str(f, "OneOrMore"),
RepetitionQuantifier::AtMostOne =>
::core::fmt::Formatter::write_str(f, "AtMostOne"),
RepetitionQuantifier::Exactly(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Exactly", &__self_0),
RepetitionQuantifier::AtLeast(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"AtLeast", &__self_0),
RepetitionQuantifier::AtMost(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "AtMost",
&__self_0),
RepetitionQuantifier::Range(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Range",
__self_0, &__self_1),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for RepetitionQuantifier {
#[inline]
fn clone(&self) -> RepetitionQuantifier {
match self {
RepetitionQuantifier::ZeroOrMore =>
RepetitionQuantifier::ZeroOrMore,
RepetitionQuantifier::OneOrMore =>
RepetitionQuantifier::OneOrMore,
RepetitionQuantifier::AtMostOne =>
RepetitionQuantifier::AtMostOne,
RepetitionQuantifier::Exactly(__self_0) =>
RepetitionQuantifier::Exactly(::core::clone::Clone::clone(__self_0)),
RepetitionQuantifier::AtLeast(__self_0) =>
RepetitionQuantifier::AtLeast(::core::clone::Clone::clone(__self_0)),
RepetitionQuantifier::AtMost(__self_0) =>
RepetitionQuantifier::AtMost(::core::clone::Clone::clone(__self_0)),
RepetitionQuantifier::Range(__self_0, __self_1) =>
RepetitionQuantifier::Range(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for RepetitionQuantifier {
#[inline]
fn eq(&self, other: &RepetitionQuantifier) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(RepetitionQuantifier::Exactly(__self_0),
RepetitionQuantifier::Exactly(__arg1_0)) =>
__self_0 == __arg1_0,
(RepetitionQuantifier::AtLeast(__self_0),
RepetitionQuantifier::AtLeast(__arg1_0)) =>
__self_0 == __arg1_0,
(RepetitionQuantifier::AtMost(__self_0),
RepetitionQuantifier::AtMost(__arg1_0)) =>
__self_0 == __arg1_0,
(RepetitionQuantifier::Range(__self_0, __self_1),
RepetitionQuantifier::Range(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for RepetitionQuantifier {
#[inline]
fn partial_cmp(&self, other: &RepetitionQuantifier)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(RepetitionQuantifier::Exactly(__self_0),
RepetitionQuantifier::Exactly(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(RepetitionQuantifier::AtLeast(__self_0),
RepetitionQuantifier::AtLeast(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(RepetitionQuantifier::AtMost(__self_0),
RepetitionQuantifier::AtMost(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(RepetitionQuantifier::Range(__self_0, __self_1),
RepetitionQuantifier::Range(__arg1_0, __arg1_1)) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for RepetitionQuantifier {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<u32>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for RepetitionQuantifier {
#[inline]
fn cmp(&self, other: &RepetitionQuantifier) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(RepetitionQuantifier::Exactly(__self_0),
RepetitionQuantifier::Exactly(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(RepetitionQuantifier::AtLeast(__self_0),
RepetitionQuantifier::AtLeast(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(RepetitionQuantifier::AtMost(__self_0),
RepetitionQuantifier::AtMost(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(RepetitionQuantifier::Range(__self_0, __self_1),
RepetitionQuantifier::Range(__arg1_0, __arg1_1)) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for RepetitionQuantifier {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
RepetitionQuantifier::Exactly(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
RepetitionQuantifier::AtLeast(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
RepetitionQuantifier::AtMost(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
RepetitionQuantifier::Range(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
_ => {}
}
}
}Hash)]
2138#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2139#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for RepetitionQuantifier {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::ZeroOrMore => {}
Self::OneOrMore => {}
Self::AtMostOne => {}
Self::Exactly(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::AtLeast(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::AtMost(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Range(_0, _1) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
sqlparser::ast::Visit::visit(_1, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for RepetitionQuantifier {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::ZeroOrMore => {}
Self::OneOrMore => {}
Self::AtMostOne => {}
Self::Exactly(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::AtLeast(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::AtMost(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Range(_0, _1) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
sqlparser::ast::VisitMut::visit(_1, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2140pub enum RepetitionQuantifier {
2141 ZeroOrMore,
2143 OneOrMore,
2145 AtMostOne,
2147 Exactly(u32),
2149 AtLeast(u32),
2151 AtMost(u32),
2153 Range(u32, u32),
2155}
2156
2157impl fmt::Display for RepetitionQuantifier {
2158 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2159 use RepetitionQuantifier::*;
2160 match self {
2161 ZeroOrMore => f.write_fmt(format_args!("*"))write!(f, "*"),
2162 OneOrMore => f.write_fmt(format_args!("+"))write!(f, "+"),
2163 AtMostOne => f.write_fmt(format_args!("?"))write!(f, "?"),
2164 Exactly(n) => f.write_fmt(format_args!("{{{0}}}", n))write!(f, "{{{n}}}"),
2165 AtLeast(n) => f.write_fmt(format_args!("{{{0},}}", n))write!(f, "{{{n},}}"),
2166 AtMost(n) => f.write_fmt(format_args!("{{,{0}}}", n))write!(f, "{{,{n}}}"),
2167 Range(n, m) => f.write_fmt(format_args!("{{{0},{1}}}", n, m))write!(f, "{{{n},{m}}}"),
2168 }
2169 }
2170}
2171
2172impl fmt::Display for TableFactor {
2173 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2174 match self {
2175 TableFactor::Table {
2176 name,
2177 alias,
2178 args,
2179 with_hints,
2180 version,
2181 partitions,
2182 with_ordinality,
2183 json_path,
2184 sample,
2185 index_hints,
2186 } => {
2187 name.fmt(f)?;
2188 if let Some(json_path) = json_path {
2189 json_path.fmt(f)?;
2190 }
2191 if !partitions.is_empty() {
2192 f.write_fmt(format_args!("PARTITION ({0})",
display_comma_separated(partitions)))write!(f, "PARTITION ({})", display_comma_separated(partitions))?;
2193 }
2194 if let Some(args) = args {
2195 f.write_fmt(format_args!("("))write!(f, "(")?;
2196 f.write_fmt(format_args!("{0}", display_comma_separated(&args.args)))write!(f, "{}", display_comma_separated(&args.args))?;
2197 if let Some(ref settings) = args.settings {
2198 if !args.args.is_empty() {
2199 f.write_fmt(format_args!(", "))write!(f, ", ")?;
2200 }
2201 f.write_fmt(format_args!("SETTINGS {0}", display_comma_separated(settings)))write!(f, "SETTINGS {}", display_comma_separated(settings))?;
2202 }
2203 f.write_fmt(format_args!(")"))write!(f, ")")?;
2204 }
2205 if *with_ordinality {
2206 f.write_fmt(format_args!(" WITH ORDINALITY"))write!(f, " WITH ORDINALITY")?;
2207 }
2208 if let Some(TableSampleKind::BeforeTableAlias(sample)) = sample {
2209 f.write_fmt(format_args!(" {0}", sample))write!(f, " {sample}")?;
2210 }
2211 if let Some(alias) = alias {
2212 f.write_fmt(format_args!(" {0}", alias))write!(f, " {alias}")?;
2213 }
2214 if !index_hints.is_empty() {
2215 f.write_fmt(format_args!(" {0}", display_separated(index_hints, " ")))write!(f, " {}", display_separated(index_hints, " "))?;
2216 }
2217 if !with_hints.is_empty() {
2218 f.write_fmt(format_args!(" WITH ({0})", display_comma_separated(with_hints)))write!(f, " WITH ({})", display_comma_separated(with_hints))?;
2219 }
2220 if let Some(version) = version {
2221 f.write_fmt(format_args!(" {0}", version))write!(f, " {version}")?;
2222 }
2223 if let Some(TableSampleKind::AfterTableAlias(sample)) = sample {
2224 f.write_fmt(format_args!(" {0}", sample))write!(f, " {sample}")?;
2225 }
2226 Ok(())
2227 }
2228 TableFactor::Derived {
2229 lateral,
2230 subquery,
2231 alias,
2232 sample,
2233 } => {
2234 if *lateral {
2235 f.write_fmt(format_args!("LATERAL "))write!(f, "LATERAL ")?;
2236 }
2237 f.write_str("(")?;
2238 NewLine.fmt(f)?;
2239 Indent(subquery).fmt(f)?;
2240 NewLine.fmt(f)?;
2241 f.write_str(")")?;
2242 if let Some(alias) = alias {
2243 f.write_fmt(format_args!(" {0}", alias))write!(f, " {alias}")?;
2244 }
2245 if let Some(TableSampleKind::AfterTableAlias(sample)) = sample {
2246 f.write_fmt(format_args!(" {0}", sample))write!(f, " {sample}")?;
2247 }
2248 Ok(())
2249 }
2250 TableFactor::Function {
2251 lateral,
2252 name,
2253 args,
2254 alias,
2255 } => {
2256 if *lateral {
2257 f.write_fmt(format_args!("LATERAL "))write!(f, "LATERAL ")?;
2258 }
2259 f.write_fmt(format_args!("{0}", name))write!(f, "{name}")?;
2260 f.write_fmt(format_args!("({0})", display_comma_separated(args)))write!(f, "({})", display_comma_separated(args))?;
2261 if let Some(alias) = alias {
2262 f.write_fmt(format_args!(" {0}", alias))write!(f, " {alias}")?;
2263 }
2264 Ok(())
2265 }
2266 TableFactor::TableFunction { expr, alias } => {
2267 f.write_fmt(format_args!("TABLE({0})", expr))write!(f, "TABLE({expr})")?;
2268 if let Some(alias) = alias {
2269 f.write_fmt(format_args!(" {0}", alias))write!(f, " {alias}")?;
2270 }
2271 Ok(())
2272 }
2273 TableFactor::UNNEST {
2274 alias,
2275 array_exprs,
2276 with_offset,
2277 with_offset_alias,
2278 with_ordinality,
2279 } => {
2280 f.write_fmt(format_args!("UNNEST({0})", display_comma_separated(array_exprs)))write!(f, "UNNEST({})", display_comma_separated(array_exprs))?;
2281
2282 if *with_ordinality {
2283 f.write_fmt(format_args!(" WITH ORDINALITY"))write!(f, " WITH ORDINALITY")?;
2284 }
2285
2286 if let Some(alias) = alias {
2287 f.write_fmt(format_args!(" {0}", alias))write!(f, " {alias}")?;
2288 }
2289 if *with_offset {
2290 f.write_fmt(format_args!(" WITH OFFSET"))write!(f, " WITH OFFSET")?;
2291 }
2292 if let Some(alias) = with_offset_alias {
2293 f.write_fmt(format_args!(" {0}", alias))write!(f, " {alias}")?;
2294 }
2295 Ok(())
2296 }
2297 TableFactor::JsonTable {
2298 json_expr,
2299 json_path,
2300 columns,
2301 alias,
2302 } => {
2303 f.write_fmt(format_args!("JSON_TABLE({1}, {2} COLUMNS({0}))",
display_comma_separated(columns), json_expr, json_path))write!(
2304 f,
2305 "JSON_TABLE({json_expr}, {json_path} COLUMNS({columns}))",
2306 columns = display_comma_separated(columns)
2307 )?;
2308 if let Some(alias) = alias {
2309 f.write_fmt(format_args!(" {0}", alias))write!(f, " {alias}")?;
2310 }
2311 Ok(())
2312 }
2313 TableFactor::OpenJsonTable {
2314 json_expr,
2315 json_path,
2316 columns,
2317 alias,
2318 } => {
2319 f.write_fmt(format_args!("OPENJSON({0}", json_expr))write!(f, "OPENJSON({json_expr}")?;
2320 if let Some(json_path) = json_path {
2321 f.write_fmt(format_args!(", {0}", json_path))write!(f, ", {json_path}")?;
2322 }
2323 f.write_fmt(format_args!(")"))write!(f, ")")?;
2324 if !columns.is_empty() {
2325 f.write_fmt(format_args!(" WITH ({0})", display_comma_separated(columns)))write!(f, " WITH ({})", display_comma_separated(columns))?;
2326 }
2327 if let Some(alias) = alias {
2328 f.write_fmt(format_args!(" {0}", alias))write!(f, " {alias}")?;
2329 }
2330 Ok(())
2331 }
2332 TableFactor::NestedJoin {
2333 table_with_joins,
2334 alias,
2335 } => {
2336 f.write_fmt(format_args!("({0})", table_with_joins))write!(f, "({table_with_joins})")?;
2337 if let Some(alias) = alias {
2338 f.write_fmt(format_args!(" {0}", alias))write!(f, " {alias}")?;
2339 }
2340 Ok(())
2341 }
2342 TableFactor::Pivot {
2343 table,
2344 aggregate_functions,
2345 value_column,
2346 value_source,
2347 default_on_null,
2348 alias,
2349 } => {
2350 f.write_fmt(format_args!("{1} PIVOT({0} FOR ",
display_comma_separated(aggregate_functions), table))write!(
2351 f,
2352 "{table} PIVOT({} FOR ",
2353 display_comma_separated(aggregate_functions),
2354 )?;
2355 if value_column.len() == 1 {
2356 f.write_fmt(format_args!("{0}", value_column[0]))write!(f, "{}", value_column[0])?;
2357 } else {
2358 f.write_fmt(format_args!("({0})", display_comma_separated(value_column)))write!(f, "({})", display_comma_separated(value_column))?;
2359 }
2360 f.write_fmt(format_args!(" IN ({0})", value_source))write!(f, " IN ({value_source})")?;
2361 if let Some(expr) = default_on_null {
2362 f.write_fmt(format_args!(" DEFAULT ON NULL ({0})", expr))write!(f, " DEFAULT ON NULL ({expr})")?;
2363 }
2364 f.write_fmt(format_args!(")"))write!(f, ")")?;
2365 if let Some(alias) = alias {
2366 f.write_fmt(format_args!(" {0}", alias))write!(f, " {alias}")?;
2367 }
2368 Ok(())
2369 }
2370 TableFactor::Unpivot {
2371 table,
2372 null_inclusion,
2373 value,
2374 name,
2375 columns,
2376 alias,
2377 } => {
2378 f.write_fmt(format_args!("{0} UNPIVOT", table))write!(f, "{table} UNPIVOT")?;
2379 if let Some(null_inclusion) = null_inclusion {
2380 f.write_fmt(format_args!(" {0} ", null_inclusion))write!(f, " {null_inclusion} ")?;
2381 }
2382 f.write_fmt(format_args!("({0} FOR {1} IN ({2}))", value, name,
display_comma_separated(columns)))write!(
2383 f,
2384 "({} FOR {} IN ({}))",
2385 value,
2386 name,
2387 display_comma_separated(columns)
2388 )?;
2389 if let Some(alias) = alias {
2390 f.write_fmt(format_args!(" {0}", alias))write!(f, " {alias}")?;
2391 }
2392 Ok(())
2393 }
2394 TableFactor::MatchRecognize {
2395 table,
2396 partition_by,
2397 order_by,
2398 measures,
2399 rows_per_match,
2400 after_match_skip,
2401 pattern,
2402 symbols,
2403 alias,
2404 } => {
2405 f.write_fmt(format_args!("{0} MATCH_RECOGNIZE(", table))write!(f, "{table} MATCH_RECOGNIZE(")?;
2406 if !partition_by.is_empty() {
2407 f.write_fmt(format_args!("PARTITION BY {0} ",
display_comma_separated(partition_by)))write!(f, "PARTITION BY {} ", display_comma_separated(partition_by))?;
2408 }
2409 if !order_by.is_empty() {
2410 f.write_fmt(format_args!("ORDER BY {0} ", display_comma_separated(order_by)))write!(f, "ORDER BY {} ", display_comma_separated(order_by))?;
2411 }
2412 if !measures.is_empty() {
2413 f.write_fmt(format_args!("MEASURES {0} ", display_comma_separated(measures)))write!(f, "MEASURES {} ", display_comma_separated(measures))?;
2414 }
2415 if let Some(rows_per_match) = rows_per_match {
2416 f.write_fmt(format_args!("{0} ", rows_per_match))write!(f, "{rows_per_match} ")?;
2417 }
2418 if let Some(after_match_skip) = after_match_skip {
2419 f.write_fmt(format_args!("{0} ", after_match_skip))write!(f, "{after_match_skip} ")?;
2420 }
2421 f.write_fmt(format_args!("PATTERN ({0}) ", pattern))write!(f, "PATTERN ({pattern}) ")?;
2422 f.write_fmt(format_args!("DEFINE {0})", display_comma_separated(symbols)))write!(f, "DEFINE {})", display_comma_separated(symbols))?;
2423 if let Some(alias) = alias {
2424 f.write_fmt(format_args!(" {0}", alias))write!(f, " {alias}")?;
2425 }
2426 Ok(())
2427 }
2428 TableFactor::XmlTable {
2429 row_expression,
2430 passing,
2431 columns,
2432 alias,
2433 namespaces,
2434 } => {
2435 f.write_fmt(format_args!("XMLTABLE("))write!(f, "XMLTABLE(")?;
2436 if !namespaces.is_empty() {
2437 f.write_fmt(format_args!("XMLNAMESPACES({0}), ",
display_comma_separated(namespaces)))write!(
2438 f,
2439 "XMLNAMESPACES({}), ",
2440 display_comma_separated(namespaces)
2441 )?;
2442 }
2443 f.write_fmt(format_args!("{1}{2} COLUMNS {0})",
display_comma_separated(columns), row_expression, passing))write!(
2444 f,
2445 "{row_expression}{passing} COLUMNS {columns})",
2446 columns = display_comma_separated(columns)
2447 )?;
2448 if let Some(alias) = alias {
2449 f.write_fmt(format_args!(" {0}", alias))write!(f, " {alias}")?;
2450 }
2451 Ok(())
2452 }
2453 TableFactor::SemanticView {
2454 name,
2455 dimensions,
2456 metrics,
2457 facts,
2458 where_clause,
2459 alias,
2460 } => {
2461 f.write_fmt(format_args!("SEMANTIC_VIEW({0}", name))write!(f, "SEMANTIC_VIEW({name}")?;
2462
2463 if !dimensions.is_empty() {
2464 f.write_fmt(format_args!(" DIMENSIONS {0}",
display_comma_separated(dimensions)))write!(f, " DIMENSIONS {}", display_comma_separated(dimensions))?;
2465 }
2466
2467 if !metrics.is_empty() {
2468 f.write_fmt(format_args!(" METRICS {0}", display_comma_separated(metrics)))write!(f, " METRICS {}", display_comma_separated(metrics))?;
2469 }
2470
2471 if !facts.is_empty() {
2472 f.write_fmt(format_args!(" FACTS {0}", display_comma_separated(facts)))write!(f, " FACTS {}", display_comma_separated(facts))?;
2473 }
2474
2475 if let Some(where_clause) = where_clause {
2476 f.write_fmt(format_args!(" WHERE {0}", where_clause))write!(f, " WHERE {where_clause}")?;
2477 }
2478
2479 f.write_fmt(format_args!(")"))write!(f, ")")?;
2480
2481 if let Some(alias) = alias {
2482 f.write_fmt(format_args!(" {0}", alias))write!(f, " {alias}")?;
2483 }
2484
2485 Ok(())
2486 }
2487 }
2488 }
2489}
2490
2491#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableAlias {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "TableAlias",
"explicit", &self.explicit, "name", &self.name, "columns",
&&self.columns)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableAlias {
#[inline]
fn clone(&self) -> TableAlias {
TableAlias {
explicit: ::core::clone::Clone::clone(&self.explicit),
name: ::core::clone::Clone::clone(&self.name),
columns: ::core::clone::Clone::clone(&self.columns),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TableAlias {
#[inline]
fn eq(&self, other: &TableAlias) -> bool {
self.explicit == other.explicit && self.name == other.name &&
self.columns == other.columns
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableAlias {
#[inline]
fn partial_cmp(&self, other: &TableAlias)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.explicit,
&other.explicit) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.name,
&other.name) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.columns,
&other.columns),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableAlias {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<Vec<TableAliasColumnDef>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableAlias {
#[inline]
fn cmp(&self, other: &TableAlias) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.explicit, &other.explicit) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.name, &other.name) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.columns, &other.columns),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableAlias {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.explicit, state);
::core::hash::Hash::hash(&self.name, state);
::core::hash::Hash::hash(&self.columns, state)
}
}Hash)]
2492#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2493#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableAlias {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.explicit, visitor)?;
sqlparser::ast::Visit::visit(&self.name, visitor)?;
sqlparser::ast::Visit::visit(&self.columns, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableAlias {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.explicit,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.name, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.columns,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2494pub struct TableAlias {
2496 pub explicit: bool,
2500 pub name: Ident,
2502 pub columns: Vec<TableAliasColumnDef>,
2504}
2505
2506impl fmt::Display for TableAlias {
2507 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2508 f.write_fmt(format_args!("{0}{1}", if self.explicit { "AS " } else { "" },
self.name))write!(f, "{}{}", if self.explicit { "AS " } else { "" }, self.name)?;
2509 if !self.columns.is_empty() {
2510 f.write_fmt(format_args!(" ({0})", display_comma_separated(&self.columns)))write!(f, " ({})", display_comma_separated(&self.columns))?;
2511 }
2512 Ok(())
2513 }
2514}
2515
2516#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableAliasColumnDef {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"TableAliasColumnDef", "name", &self.name, "data_type",
&&self.data_type)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableAliasColumnDef {
#[inline]
fn clone(&self) -> TableAliasColumnDef {
TableAliasColumnDef {
name: ::core::clone::Clone::clone(&self.name),
data_type: ::core::clone::Clone::clone(&self.data_type),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TableAliasColumnDef {
#[inline]
fn eq(&self, other: &TableAliasColumnDef) -> bool {
self.name == other.name && self.data_type == other.data_type
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableAliasColumnDef {
#[inline]
fn partial_cmp(&self, other: &TableAliasColumnDef)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.name, &other.name) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.data_type,
&other.data_type),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableAliasColumnDef {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<Option<DataType>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableAliasColumnDef {
#[inline]
fn cmp(&self, other: &TableAliasColumnDef) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.name, &other.name) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.data_type, &other.data_type),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableAliasColumnDef {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.name, state);
::core::hash::Hash::hash(&self.data_type, state)
}
}Hash)]
2522#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2523#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableAliasColumnDef {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.name, visitor)?;
sqlparser::ast::Visit::visit(&self.data_type, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableAliasColumnDef {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.name, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.data_type,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2524pub struct TableAliasColumnDef {
2525 pub name: Ident,
2527 pub data_type: Option<DataType>,
2529}
2530
2531impl TableAliasColumnDef {
2532 pub fn from_name<S: Into<String>>(name: S) -> Self {
2534 TableAliasColumnDef {
2535 name: Ident::new(name),
2536 data_type: None,
2537 }
2538 }
2539}
2540
2541impl fmt::Display for TableAliasColumnDef {
2542 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2543 f.write_fmt(format_args!("{0}", self.name))write!(f, "{}", self.name)?;
2544 if let Some(ref data_type) = self.data_type {
2545 f.write_fmt(format_args!(" {0}", data_type))write!(f, " {data_type}")?;
2546 }
2547 Ok(())
2548 }
2549}
2550
2551#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TableVersion {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
TableVersion::ForSystemTimeAsOf(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ForSystemTimeAsOf", &__self_0),
TableVersion::TimestampAsOf(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TimestampAsOf", &__self_0),
TableVersion::VersionAsOf(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"VersionAsOf", &__self_0),
TableVersion::Function(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Function", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TableVersion {
#[inline]
fn clone(&self) -> TableVersion {
match self {
TableVersion::ForSystemTimeAsOf(__self_0) =>
TableVersion::ForSystemTimeAsOf(::core::clone::Clone::clone(__self_0)),
TableVersion::TimestampAsOf(__self_0) =>
TableVersion::TimestampAsOf(::core::clone::Clone::clone(__self_0)),
TableVersion::VersionAsOf(__self_0) =>
TableVersion::VersionAsOf(::core::clone::Clone::clone(__self_0)),
TableVersion::Function(__self_0) =>
TableVersion::Function(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TableVersion {
#[inline]
fn eq(&self, other: &TableVersion) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(TableVersion::ForSystemTimeAsOf(__self_0),
TableVersion::ForSystemTimeAsOf(__arg1_0)) =>
__self_0 == __arg1_0,
(TableVersion::TimestampAsOf(__self_0),
TableVersion::TimestampAsOf(__arg1_0)) =>
__self_0 == __arg1_0,
(TableVersion::VersionAsOf(__self_0),
TableVersion::VersionAsOf(__arg1_0)) =>
__self_0 == __arg1_0,
(TableVersion::Function(__self_0),
TableVersion::Function(__arg1_0)) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TableVersion {
#[inline]
fn partial_cmp(&self, other: &TableVersion)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(TableVersion::ForSystemTimeAsOf(__self_0),
TableVersion::ForSystemTimeAsOf(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(TableVersion::TimestampAsOf(__self_0),
TableVersion::TimestampAsOf(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(TableVersion::VersionAsOf(__self_0),
TableVersion::VersionAsOf(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(TableVersion::Function(__self_0),
TableVersion::Function(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TableVersion {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Expr>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TableVersion {
#[inline]
fn cmp(&self, other: &TableVersion) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(TableVersion::ForSystemTimeAsOf(__self_0),
TableVersion::ForSystemTimeAsOf(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(TableVersion::TimestampAsOf(__self_0),
TableVersion::TimestampAsOf(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(TableVersion::VersionAsOf(__self_0),
TableVersion::VersionAsOf(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(TableVersion::Function(__self_0),
TableVersion::Function(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TableVersion {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
TableVersion::ForSystemTimeAsOf(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
TableVersion::TimestampAsOf(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
TableVersion::VersionAsOf(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
TableVersion::Function(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash)]
2552#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2553#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TableVersion {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::ForSystemTimeAsOf(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::TimestampAsOf(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::VersionAsOf(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Function(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TableVersion {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::ForSystemTimeAsOf(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::TimestampAsOf(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::VersionAsOf(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Function(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2554pub enum TableVersion {
2556 ForSystemTimeAsOf(Expr),
2559 TimestampAsOf(Expr),
2563 VersionAsOf(Expr),
2567 Function(Expr),
2570}
2571
2572impl Display for TableVersion {
2573 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2574 match self {
2575 TableVersion::ForSystemTimeAsOf(e) => f.write_fmt(format_args!("FOR SYSTEM_TIME AS OF {0}", e))write!(f, "FOR SYSTEM_TIME AS OF {e}")?,
2576 TableVersion::TimestampAsOf(e) => f.write_fmt(format_args!("TIMESTAMP AS OF {0}", e))write!(f, "TIMESTAMP AS OF {e}")?,
2577 TableVersion::VersionAsOf(e) => f.write_fmt(format_args!("VERSION AS OF {0}", e))write!(f, "VERSION AS OF {e}")?,
2578 TableVersion::Function(func) => f.write_fmt(format_args!("{0}", func))write!(f, "{func}")?,
2579 }
2580 Ok(())
2581 }
2582}
2583
2584#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Join {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "Join",
"relation", &self.relation, "global", &self.global,
"join_operator", &&self.join_operator)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Join {
#[inline]
fn clone(&self) -> Join {
Join {
relation: ::core::clone::Clone::clone(&self.relation),
global: ::core::clone::Clone::clone(&self.global),
join_operator: ::core::clone::Clone::clone(&self.join_operator),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Join {
#[inline]
fn eq(&self, other: &Join) -> bool {
self.global == other.global && self.relation == other.relation &&
self.join_operator == other.join_operator
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Join {
#[inline]
fn partial_cmp(&self, other: &Join)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.relation,
&other.relation) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.global,
&other.global) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.join_operator,
&other.join_operator),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for Join {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<TableFactor>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<JoinOperator>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for Join {
#[inline]
fn cmp(&self, other: &Join) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.relation, &other.relation) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.global, &other.global) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.join_operator,
&other.join_operator),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Join {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.relation, state);
::core::hash::Hash::hash(&self.global, state);
::core::hash::Hash::hash(&self.join_operator, state)
}
}Hash)]
2585#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2586#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for Join {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.relation, visitor)?;
sqlparser::ast::Visit::visit(&self.global, visitor)?;
sqlparser::ast::Visit::visit(&self.join_operator, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for Join {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.relation,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.global, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.join_operator,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2587pub struct Join {
2589 pub relation: TableFactor,
2591 pub global: bool,
2594 pub join_operator: JoinOperator,
2596}
2597
2598impl fmt::Display for Join {
2599 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2600 fn prefix(constraint: &JoinConstraint) -> &'static str {
2601 match constraint {
2602 JoinConstraint::Natural => "NATURAL ",
2603 _ => "",
2604 }
2605 }
2606 fn suffix(constraint: &'_ JoinConstraint) -> impl fmt::Display + '_ {
2607 struct Suffix<'a>(&'a JoinConstraint);
2608 impl fmt::Display for Suffix<'_> {
2609 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2610 match self.0 {
2611 JoinConstraint::On(expr) => f.write_fmt(format_args!(" ON {0}", expr))write!(f, " ON {expr}"),
2612 JoinConstraint::Using(attrs) => {
2613 f.write_fmt(format_args!(" USING({0})", display_comma_separated(attrs)))write!(f, " USING({})", display_comma_separated(attrs))
2614 }
2615 _ => Ok(()),
2616 }
2617 }
2618 }
2619 Suffix(constraint)
2620 }
2621 if self.global {
2622 f.write_fmt(format_args!("GLOBAL "))write!(f, "GLOBAL ")?;
2623 }
2624
2625 match &self.join_operator {
2626 JoinOperator::Join(constraint) => f.write_fmt(format_args!("{0}JOIN {1}{2}", prefix(constraint), self.relation,
suffix(constraint))format_args!(
2627 "{}JOIN {}{}",
2628 prefix(constraint),
2629 self.relation,
2630 suffix(constraint)
2631 )),
2632 JoinOperator::Inner(constraint) => f.write_fmt(format_args!("{0}INNER JOIN {1}{2}", prefix(constraint), self.relation,
suffix(constraint))format_args!(
2633 "{}INNER JOIN {}{}",
2634 prefix(constraint),
2635 self.relation,
2636 suffix(constraint)
2637 )),
2638 JoinOperator::Left(constraint) => f.write_fmt(format_args!("{0}LEFT JOIN {1}{2}", prefix(constraint), self.relation,
suffix(constraint))format_args!(
2639 "{}LEFT JOIN {}{}",
2640 prefix(constraint),
2641 self.relation,
2642 suffix(constraint)
2643 )),
2644 JoinOperator::LeftOuter(constraint) => f.write_fmt(format_args!("{0}LEFT OUTER JOIN {1}{2}", prefix(constraint), self.relation,
suffix(constraint))format_args!(
2645 "{}LEFT OUTER JOIN {}{}",
2646 prefix(constraint),
2647 self.relation,
2648 suffix(constraint)
2649 )),
2650 JoinOperator::Right(constraint) => f.write_fmt(format_args!("{0}RIGHT JOIN {1}{2}", prefix(constraint), self.relation,
suffix(constraint))format_args!(
2651 "{}RIGHT JOIN {}{}",
2652 prefix(constraint),
2653 self.relation,
2654 suffix(constraint)
2655 )),
2656 JoinOperator::RightOuter(constraint) => f.write_fmt(format_args!("{0}RIGHT OUTER JOIN {1}{2}", prefix(constraint), self.relation,
suffix(constraint))format_args!(
2657 "{}RIGHT OUTER JOIN {}{}",
2658 prefix(constraint),
2659 self.relation,
2660 suffix(constraint)
2661 )),
2662 JoinOperator::FullOuter(constraint) => f.write_fmt(format_args!("{0}FULL JOIN {1}{2}", prefix(constraint), self.relation,
suffix(constraint))format_args!(
2663 "{}FULL JOIN {}{}",
2664 prefix(constraint),
2665 self.relation,
2666 suffix(constraint)
2667 )),
2668 JoinOperator::CrossJoin(constraint) => f.write_fmt(format_args!("CROSS JOIN {0}{1}", self.relation, suffix(constraint))format_args!(
2669 "CROSS JOIN {}{}",
2670 self.relation,
2671 suffix(constraint)
2672 )),
2673 JoinOperator::Semi(constraint) => f.write_fmt(format_args!("{0}SEMI JOIN {1}{2}", prefix(constraint), self.relation,
suffix(constraint))format_args!(
2674 "{}SEMI JOIN {}{}",
2675 prefix(constraint),
2676 self.relation,
2677 suffix(constraint)
2678 )),
2679 JoinOperator::LeftSemi(constraint) => f.write_fmt(format_args!("{0}LEFT SEMI JOIN {1}{2}", prefix(constraint), self.relation,
suffix(constraint))format_args!(
2680 "{}LEFT SEMI JOIN {}{}",
2681 prefix(constraint),
2682 self.relation,
2683 suffix(constraint)
2684 )),
2685 JoinOperator::RightSemi(constraint) => f.write_fmt(format_args!("{0}RIGHT SEMI JOIN {1}{2}", prefix(constraint), self.relation,
suffix(constraint))format_args!(
2686 "{}RIGHT SEMI JOIN {}{}",
2687 prefix(constraint),
2688 self.relation,
2689 suffix(constraint)
2690 )),
2691 JoinOperator::Anti(constraint) => f.write_fmt(format_args!("{0}ANTI JOIN {1}{2}", prefix(constraint), self.relation,
suffix(constraint))format_args!(
2692 "{}ANTI JOIN {}{}",
2693 prefix(constraint),
2694 self.relation,
2695 suffix(constraint)
2696 )),
2697 JoinOperator::LeftAnti(constraint) => f.write_fmt(format_args!("{0}LEFT ANTI JOIN {1}{2}", prefix(constraint), self.relation,
suffix(constraint))format_args!(
2698 "{}LEFT ANTI JOIN {}{}",
2699 prefix(constraint),
2700 self.relation,
2701 suffix(constraint)
2702 )),
2703 JoinOperator::RightAnti(constraint) => f.write_fmt(format_args!("{0}RIGHT ANTI JOIN {1}{2}", prefix(constraint), self.relation,
suffix(constraint))format_args!(
2704 "{}RIGHT ANTI JOIN {}{}",
2705 prefix(constraint),
2706 self.relation,
2707 suffix(constraint)
2708 )),
2709 JoinOperator::CrossApply => f.write_fmt(format_args!("CROSS APPLY {0}", self.relation)format_args!("CROSS APPLY {}", self.relation)),
2710 JoinOperator::OuterApply => f.write_fmt(format_args!("OUTER APPLY {0}", self.relation)format_args!("OUTER APPLY {}", self.relation)),
2711 JoinOperator::AsOf {
2712 match_condition,
2713 constraint,
2714 } => f.write_fmt(format_args!("ASOF JOIN {0} MATCH_CONDITION ({2}){1}", self.relation,
suffix(constraint), match_condition)format_args!(
2715 "ASOF JOIN {} MATCH_CONDITION ({match_condition}){}",
2716 self.relation,
2717 suffix(constraint)
2718 )),
2719 JoinOperator::StraightJoin(constraint) => f.write_fmt(format_args!("STRAIGHT_JOIN {0}{1}", self.relation, suffix(constraint))format_args!(
2720 "STRAIGHT_JOIN {}{}",
2721 self.relation,
2722 suffix(constraint)
2723 )),
2724 }
2725 }
2726}
2727
2728#[derive(#[automatically_derived]
impl ::core::fmt::Debug for JoinOperator {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
JoinOperator::Join(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Join",
&__self_0),
JoinOperator::Inner(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Inner",
&__self_0),
JoinOperator::Left(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Left",
&__self_0),
JoinOperator::LeftOuter(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"LeftOuter", &__self_0),
JoinOperator::Right(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Right",
&__self_0),
JoinOperator::RightOuter(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"RightOuter", &__self_0),
JoinOperator::FullOuter(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"FullOuter", &__self_0),
JoinOperator::CrossJoin(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"CrossJoin", &__self_0),
JoinOperator::Semi(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Semi",
&__self_0),
JoinOperator::LeftSemi(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"LeftSemi", &__self_0),
JoinOperator::RightSemi(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"RightSemi", &__self_0),
JoinOperator::Anti(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Anti",
&__self_0),
JoinOperator::LeftAnti(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"LeftAnti", &__self_0),
JoinOperator::RightAnti(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"RightAnti", &__self_0),
JoinOperator::CrossApply =>
::core::fmt::Formatter::write_str(f, "CrossApply"),
JoinOperator::OuterApply =>
::core::fmt::Formatter::write_str(f, "OuterApply"),
JoinOperator::AsOf {
match_condition: __self_0, constraint: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "AsOf",
"match_condition", __self_0, "constraint", &__self_1),
JoinOperator::StraightJoin(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"StraightJoin", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for JoinOperator {
#[inline]
fn clone(&self) -> JoinOperator {
match self {
JoinOperator::Join(__self_0) =>
JoinOperator::Join(::core::clone::Clone::clone(__self_0)),
JoinOperator::Inner(__self_0) =>
JoinOperator::Inner(::core::clone::Clone::clone(__self_0)),
JoinOperator::Left(__self_0) =>
JoinOperator::Left(::core::clone::Clone::clone(__self_0)),
JoinOperator::LeftOuter(__self_0) =>
JoinOperator::LeftOuter(::core::clone::Clone::clone(__self_0)),
JoinOperator::Right(__self_0) =>
JoinOperator::Right(::core::clone::Clone::clone(__self_0)),
JoinOperator::RightOuter(__self_0) =>
JoinOperator::RightOuter(::core::clone::Clone::clone(__self_0)),
JoinOperator::FullOuter(__self_0) =>
JoinOperator::FullOuter(::core::clone::Clone::clone(__self_0)),
JoinOperator::CrossJoin(__self_0) =>
JoinOperator::CrossJoin(::core::clone::Clone::clone(__self_0)),
JoinOperator::Semi(__self_0) =>
JoinOperator::Semi(::core::clone::Clone::clone(__self_0)),
JoinOperator::LeftSemi(__self_0) =>
JoinOperator::LeftSemi(::core::clone::Clone::clone(__self_0)),
JoinOperator::RightSemi(__self_0) =>
JoinOperator::RightSemi(::core::clone::Clone::clone(__self_0)),
JoinOperator::Anti(__self_0) =>
JoinOperator::Anti(::core::clone::Clone::clone(__self_0)),
JoinOperator::LeftAnti(__self_0) =>
JoinOperator::LeftAnti(::core::clone::Clone::clone(__self_0)),
JoinOperator::RightAnti(__self_0) =>
JoinOperator::RightAnti(::core::clone::Clone::clone(__self_0)),
JoinOperator::CrossApply => JoinOperator::CrossApply,
JoinOperator::OuterApply => JoinOperator::OuterApply,
JoinOperator::AsOf {
match_condition: __self_0, constraint: __self_1 } =>
JoinOperator::AsOf {
match_condition: ::core::clone::Clone::clone(__self_0),
constraint: ::core::clone::Clone::clone(__self_1),
},
JoinOperator::StraightJoin(__self_0) =>
JoinOperator::StraightJoin(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for JoinOperator {
#[inline]
fn eq(&self, other: &JoinOperator) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(JoinOperator::Join(__self_0), JoinOperator::Join(__arg1_0))
=> __self_0 == __arg1_0,
(JoinOperator::Inner(__self_0), JoinOperator::Inner(__arg1_0))
=> __self_0 == __arg1_0,
(JoinOperator::Left(__self_0), JoinOperator::Left(__arg1_0))
=> __self_0 == __arg1_0,
(JoinOperator::LeftOuter(__self_0),
JoinOperator::LeftOuter(__arg1_0)) => __self_0 == __arg1_0,
(JoinOperator::Right(__self_0), JoinOperator::Right(__arg1_0))
=> __self_0 == __arg1_0,
(JoinOperator::RightOuter(__self_0),
JoinOperator::RightOuter(__arg1_0)) => __self_0 == __arg1_0,
(JoinOperator::FullOuter(__self_0),
JoinOperator::FullOuter(__arg1_0)) => __self_0 == __arg1_0,
(JoinOperator::CrossJoin(__self_0),
JoinOperator::CrossJoin(__arg1_0)) => __self_0 == __arg1_0,
(JoinOperator::Semi(__self_0), JoinOperator::Semi(__arg1_0))
=> __self_0 == __arg1_0,
(JoinOperator::LeftSemi(__self_0),
JoinOperator::LeftSemi(__arg1_0)) => __self_0 == __arg1_0,
(JoinOperator::RightSemi(__self_0),
JoinOperator::RightSemi(__arg1_0)) => __self_0 == __arg1_0,
(JoinOperator::Anti(__self_0), JoinOperator::Anti(__arg1_0))
=> __self_0 == __arg1_0,
(JoinOperator::LeftAnti(__self_0),
JoinOperator::LeftAnti(__arg1_0)) => __self_0 == __arg1_0,
(JoinOperator::RightAnti(__self_0),
JoinOperator::RightAnti(__arg1_0)) => __self_0 == __arg1_0,
(JoinOperator::AsOf {
match_condition: __self_0, constraint: __self_1 },
JoinOperator::AsOf {
match_condition: __arg1_0, constraint: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(JoinOperator::StraightJoin(__self_0),
JoinOperator::StraightJoin(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for JoinOperator {
#[inline]
fn partial_cmp(&self, other: &JoinOperator)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match (self, other) {
(JoinOperator::Join(__self_0), JoinOperator::Join(__arg1_0))
=> ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinOperator::Inner(__self_0),
JoinOperator::Inner(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinOperator::Left(__self_0), JoinOperator::Left(__arg1_0))
=> ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinOperator::LeftOuter(__self_0),
JoinOperator::LeftOuter(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinOperator::Right(__self_0),
JoinOperator::Right(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinOperator::RightOuter(__self_0),
JoinOperator::RightOuter(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinOperator::FullOuter(__self_0),
JoinOperator::FullOuter(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinOperator::CrossJoin(__self_0),
JoinOperator::CrossJoin(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinOperator::Semi(__self_0), JoinOperator::Semi(__arg1_0))
=> ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinOperator::LeftSemi(__self_0),
JoinOperator::LeftSemi(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinOperator::RightSemi(__self_0),
JoinOperator::RightSemi(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinOperator::Anti(__self_0), JoinOperator::Anti(__arg1_0))
=> ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinOperator::LeftAnti(__self_0),
JoinOperator::LeftAnti(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinOperator::RightAnti(__self_0),
JoinOperator::RightAnti(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinOperator::AsOf {
match_condition: __self_0, constraint: __self_1 },
JoinOperator::AsOf {
match_condition: __arg1_0, constraint: __arg1_1 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0,
__arg1_0) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
(JoinOperator::StraightJoin(__self_0),
JoinOperator::StraightJoin(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::option::Option::Some(::core::cmp::Ordering::Equal),
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for JoinOperator {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<JoinConstraint>;
let _: ::core::cmp::AssertParamIsEq<Expr>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for JoinOperator {
#[inline]
fn cmp(&self, other: &JoinOperator) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(JoinOperator::Join(__self_0), JoinOperator::Join(__arg1_0))
=> ::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinOperator::Inner(__self_0),
JoinOperator::Inner(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinOperator::Left(__self_0), JoinOperator::Left(__arg1_0))
=> ::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinOperator::LeftOuter(__self_0),
JoinOperator::LeftOuter(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinOperator::Right(__self_0),
JoinOperator::Right(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinOperator::RightOuter(__self_0),
JoinOperator::RightOuter(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinOperator::FullOuter(__self_0),
JoinOperator::FullOuter(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinOperator::CrossJoin(__self_0),
JoinOperator::CrossJoin(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinOperator::Semi(__self_0), JoinOperator::Semi(__arg1_0))
=> ::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinOperator::LeftSemi(__self_0),
JoinOperator::LeftSemi(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinOperator::RightSemi(__self_0),
JoinOperator::RightSemi(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinOperator::Anti(__self_0), JoinOperator::Anti(__arg1_0))
=> ::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinOperator::LeftAnti(__self_0),
JoinOperator::LeftAnti(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinOperator::RightAnti(__self_0),
JoinOperator::RightAnti(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinOperator::AsOf {
match_condition: __self_0, constraint: __self_1 },
JoinOperator::AsOf {
match_condition: __arg1_0, constraint: __arg1_1 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
(JoinOperator::StraightJoin(__self_0),
JoinOperator::StraightJoin(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for JoinOperator {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
JoinOperator::Join(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinOperator::Inner(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinOperator::Left(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinOperator::LeftOuter(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinOperator::Right(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinOperator::RightOuter(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinOperator::FullOuter(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinOperator::CrossJoin(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinOperator::Semi(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinOperator::LeftSemi(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinOperator::RightSemi(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinOperator::Anti(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinOperator::LeftAnti(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinOperator::RightAnti(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinOperator::AsOf {
match_condition: __self_0, constraint: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
JoinOperator::StraightJoin(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
2729#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2730#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for JoinOperator {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Join(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Inner(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Left(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::LeftOuter(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Right(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::RightOuter(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::FullOuter(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::CrossJoin(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Semi(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::LeftSemi(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::RightSemi(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Anti(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::LeftAnti(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::RightAnti(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::CrossApply => {}
Self::OuterApply => {}
Self::AsOf { match_condition, constraint } => {
sqlparser::ast::Visit::visit(match_condition, visitor)?;
sqlparser::ast::Visit::visit(constraint, visitor)?;
}
Self::StraightJoin(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for JoinOperator {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Join(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Inner(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Left(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::LeftOuter(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Right(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::RightOuter(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::FullOuter(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::CrossJoin(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Semi(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::LeftSemi(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::RightSemi(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Anti(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::LeftAnti(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::RightAnti(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::CrossApply => {}
Self::OuterApply => {}
Self::AsOf { match_condition, constraint } => {
sqlparser::ast::VisitMut::visit(match_condition, visitor)?;
sqlparser::ast::VisitMut::visit(constraint, visitor)?;
}
Self::StraightJoin(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2731pub enum JoinOperator {
2733 Join(JoinConstraint),
2735 Inner(JoinConstraint),
2737 Left(JoinConstraint),
2739 LeftOuter(JoinConstraint),
2741 Right(JoinConstraint),
2743 RightOuter(JoinConstraint),
2745 FullOuter(JoinConstraint),
2747 CrossJoin(JoinConstraint),
2749 Semi(JoinConstraint),
2751 LeftSemi(JoinConstraint),
2753 RightSemi(JoinConstraint),
2755 Anti(JoinConstraint),
2757 LeftAnti(JoinConstraint),
2759 RightAnti(JoinConstraint),
2761 CrossApply,
2763 OuterApply,
2765 AsOf {
2769 match_condition: Expr,
2771 constraint: JoinConstraint,
2773 },
2774 StraightJoin(JoinConstraint),
2778}
2779
2780#[derive(#[automatically_derived]
impl ::core::fmt::Debug for JoinConstraint {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
JoinConstraint::On(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "On",
&__self_0),
JoinConstraint::Using(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Using",
&__self_0),
JoinConstraint::Natural =>
::core::fmt::Formatter::write_str(f, "Natural"),
JoinConstraint::None =>
::core::fmt::Formatter::write_str(f, "None"),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for JoinConstraint {
#[inline]
fn clone(&self) -> JoinConstraint {
match self {
JoinConstraint::On(__self_0) =>
JoinConstraint::On(::core::clone::Clone::clone(__self_0)),
JoinConstraint::Using(__self_0) =>
JoinConstraint::Using(::core::clone::Clone::clone(__self_0)),
JoinConstraint::Natural => JoinConstraint::Natural,
JoinConstraint::None => JoinConstraint::None,
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for JoinConstraint {
#[inline]
fn eq(&self, other: &JoinConstraint) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(JoinConstraint::On(__self_0), JoinConstraint::On(__arg1_0))
=> __self_0 == __arg1_0,
(JoinConstraint::Using(__self_0),
JoinConstraint::Using(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for JoinConstraint {
#[inline]
fn partial_cmp(&self, other: &JoinConstraint)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(JoinConstraint::On(__self_0), JoinConstraint::On(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JoinConstraint::Using(__self_0), JoinConstraint::Using(__arg1_0))
=> ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for JoinConstraint {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Expr>;
let _: ::core::cmp::AssertParamIsEq<Vec<ObjectName>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for JoinConstraint {
#[inline]
fn cmp(&self, other: &JoinConstraint) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(JoinConstraint::On(__self_0), JoinConstraint::On(__arg1_0))
=> ::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JoinConstraint::Using(__self_0),
JoinConstraint::Using(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for JoinConstraint {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
JoinConstraint::On(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JoinConstraint::Using(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
2781#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2782#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for JoinConstraint {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::On(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Using(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Natural => {}
Self::None => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for JoinConstraint {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::On(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Using(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Natural => {}
Self::None => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2783pub enum JoinConstraint {
2785 On(Expr),
2787 Using(Vec<ObjectName>),
2789 Natural,
2791 None,
2793}
2794
2795#[derive(#[automatically_derived]
impl ::core::fmt::Debug for OrderByKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
OrderByKind::All(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "All",
&__self_0),
OrderByKind::Expressions(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Expressions", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for OrderByKind {
#[inline]
fn clone(&self) -> OrderByKind {
match self {
OrderByKind::All(__self_0) =>
OrderByKind::All(::core::clone::Clone::clone(__self_0)),
OrderByKind::Expressions(__self_0) =>
OrderByKind::Expressions(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for OrderByKind {
#[inline]
fn eq(&self, other: &OrderByKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(OrderByKind::All(__self_0), OrderByKind::All(__arg1_0)) =>
__self_0 == __arg1_0,
(OrderByKind::Expressions(__self_0),
OrderByKind::Expressions(__arg1_0)) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for OrderByKind {
#[inline]
fn partial_cmp(&self, other: &OrderByKind)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(OrderByKind::All(__self_0), OrderByKind::All(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(OrderByKind::Expressions(__self_0),
OrderByKind::Expressions(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for OrderByKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<OrderByOptions>;
let _: ::core::cmp::AssertParamIsEq<Vec<OrderByExpr>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for OrderByKind {
#[inline]
fn cmp(&self, other: &OrderByKind) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(OrderByKind::All(__self_0), OrderByKind::All(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(OrderByKind::Expressions(__self_0),
OrderByKind::Expressions(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for OrderByKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
OrderByKind::All(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
OrderByKind::Expressions(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash)]
2796#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2797#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for OrderByKind {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::All(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Expressions(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for OrderByKind {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::All(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Expressions(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2798pub enum OrderByKind {
2800 All(OrderByOptions),
2805
2806 Expressions(Vec<OrderByExpr>),
2808}
2809
2810#[derive(#[automatically_derived]
impl ::core::fmt::Debug for OrderBy {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "OrderBy",
"kind", &self.kind, "interpolate", &&self.interpolate)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for OrderBy {
#[inline]
fn clone(&self) -> OrderBy {
OrderBy {
kind: ::core::clone::Clone::clone(&self.kind),
interpolate: ::core::clone::Clone::clone(&self.interpolate),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for OrderBy {
#[inline]
fn eq(&self, other: &OrderBy) -> bool {
self.kind == other.kind && self.interpolate == other.interpolate
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for OrderBy {
#[inline]
fn partial_cmp(&self, other: &OrderBy)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.kind, &other.kind) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.interpolate,
&other.interpolate),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for OrderBy {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<OrderByKind>;
let _: ::core::cmp::AssertParamIsEq<Option<Interpolate>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for OrderBy {
#[inline]
fn cmp(&self, other: &OrderBy) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.kind, &other.kind) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.interpolate, &other.interpolate),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for OrderBy {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.kind, state);
::core::hash::Hash::hash(&self.interpolate, state)
}
}Hash)]
2811#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2812#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for OrderBy {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.kind, visitor)?;
sqlparser::ast::Visit::visit(&self.interpolate, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for OrderBy {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.kind, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.interpolate,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2813pub struct OrderBy {
2815 pub kind: OrderByKind,
2817
2818 pub interpolate: Option<Interpolate>,
2820}
2821
2822impl fmt::Display for OrderBy {
2823 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2824 f.write_fmt(format_args!("ORDER BY"))write!(f, "ORDER BY")?;
2825 match &self.kind {
2826 OrderByKind::Expressions(exprs) => {
2827 f.write_fmt(format_args!(" {0}", display_comma_separated(exprs)))write!(f, " {}", display_comma_separated(exprs))?;
2828 }
2829 OrderByKind::All(all) => {
2830 f.write_fmt(format_args!(" ALL{0}", all))write!(f, " ALL{all}")?;
2831 }
2832 }
2833
2834 if let Some(ref interpolate) = self.interpolate {
2835 match &interpolate.exprs {
2836 Some(exprs) => f.write_fmt(format_args!(" INTERPOLATE ({0})",
display_comma_separated(exprs)))write!(f, " INTERPOLATE ({})", display_comma_separated(exprs))?,
2837 None => f.write_fmt(format_args!(" INTERPOLATE"))write!(f, " INTERPOLATE")?,
2838 }
2839 }
2840
2841 Ok(())
2842 }
2843}
2844
2845#[derive(#[automatically_derived]
impl ::core::fmt::Debug for OrderByExpr {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "OrderByExpr",
"expr", &self.expr, "options", &self.options, "with_fill",
&&self.with_fill)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for OrderByExpr {
#[inline]
fn clone(&self) -> OrderByExpr {
OrderByExpr {
expr: ::core::clone::Clone::clone(&self.expr),
options: ::core::clone::Clone::clone(&self.options),
with_fill: ::core::clone::Clone::clone(&self.with_fill),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for OrderByExpr {
#[inline]
fn eq(&self, other: &OrderByExpr) -> bool {
self.expr == other.expr && self.options == other.options &&
self.with_fill == other.with_fill
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for OrderByExpr {
#[inline]
fn partial_cmp(&self, other: &OrderByExpr)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.expr, &other.expr) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.options,
&other.options) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.with_fill,
&other.with_fill),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for OrderByExpr {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Expr>;
let _: ::core::cmp::AssertParamIsEq<OrderByOptions>;
let _: ::core::cmp::AssertParamIsEq<Option<WithFill>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for OrderByExpr {
#[inline]
fn cmp(&self, other: &OrderByExpr) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.expr, &other.expr) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.options, &other.options) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.with_fill, &other.with_fill),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for OrderByExpr {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.expr, state);
::core::hash::Hash::hash(&self.options, state);
::core::hash::Hash::hash(&self.with_fill, state)
}
}Hash)]
2847#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2848#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for OrderByExpr {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.expr, visitor)?;
sqlparser::ast::Visit::visit(&self.options, visitor)?;
sqlparser::ast::Visit::visit(&self.with_fill, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for OrderByExpr {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.expr, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.options,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.with_fill,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2849pub struct OrderByExpr {
2850 pub expr: Expr,
2852 pub options: OrderByOptions,
2854 pub with_fill: Option<WithFill>,
2856}
2857
2858impl From<Ident> for OrderByExpr {
2859 fn from(ident: Ident) -> Self {
2860 OrderByExpr {
2861 expr: Expr::Identifier(ident),
2862 options: OrderByOptions::default(),
2863 with_fill: None,
2864 }
2865 }
2866}
2867
2868impl fmt::Display for OrderByExpr {
2869 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2870 f.write_fmt(format_args!("{0}{1}", self.expr, self.options))write!(f, "{}{}", self.expr, self.options)?;
2871 if let Some(ref with_fill) = self.with_fill {
2872 f.write_fmt(format_args!(" {0}", with_fill))write!(f, " {with_fill}")?
2873 }
2874 Ok(())
2875 }
2876}
2877
2878#[derive(#[automatically_derived]
impl ::core::fmt::Debug for WithFill {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "WithFill",
"from", &self.from, "to", &self.to, "step", &&self.step)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for WithFill {
#[inline]
fn clone(&self) -> WithFill {
WithFill {
from: ::core::clone::Clone::clone(&self.from),
to: ::core::clone::Clone::clone(&self.to),
step: ::core::clone::Clone::clone(&self.step),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for WithFill {
#[inline]
fn eq(&self, other: &WithFill) -> bool {
self.from == other.from && self.to == other.to &&
self.step == other.step
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for WithFill {
#[inline]
fn partial_cmp(&self, other: &WithFill)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.from, &other.from) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.to,
&other.to) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.step,
&other.step),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for WithFill {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for WithFill {
#[inline]
fn cmp(&self, other: &WithFill) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.from, &other.from) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.to, &other.to) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.step, &other.step),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for WithFill {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.from, state);
::core::hash::Hash::hash(&self.to, state);
::core::hash::Hash::hash(&self.step, state)
}
}Hash)]
2883#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2884#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for WithFill {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.from, visitor)?;
sqlparser::ast::Visit::visit(&self.to, visitor)?;
sqlparser::ast::Visit::visit(&self.step, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for WithFill {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.from, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.to, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.step, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2885pub struct WithFill {
2887 pub from: Option<Expr>,
2889 pub to: Option<Expr>,
2891 pub step: Option<Expr>,
2893}
2894
2895impl fmt::Display for WithFill {
2896 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2897 f.write_fmt(format_args!("WITH FILL"))write!(f, "WITH FILL")?;
2898 if let Some(ref from) = self.from {
2899 f.write_fmt(format_args!(" FROM {0}", from))write!(f, " FROM {from}")?;
2900 }
2901 if let Some(ref to) = self.to {
2902 f.write_fmt(format_args!(" TO {0}", to))write!(f, " TO {to}")?;
2903 }
2904 if let Some(ref step) = self.step {
2905 f.write_fmt(format_args!(" STEP {0}", step))write!(f, " STEP {step}")?;
2906 }
2907 Ok(())
2908 }
2909}
2910
2911#[derive(#[automatically_derived]
impl ::core::fmt::Debug for InterpolateExpr {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"InterpolateExpr", "column", &self.column, "expr", &&self.expr)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for InterpolateExpr {
#[inline]
fn clone(&self) -> InterpolateExpr {
InterpolateExpr {
column: ::core::clone::Clone::clone(&self.column),
expr: ::core::clone::Clone::clone(&self.expr),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for InterpolateExpr {
#[inline]
fn eq(&self, other: &InterpolateExpr) -> bool {
self.column == other.column && self.expr == other.expr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for InterpolateExpr {
#[inline]
fn partial_cmp(&self, other: &InterpolateExpr)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.column,
&other.column) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.expr, &other.expr),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for InterpolateExpr {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for InterpolateExpr {
#[inline]
fn cmp(&self, other: &InterpolateExpr) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.column, &other.column) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.expr, &other.expr),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for InterpolateExpr {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.column, state);
::core::hash::Hash::hash(&self.expr, state)
}
}Hash)]
2916#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2917#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for InterpolateExpr {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.column, visitor)?;
sqlparser::ast::Visit::visit(&self.expr, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for InterpolateExpr {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.column, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.expr, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2918pub struct InterpolateExpr {
2920 pub column: Ident,
2922 pub expr: Option<Expr>,
2924}
2925
2926#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Interpolate {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "Interpolate",
"exprs", &&self.exprs)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Interpolate {
#[inline]
fn clone(&self) -> Interpolate {
Interpolate { exprs: ::core::clone::Clone::clone(&self.exprs) }
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Interpolate {
#[inline]
fn eq(&self, other: &Interpolate) -> bool { self.exprs == other.exprs }
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Interpolate {
#[inline]
fn partial_cmp(&self, other: &Interpolate)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.exprs, &other.exprs)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for Interpolate {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Option<Vec<InterpolateExpr>>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for Interpolate {
#[inline]
fn cmp(&self, other: &Interpolate) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.exprs, &other.exprs)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Interpolate {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.exprs, state)
}
}Hash)]
2927#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2928#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for Interpolate {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.exprs, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for Interpolate {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.exprs, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2929pub struct Interpolate {
2931 pub exprs: Option<Vec<InterpolateExpr>>,
2933}
2934
2935impl fmt::Display for InterpolateExpr {
2936 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2937 f.write_fmt(format_args!("{0}", self.column))write!(f, "{}", self.column)?;
2938 if let Some(ref expr) = self.expr {
2939 f.write_fmt(format_args!(" AS {0}", expr))write!(f, " AS {expr}")?;
2940 }
2941 Ok(())
2942 }
2943}
2944
2945#[derive(#[automatically_derived]
impl ::core::default::Default for OrderByOptions {
#[inline]
fn default() -> OrderByOptions {
OrderByOptions {
asc: ::core::default::Default::default(),
nulls_first: ::core::default::Default::default(),
}
}
}Default, #[automatically_derived]
impl ::core::fmt::Debug for OrderByOptions {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"OrderByOptions", "asc", &self.asc, "nulls_first",
&&self.nulls_first)
}
}Debug, #[automatically_derived]
impl ::core::marker::Copy for OrderByOptions { }Copy, #[automatically_derived]
impl ::core::clone::Clone for OrderByOptions {
#[inline]
fn clone(&self) -> OrderByOptions {
let _: ::core::clone::AssertParamIsClone<Option<bool>>;
let _: ::core::clone::AssertParamIsClone<Option<bool>>;
*self
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for OrderByOptions {
#[inline]
fn eq(&self, other: &OrderByOptions) -> bool {
self.asc == other.asc && self.nulls_first == other.nulls_first
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for OrderByOptions {
#[inline]
fn partial_cmp(&self, other: &OrderByOptions)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.asc, &other.asc) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.nulls_first,
&other.nulls_first),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for OrderByOptions {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Option<bool>>;
let _: ::core::cmp::AssertParamIsEq<Option<bool>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for OrderByOptions {
#[inline]
fn cmp(&self, other: &OrderByOptions) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.asc, &other.asc) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.nulls_first, &other.nulls_first),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for OrderByOptions {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.asc, state);
::core::hash::Hash::hash(&self.nulls_first, state)
}
}Hash)]
2946#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2947#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for OrderByOptions {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.asc, visitor)?;
sqlparser::ast::Visit::visit(&self.nulls_first, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for OrderByOptions {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.asc, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.nulls_first,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2948pub struct OrderByOptions {
2950 pub asc: Option<bool>,
2952 pub nulls_first: Option<bool>,
2954}
2955
2956impl fmt::Display for OrderByOptions {
2957 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2958 match self.asc {
2959 Some(true) => f.write_fmt(format_args!(" ASC"))write!(f, " ASC")?,
2960 Some(false) => f.write_fmt(format_args!(" DESC"))write!(f, " DESC")?,
2961 None => (),
2962 }
2963 match self.nulls_first {
2964 Some(true) => f.write_fmt(format_args!(" NULLS FIRST"))write!(f, " NULLS FIRST")?,
2965 Some(false) => f.write_fmt(format_args!(" NULLS LAST"))write!(f, " NULLS LAST")?,
2966 None => (),
2967 }
2968 Ok(())
2969 }
2970}
2971
2972#[derive(#[automatically_derived]
impl ::core::fmt::Debug for LimitClause {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
LimitClause::LimitOffset {
limit: __self_0, offset: __self_1, limit_by: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"LimitOffset", "limit", __self_0, "offset", __self_1,
"limit_by", &__self_2),
LimitClause::OffsetCommaLimit { offset: __self_0, limit: __self_1
} =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"OffsetCommaLimit", "offset", __self_0, "limit", &__self_1),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for LimitClause {
#[inline]
fn clone(&self) -> LimitClause {
match self {
LimitClause::LimitOffset {
limit: __self_0, offset: __self_1, limit_by: __self_2 } =>
LimitClause::LimitOffset {
limit: ::core::clone::Clone::clone(__self_0),
offset: ::core::clone::Clone::clone(__self_1),
limit_by: ::core::clone::Clone::clone(__self_2),
},
LimitClause::OffsetCommaLimit { offset: __self_0, limit: __self_1
} =>
LimitClause::OffsetCommaLimit {
offset: ::core::clone::Clone::clone(__self_0),
limit: ::core::clone::Clone::clone(__self_1),
},
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for LimitClause {
#[inline]
fn eq(&self, other: &LimitClause) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(LimitClause::LimitOffset {
limit: __self_0, offset: __self_1, limit_by: __self_2 },
LimitClause::LimitOffset {
limit: __arg1_0, offset: __arg1_1, limit_by: __arg1_2 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
(LimitClause::OffsetCommaLimit {
offset: __self_0, limit: __self_1 },
LimitClause::OffsetCommaLimit {
offset: __arg1_0, limit: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for LimitClause {
#[inline]
fn partial_cmp(&self, other: &LimitClause)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(LimitClause::LimitOffset {
limit: __self_0, offset: __self_1, limit_by: __self_2 },
LimitClause::LimitOffset {
limit: __arg1_0, offset: __arg1_1, limit_by: __arg1_2 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_2, __arg1_2),
cmp => cmp,
},
cmp => cmp,
},
(LimitClause::OffsetCommaLimit { offset: __self_0, limit: __self_1
}, LimitClause::OffsetCommaLimit {
offset: __arg1_0, limit: __arg1_1 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for LimitClause {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Option<Offset>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Expr>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for LimitClause {
#[inline]
fn cmp(&self, other: &LimitClause) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(LimitClause::LimitOffset {
limit: __self_0, offset: __self_1, limit_by: __self_2 },
LimitClause::LimitOffset {
limit: __arg1_0, offset: __arg1_1, limit_by: __arg1_2 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_2, __arg1_2),
cmp => cmp,
},
cmp => cmp,
},
(LimitClause::OffsetCommaLimit {
offset: __self_0, limit: __self_1 },
LimitClause::OffsetCommaLimit {
offset: __arg1_0, limit: __arg1_1 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for LimitClause {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
LimitClause::LimitOffset {
limit: __self_0, offset: __self_1, limit_by: __self_2 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state)
}
LimitClause::OffsetCommaLimit { offset: __self_0, limit: __self_1
} => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
}
}
}Hash)]
2973#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2974#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for LimitClause {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::LimitOffset { limit, offset, limit_by } => {
sqlparser::ast::Visit::visit(limit, visitor)?;
sqlparser::ast::Visit::visit(offset, visitor)?;
sqlparser::ast::Visit::visit(limit_by, visitor)?;
}
Self::OffsetCommaLimit { offset, limit } => {
sqlparser::ast::Visit::visit(offset, visitor)?;
sqlparser::ast::Visit::visit(limit, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for LimitClause {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::LimitOffset { limit, offset, limit_by } => {
sqlparser::ast::VisitMut::visit(limit, visitor)?;
sqlparser::ast::VisitMut::visit(offset, visitor)?;
sqlparser::ast::VisitMut::visit(limit_by, visitor)?;
}
Self::OffsetCommaLimit { offset, limit } => {
sqlparser::ast::VisitMut::visit(offset, visitor)?;
sqlparser::ast::VisitMut::visit(limit, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
2975pub enum LimitClause {
2977 LimitOffset {
2981 limit: Option<Expr>,
2983 offset: Option<Offset>,
2985 limit_by: Vec<Expr>,
2987 },
2988 OffsetCommaLimit {
2990 offset: Expr,
2992 limit: Expr,
2994 },
2995}
2996
2997impl fmt::Display for LimitClause {
2998 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2999 match self {
3000 LimitClause::LimitOffset {
3001 limit,
3002 limit_by,
3003 offset,
3004 } => {
3005 if let Some(ref limit) = limit {
3006 f.write_fmt(format_args!(" LIMIT {0}", limit))write!(f, " LIMIT {limit}")?;
3007 }
3008 if let Some(ref offset) = offset {
3009 f.write_fmt(format_args!(" {0}", offset))write!(f, " {offset}")?;
3010 }
3011 if !limit_by.is_empty() {
3012 if true {
if !limit.is_some() {
::core::panicking::panic("assertion failed: limit.is_some()")
};
};debug_assert!(limit.is_some());
3013 f.write_fmt(format_args!(" BY {0}", display_separated(limit_by, ", ")))write!(f, " BY {}", display_separated(limit_by, ", "))?;
3014 }
3015 Ok(())
3016 }
3017 LimitClause::OffsetCommaLimit { offset, limit } => {
3018 f.write_fmt(format_args!(" LIMIT {0}, {1}", offset, limit))write!(f, " LIMIT {offset}, {limit}")
3019 }
3020 }
3021 }
3022}
3023
3024#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Offset {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Offset",
"value", &self.value, "rows", &&self.rows)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Offset {
#[inline]
fn clone(&self) -> Offset {
Offset {
value: ::core::clone::Clone::clone(&self.value),
rows: ::core::clone::Clone::clone(&self.rows),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Offset {
#[inline]
fn eq(&self, other: &Offset) -> bool {
self.value == other.value && self.rows == other.rows
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Offset {
#[inline]
fn partial_cmp(&self, other: &Offset)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.value, &other.value)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.rows, &other.rows),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for Offset {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Expr>;
let _: ::core::cmp::AssertParamIsEq<OffsetRows>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for Offset {
#[inline]
fn cmp(&self, other: &Offset) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.value, &other.value) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.rows, &other.rows),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Offset {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.value, state);
::core::hash::Hash::hash(&self.rows, state)
}
}Hash)]
3025#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3026#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for Offset {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.value, visitor)?;
sqlparser::ast::Visit::visit(&self.rows, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for Offset {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.value, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.rows, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3027pub struct Offset {
3029 pub value: Expr,
3031 pub rows: OffsetRows,
3033}
3034
3035impl fmt::Display for Offset {
3036 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3037 f.write_fmt(format_args!("OFFSET {0}{1}", self.value, self.rows))write!(f, "OFFSET {}{}", self.value, self.rows)
3038 }
3039}
3040
3041#[derive(#[automatically_derived]
impl ::core::fmt::Debug for OffsetRows {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
OffsetRows::None => "None",
OffsetRows::Row => "Row",
OffsetRows::Rows => "Rows",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::Copy for OffsetRows { }Copy, #[automatically_derived]
impl ::core::clone::Clone for OffsetRows {
#[inline]
fn clone(&self) -> OffsetRows { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for OffsetRows {
#[inline]
fn eq(&self, other: &OffsetRows) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for OffsetRows {
#[inline]
fn partial_cmp(&self, other: &OffsetRows)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for OffsetRows {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for OffsetRows {
#[inline]
fn cmp(&self, other: &OffsetRows) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for OffsetRows {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
3043#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3044#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for OffsetRows {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::None => {}
Self::Row => {}
Self::Rows => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for OffsetRows {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::None => {}
Self::Row => {}
Self::Rows => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3045pub enum OffsetRows {
3046 None,
3048 Row,
3050 Rows,
3052}
3053
3054impl fmt::Display for OffsetRows {
3055 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3056 match self {
3057 OffsetRows::None => Ok(()),
3058 OffsetRows::Row => f.write_fmt(format_args!(" ROW"))write!(f, " ROW"),
3059 OffsetRows::Rows => f.write_fmt(format_args!(" ROWS"))write!(f, " ROWS"),
3060 }
3061 }
3062}
3063
3064#[derive(#[automatically_derived]
impl ::core::fmt::Debug for PipeOperator {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
PipeOperator::Limit { expr: __self_0, offset: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "Limit",
"expr", __self_0, "offset", &__self_1),
PipeOperator::Where { expr: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Where",
"expr", &__self_0),
PipeOperator::OrderBy { exprs: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"OrderBy", "exprs", &__self_0),
PipeOperator::Select { exprs: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Select", "exprs", &__self_0),
PipeOperator::Extend { exprs: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Extend", "exprs", &__self_0),
PipeOperator::Set { assignments: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Set",
"assignments", &__self_0),
PipeOperator::Drop { columns: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Drop",
"columns", &__self_0),
PipeOperator::As { alias: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "As",
"alias", &__self_0),
PipeOperator::Aggregate {
full_table_exprs: __self_0, group_by_expr: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"Aggregate", "full_table_exprs", __self_0, "group_by_expr",
&__self_1),
PipeOperator::TableSample { sample: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"TableSample", "sample", &__self_0),
PipeOperator::Rename { mappings: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"Rename", "mappings", &__self_0),
PipeOperator::Union { set_quantifier: __self_0, queries: __self_1
} =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "Union",
"set_quantifier", __self_0, "queries", &__self_1),
PipeOperator::Intersect {
set_quantifier: __self_0, queries: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"Intersect", "set_quantifier", __self_0, "queries",
&__self_1),
PipeOperator::Except { set_quantifier: __self_0, queries: __self_1
} =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"Except", "set_quantifier", __self_0, "queries", &__self_1),
PipeOperator::Call { function: __self_0, alias: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f, "Call",
"function", __self_0, "alias", &__self_1),
PipeOperator::Pivot {
aggregate_functions: __self_0,
value_column: __self_1,
value_source: __self_2,
alias: __self_3 } =>
::core::fmt::Formatter::debug_struct_field4_finish(f, "Pivot",
"aggregate_functions", __self_0, "value_column", __self_1,
"value_source", __self_2, "alias", &__self_3),
PipeOperator::Unpivot {
value_column: __self_0,
name_column: __self_1,
unpivot_columns: __self_2,
alias: __self_3 } =>
::core::fmt::Formatter::debug_struct_field4_finish(f,
"Unpivot", "value_column", __self_0, "name_column",
__self_1, "unpivot_columns", __self_2, "alias", &__self_3),
PipeOperator::Join(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Join",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for PipeOperator {
#[inline]
fn clone(&self) -> PipeOperator {
match self {
PipeOperator::Limit { expr: __self_0, offset: __self_1 } =>
PipeOperator::Limit {
expr: ::core::clone::Clone::clone(__self_0),
offset: ::core::clone::Clone::clone(__self_1),
},
PipeOperator::Where { expr: __self_0 } =>
PipeOperator::Where {
expr: ::core::clone::Clone::clone(__self_0),
},
PipeOperator::OrderBy { exprs: __self_0 } =>
PipeOperator::OrderBy {
exprs: ::core::clone::Clone::clone(__self_0),
},
PipeOperator::Select { exprs: __self_0 } =>
PipeOperator::Select {
exprs: ::core::clone::Clone::clone(__self_0),
},
PipeOperator::Extend { exprs: __self_0 } =>
PipeOperator::Extend {
exprs: ::core::clone::Clone::clone(__self_0),
},
PipeOperator::Set { assignments: __self_0 } =>
PipeOperator::Set {
assignments: ::core::clone::Clone::clone(__self_0),
},
PipeOperator::Drop { columns: __self_0 } =>
PipeOperator::Drop {
columns: ::core::clone::Clone::clone(__self_0),
},
PipeOperator::As { alias: __self_0 } =>
PipeOperator::As {
alias: ::core::clone::Clone::clone(__self_0),
},
PipeOperator::Aggregate {
full_table_exprs: __self_0, group_by_expr: __self_1 } =>
PipeOperator::Aggregate {
full_table_exprs: ::core::clone::Clone::clone(__self_0),
group_by_expr: ::core::clone::Clone::clone(__self_1),
},
PipeOperator::TableSample { sample: __self_0 } =>
PipeOperator::TableSample {
sample: ::core::clone::Clone::clone(__self_0),
},
PipeOperator::Rename { mappings: __self_0 } =>
PipeOperator::Rename {
mappings: ::core::clone::Clone::clone(__self_0),
},
PipeOperator::Union { set_quantifier: __self_0, queries: __self_1
} =>
PipeOperator::Union {
set_quantifier: ::core::clone::Clone::clone(__self_0),
queries: ::core::clone::Clone::clone(__self_1),
},
PipeOperator::Intersect {
set_quantifier: __self_0, queries: __self_1 } =>
PipeOperator::Intersect {
set_quantifier: ::core::clone::Clone::clone(__self_0),
queries: ::core::clone::Clone::clone(__self_1),
},
PipeOperator::Except { set_quantifier: __self_0, queries: __self_1
} =>
PipeOperator::Except {
set_quantifier: ::core::clone::Clone::clone(__self_0),
queries: ::core::clone::Clone::clone(__self_1),
},
PipeOperator::Call { function: __self_0, alias: __self_1 } =>
PipeOperator::Call {
function: ::core::clone::Clone::clone(__self_0),
alias: ::core::clone::Clone::clone(__self_1),
},
PipeOperator::Pivot {
aggregate_functions: __self_0,
value_column: __self_1,
value_source: __self_2,
alias: __self_3 } =>
PipeOperator::Pivot {
aggregate_functions: ::core::clone::Clone::clone(__self_0),
value_column: ::core::clone::Clone::clone(__self_1),
value_source: ::core::clone::Clone::clone(__self_2),
alias: ::core::clone::Clone::clone(__self_3),
},
PipeOperator::Unpivot {
value_column: __self_0,
name_column: __self_1,
unpivot_columns: __self_2,
alias: __self_3 } =>
PipeOperator::Unpivot {
value_column: ::core::clone::Clone::clone(__self_0),
name_column: ::core::clone::Clone::clone(__self_1),
unpivot_columns: ::core::clone::Clone::clone(__self_2),
alias: ::core::clone::Clone::clone(__self_3),
},
PipeOperator::Join(__self_0) =>
PipeOperator::Join(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for PipeOperator {
#[inline]
fn eq(&self, other: &PipeOperator) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(PipeOperator::Limit { expr: __self_0, offset: __self_1 },
PipeOperator::Limit { expr: __arg1_0, offset: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(PipeOperator::Where { expr: __self_0 }, PipeOperator::Where {
expr: __arg1_0 }) => __self_0 == __arg1_0,
(PipeOperator::OrderBy { exprs: __self_0 },
PipeOperator::OrderBy { exprs: __arg1_0 }) =>
__self_0 == __arg1_0,
(PipeOperator::Select { exprs: __self_0 },
PipeOperator::Select { exprs: __arg1_0 }) =>
__self_0 == __arg1_0,
(PipeOperator::Extend { exprs: __self_0 },
PipeOperator::Extend { exprs: __arg1_0 }) =>
__self_0 == __arg1_0,
(PipeOperator::Set { assignments: __self_0 },
PipeOperator::Set { assignments: __arg1_0 }) =>
__self_0 == __arg1_0,
(PipeOperator::Drop { columns: __self_0 },
PipeOperator::Drop { columns: __arg1_0 }) =>
__self_0 == __arg1_0,
(PipeOperator::As { alias: __self_0 }, PipeOperator::As {
alias: __arg1_0 }) => __self_0 == __arg1_0,
(PipeOperator::Aggregate {
full_table_exprs: __self_0, group_by_expr: __self_1 },
PipeOperator::Aggregate {
full_table_exprs: __arg1_0, group_by_expr: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(PipeOperator::TableSample { sample: __self_0 },
PipeOperator::TableSample { sample: __arg1_0 }) =>
__self_0 == __arg1_0,
(PipeOperator::Rename { mappings: __self_0 },
PipeOperator::Rename { mappings: __arg1_0 }) =>
__self_0 == __arg1_0,
(PipeOperator::Union {
set_quantifier: __self_0, queries: __self_1 },
PipeOperator::Union {
set_quantifier: __arg1_0, queries: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(PipeOperator::Intersect {
set_quantifier: __self_0, queries: __self_1 },
PipeOperator::Intersect {
set_quantifier: __arg1_0, queries: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(PipeOperator::Except {
set_quantifier: __self_0, queries: __self_1 },
PipeOperator::Except {
set_quantifier: __arg1_0, queries: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(PipeOperator::Call { function: __self_0, alias: __self_1 },
PipeOperator::Call { function: __arg1_0, alias: __arg1_1 })
=> __self_0 == __arg1_0 && __self_1 == __arg1_1,
(PipeOperator::Pivot {
aggregate_functions: __self_0,
value_column: __self_1,
value_source: __self_2,
alias: __self_3 }, PipeOperator::Pivot {
aggregate_functions: __arg1_0,
value_column: __arg1_1,
value_source: __arg1_2,
alias: __arg1_3 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3,
(PipeOperator::Unpivot {
value_column: __self_0,
name_column: __self_1,
unpivot_columns: __self_2,
alias: __self_3 }, PipeOperator::Unpivot {
value_column: __arg1_0,
name_column: __arg1_1,
unpivot_columns: __arg1_2,
alias: __arg1_3 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2 && __self_3 == __arg1_3,
(PipeOperator::Join(__self_0), PipeOperator::Join(__arg1_0))
=> __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for PipeOperator {
#[inline]
fn partial_cmp(&self, other: &PipeOperator)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(PipeOperator::Limit { expr: __self_0, offset: __self_1 },
PipeOperator::Limit { expr: __arg1_0, offset: __arg1_1 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
(PipeOperator::Where { expr: __self_0 }, PipeOperator::Where {
expr: __arg1_0 }) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(PipeOperator::OrderBy { exprs: __self_0 },
PipeOperator::OrderBy { exprs: __arg1_0 }) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(PipeOperator::Select { exprs: __self_0 }, PipeOperator::Select {
exprs: __arg1_0 }) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(PipeOperator::Extend { exprs: __self_0 }, PipeOperator::Extend {
exprs: __arg1_0 }) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(PipeOperator::Set { assignments: __self_0 }, PipeOperator::Set {
assignments: __arg1_0 }) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(PipeOperator::Drop { columns: __self_0 }, PipeOperator::Drop {
columns: __arg1_0 }) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(PipeOperator::As { alias: __self_0 }, PipeOperator::As {
alias: __arg1_0 }) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(PipeOperator::Aggregate {
full_table_exprs: __self_0, group_by_expr: __self_1 },
PipeOperator::Aggregate {
full_table_exprs: __arg1_0, group_by_expr: __arg1_1 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
(PipeOperator::TableSample { sample: __self_0 },
PipeOperator::TableSample { sample: __arg1_0 }) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(PipeOperator::Rename { mappings: __self_0 },
PipeOperator::Rename { mappings: __arg1_0 }) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(PipeOperator::Union { set_quantifier: __self_0, queries: __self_1
}, PipeOperator::Union {
set_quantifier: __arg1_0, queries: __arg1_1 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
(PipeOperator::Intersect {
set_quantifier: __self_0, queries: __self_1 },
PipeOperator::Intersect {
set_quantifier: __arg1_0, queries: __arg1_1 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
(PipeOperator::Except {
set_quantifier: __self_0, queries: __self_1 },
PipeOperator::Except {
set_quantifier: __arg1_0, queries: __arg1_1 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
(PipeOperator::Call { function: __self_0, alias: __self_1 },
PipeOperator::Call { function: __arg1_0, alias: __arg1_1 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
(PipeOperator::Pivot {
aggregate_functions: __self_0,
value_column: __self_1,
value_source: __self_2,
alias: __self_3 }, PipeOperator::Pivot {
aggregate_functions: __arg1_0,
value_column: __arg1_1,
value_source: __arg1_2,
alias: __arg1_3 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(PipeOperator::Unpivot {
value_column: __self_0,
name_column: __self_1,
unpivot_columns: __self_2,
alias: __self_3 }, PipeOperator::Unpivot {
value_column: __arg1_0,
name_column: __arg1_1,
unpivot_columns: __arg1_2,
alias: __arg1_3 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(PipeOperator::Join(__self_0), PipeOperator::Join(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for PipeOperator {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Expr>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Vec<OrderByExpr>>;
let _: ::core::cmp::AssertParamIsEq<Vec<SelectItem>>;
let _: ::core::cmp::AssertParamIsEq<Vec<SelectItem>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Assignment>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Ident>>;
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<Vec<ExprWithAliasAndOrderBy>>;
let _: ::core::cmp::AssertParamIsEq<Vec<ExprWithAliasAndOrderBy>>;
let _: ::core::cmp::AssertParamIsEq<Box<TableSample>>;
let _: ::core::cmp::AssertParamIsEq<Vec<IdentWithAlias>>;
let _: ::core::cmp::AssertParamIsEq<SetQuantifier>;
let _: ::core::cmp::AssertParamIsEq<Vec<Query>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Query>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Query>>;
let _: ::core::cmp::AssertParamIsEq<Function>;
let _: ::core::cmp::AssertParamIsEq<Option<Ident>>;
let _: ::core::cmp::AssertParamIsEq<Vec<ExprWithAlias>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Ident>>;
let _: ::core::cmp::AssertParamIsEq<PivotValueSource>;
let _: ::core::cmp::AssertParamIsEq<Option<Ident>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Ident>>;
let _: ::core::cmp::AssertParamIsEq<Option<Ident>>;
let _: ::core::cmp::AssertParamIsEq<Join>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for PipeOperator {
#[inline]
fn cmp(&self, other: &PipeOperator) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(PipeOperator::Limit { expr: __self_0, offset: __self_1 },
PipeOperator::Limit { expr: __arg1_0, offset: __arg1_1 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
(PipeOperator::Where { expr: __self_0 },
PipeOperator::Where { expr: __arg1_0 }) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(PipeOperator::OrderBy { exprs: __self_0 },
PipeOperator::OrderBy { exprs: __arg1_0 }) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(PipeOperator::Select { exprs: __self_0 },
PipeOperator::Select { exprs: __arg1_0 }) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(PipeOperator::Extend { exprs: __self_0 },
PipeOperator::Extend { exprs: __arg1_0 }) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(PipeOperator::Set { assignments: __self_0 },
PipeOperator::Set { assignments: __arg1_0 }) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(PipeOperator::Drop { columns: __self_0 },
PipeOperator::Drop { columns: __arg1_0 }) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(PipeOperator::As { alias: __self_0 }, PipeOperator::As {
alias: __arg1_0 }) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(PipeOperator::Aggregate {
full_table_exprs: __self_0, group_by_expr: __self_1 },
PipeOperator::Aggregate {
full_table_exprs: __arg1_0, group_by_expr: __arg1_1 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
(PipeOperator::TableSample { sample: __self_0 },
PipeOperator::TableSample { sample: __arg1_0 }) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(PipeOperator::Rename { mappings: __self_0 },
PipeOperator::Rename { mappings: __arg1_0 }) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(PipeOperator::Union {
set_quantifier: __self_0, queries: __self_1 },
PipeOperator::Union {
set_quantifier: __arg1_0, queries: __arg1_1 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
(PipeOperator::Intersect {
set_quantifier: __self_0, queries: __self_1 },
PipeOperator::Intersect {
set_quantifier: __arg1_0, queries: __arg1_1 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
(PipeOperator::Except {
set_quantifier: __self_0, queries: __self_1 },
PipeOperator::Except {
set_quantifier: __arg1_0, queries: __arg1_1 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
(PipeOperator::Call { function: __self_0, alias: __self_1 },
PipeOperator::Call { function: __arg1_0, alias: __arg1_1 })
=>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
(PipeOperator::Pivot {
aggregate_functions: __self_0,
value_column: __self_1,
value_source: __self_2,
alias: __self_3 }, PipeOperator::Pivot {
aggregate_functions: __arg1_0,
value_column: __arg1_1,
value_source: __arg1_2,
alias: __arg1_3 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(PipeOperator::Unpivot {
value_column: __self_0,
name_column: __self_1,
unpivot_columns: __self_2,
alias: __self_3 }, PipeOperator::Unpivot {
value_column: __arg1_0,
name_column: __arg1_1,
unpivot_columns: __arg1_2,
alias: __arg1_3 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(PipeOperator::Join(__self_0), PipeOperator::Join(__arg1_0))
=> ::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for PipeOperator {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
PipeOperator::Limit { expr: __self_0, offset: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
PipeOperator::Where { expr: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
PipeOperator::OrderBy { exprs: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
PipeOperator::Select { exprs: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
PipeOperator::Extend { exprs: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
PipeOperator::Set { assignments: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
PipeOperator::Drop { columns: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
PipeOperator::As { alias: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
PipeOperator::Aggregate {
full_table_exprs: __self_0, group_by_expr: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
PipeOperator::TableSample { sample: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
PipeOperator::Rename { mappings: __self_0 } =>
::core::hash::Hash::hash(__self_0, state),
PipeOperator::Union { set_quantifier: __self_0, queries: __self_1
} => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
PipeOperator::Intersect {
set_quantifier: __self_0, queries: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
PipeOperator::Except { set_quantifier: __self_0, queries: __self_1
} => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
PipeOperator::Call { function: __self_0, alias: __self_1 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
PipeOperator::Pivot {
aggregate_functions: __self_0,
value_column: __self_1,
value_source: __self_2,
alias: __self_3 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state)
}
PipeOperator::Unpivot {
value_column: __self_0,
name_column: __self_1,
unpivot_columns: __self_2,
alias: __self_3 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state)
}
PipeOperator::Join(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash)]
3076#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3077#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for PipeOperator {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Limit { expr, offset } => {
sqlparser::ast::Visit::visit(expr, visitor)?;
sqlparser::ast::Visit::visit(offset, visitor)?;
}
Self::Where { expr } => {
sqlparser::ast::Visit::visit(expr, visitor)?;
}
Self::OrderBy { exprs } => {
sqlparser::ast::Visit::visit(exprs, visitor)?;
}
Self::Select { exprs } => {
sqlparser::ast::Visit::visit(exprs, visitor)?;
}
Self::Extend { exprs } => {
sqlparser::ast::Visit::visit(exprs, visitor)?;
}
Self::Set { assignments } => {
sqlparser::ast::Visit::visit(assignments, visitor)?;
}
Self::Drop { columns } => {
sqlparser::ast::Visit::visit(columns, visitor)?;
}
Self::As { alias } => {
sqlparser::ast::Visit::visit(alias, visitor)?;
}
Self::Aggregate { full_table_exprs, group_by_expr } => {
sqlparser::ast::Visit::visit(full_table_exprs, visitor)?;
sqlparser::ast::Visit::visit(group_by_expr, visitor)?;
}
Self::TableSample { sample } => {
sqlparser::ast::Visit::visit(sample, visitor)?;
}
Self::Rename { mappings } => {
sqlparser::ast::Visit::visit(mappings, visitor)?;
}
Self::Union { set_quantifier, queries } => {
sqlparser::ast::Visit::visit(set_quantifier, visitor)?;
sqlparser::ast::Visit::visit(queries, visitor)?;
}
Self::Intersect { set_quantifier, queries } => {
sqlparser::ast::Visit::visit(set_quantifier, visitor)?;
sqlparser::ast::Visit::visit(queries, visitor)?;
}
Self::Except { set_quantifier, queries } => {
sqlparser::ast::Visit::visit(set_quantifier, visitor)?;
sqlparser::ast::Visit::visit(queries, visitor)?;
}
Self::Call { function, alias } => {
sqlparser::ast::Visit::visit(function, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
}
Self::Pivot {
aggregate_functions, value_column, value_source, alias } =>
{
sqlparser::ast::Visit::visit(aggregate_functions, visitor)?;
sqlparser::ast::Visit::visit(value_column, visitor)?;
sqlparser::ast::Visit::visit(value_source, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
}
Self::Unpivot {
value_column, name_column, unpivot_columns, alias } => {
sqlparser::ast::Visit::visit(value_column, visitor)?;
sqlparser::ast::Visit::visit(name_column, visitor)?;
sqlparser::ast::Visit::visit(unpivot_columns, visitor)?;
sqlparser::ast::Visit::visit(alias, visitor)?;
}
Self::Join(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for PipeOperator {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Limit { expr, offset } => {
sqlparser::ast::VisitMut::visit(expr, visitor)?;
sqlparser::ast::VisitMut::visit(offset, visitor)?;
}
Self::Where { expr } => {
sqlparser::ast::VisitMut::visit(expr, visitor)?;
}
Self::OrderBy { exprs } => {
sqlparser::ast::VisitMut::visit(exprs, visitor)?;
}
Self::Select { exprs } => {
sqlparser::ast::VisitMut::visit(exprs, visitor)?;
}
Self::Extend { exprs } => {
sqlparser::ast::VisitMut::visit(exprs, visitor)?;
}
Self::Set { assignments } => {
sqlparser::ast::VisitMut::visit(assignments, visitor)?;
}
Self::Drop { columns } => {
sqlparser::ast::VisitMut::visit(columns, visitor)?;
}
Self::As { alias } => {
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
Self::Aggregate { full_table_exprs, group_by_expr } => {
sqlparser::ast::VisitMut::visit(full_table_exprs, visitor)?;
sqlparser::ast::VisitMut::visit(group_by_expr, visitor)?;
}
Self::TableSample { sample } => {
sqlparser::ast::VisitMut::visit(sample, visitor)?;
}
Self::Rename { mappings } => {
sqlparser::ast::VisitMut::visit(mappings, visitor)?;
}
Self::Union { set_quantifier, queries } => {
sqlparser::ast::VisitMut::visit(set_quantifier, visitor)?;
sqlparser::ast::VisitMut::visit(queries, visitor)?;
}
Self::Intersect { set_quantifier, queries } => {
sqlparser::ast::VisitMut::visit(set_quantifier, visitor)?;
sqlparser::ast::VisitMut::visit(queries, visitor)?;
}
Self::Except { set_quantifier, queries } => {
sqlparser::ast::VisitMut::visit(set_quantifier, visitor)?;
sqlparser::ast::VisitMut::visit(queries, visitor)?;
}
Self::Call { function, alias } => {
sqlparser::ast::VisitMut::visit(function, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
Self::Pivot {
aggregate_functions, value_column, value_source, alias } =>
{
sqlparser::ast::VisitMut::visit(aggregate_functions,
visitor)?;
sqlparser::ast::VisitMut::visit(value_column, visitor)?;
sqlparser::ast::VisitMut::visit(value_source, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
Self::Unpivot {
value_column, name_column, unpivot_columns, alias } => {
sqlparser::ast::VisitMut::visit(value_column, visitor)?;
sqlparser::ast::VisitMut::visit(name_column, visitor)?;
sqlparser::ast::VisitMut::visit(unpivot_columns, visitor)?;
sqlparser::ast::VisitMut::visit(alias, visitor)?;
}
Self::Join(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3078pub enum PipeOperator {
3079 Limit {
3085 expr: Expr,
3087 offset: Option<Expr>,
3089 },
3090 Where {
3096 expr: Expr,
3098 },
3099 OrderBy {
3101 exprs: Vec<OrderByExpr>,
3103 },
3104 Select {
3110 exprs: Vec<SelectItem>,
3112 },
3113 Extend {
3119 exprs: Vec<SelectItem>,
3121 },
3122 Set {
3128 assignments: Vec<Assignment>,
3130 },
3131 Drop {
3137 columns: Vec<Ident>,
3139 },
3140 As {
3146 alias: Ident,
3148 },
3149 Aggregate {
3161 full_table_exprs: Vec<ExprWithAliasAndOrderBy>,
3163 group_by_expr: Vec<ExprWithAliasAndOrderBy>,
3165 },
3166 TableSample {
3170 sample: Box<TableSample>,
3172 },
3173 Rename {
3179 mappings: Vec<IdentWithAlias>,
3181 },
3182 Union {
3188 set_quantifier: SetQuantifier,
3190 queries: Vec<Query>,
3192 },
3193 Intersect {
3199 set_quantifier: SetQuantifier,
3201 queries: Vec<Query>,
3203 },
3204 Except {
3210 set_quantifier: SetQuantifier,
3212 queries: Vec<Query>,
3214 },
3215 Call {
3221 function: Function,
3223 alias: Option<Ident>,
3225 },
3226 Pivot {
3232 aggregate_functions: Vec<ExprWithAlias>,
3234 value_column: Vec<Ident>,
3236 value_source: PivotValueSource,
3238 alias: Option<Ident>,
3240 },
3241 Unpivot {
3250 value_column: Ident,
3252 name_column: Ident,
3254 unpivot_columns: Vec<Ident>,
3256 alias: Option<Ident>,
3258 },
3259 Join(Join),
3265}
3266
3267impl fmt::Display for PipeOperator {
3268 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3269 match self {
3270 PipeOperator::Select { exprs } => {
3271 f.write_fmt(format_args!("SELECT {0}",
display_comma_separated(exprs.as_slice())))write!(f, "SELECT {}", display_comma_separated(exprs.as_slice()))
3272 }
3273 PipeOperator::Extend { exprs } => {
3274 f.write_fmt(format_args!("EXTEND {0}",
display_comma_separated(exprs.as_slice())))write!(f, "EXTEND {}", display_comma_separated(exprs.as_slice()))
3275 }
3276 PipeOperator::Set { assignments } => {
3277 f.write_fmt(format_args!("SET {0}",
display_comma_separated(assignments.as_slice())))write!(f, "SET {}", display_comma_separated(assignments.as_slice()))
3278 }
3279 PipeOperator::Drop { columns } => {
3280 f.write_fmt(format_args!("DROP {0}",
display_comma_separated(columns.as_slice())))write!(f, "DROP {}", display_comma_separated(columns.as_slice()))
3281 }
3282 PipeOperator::As { alias } => {
3283 f.write_fmt(format_args!("AS {0}", alias))write!(f, "AS {alias}")
3284 }
3285 PipeOperator::Limit { expr, offset } => {
3286 f.write_fmt(format_args!("LIMIT {0}", expr))write!(f, "LIMIT {expr}")?;
3287 if let Some(offset) = offset {
3288 f.write_fmt(format_args!(" OFFSET {0}", offset))write!(f, " OFFSET {offset}")?;
3289 }
3290 Ok(())
3291 }
3292 PipeOperator::Aggregate {
3293 full_table_exprs,
3294 group_by_expr,
3295 } => {
3296 f.write_fmt(format_args!("AGGREGATE"))write!(f, "AGGREGATE")?;
3297 if !full_table_exprs.is_empty() {
3298 f.write_fmt(format_args!(" {0}",
display_comma_separated(full_table_exprs.as_slice())))write!(
3299 f,
3300 " {}",
3301 display_comma_separated(full_table_exprs.as_slice())
3302 )?;
3303 }
3304 if !group_by_expr.is_empty() {
3305 f.write_fmt(format_args!(" GROUP BY {0}",
display_comma_separated(group_by_expr)))write!(f, " GROUP BY {}", display_comma_separated(group_by_expr))?;
3306 }
3307 Ok(())
3308 }
3309
3310 PipeOperator::Where { expr } => {
3311 f.write_fmt(format_args!("WHERE {0}", expr))write!(f, "WHERE {expr}")
3312 }
3313 PipeOperator::OrderBy { exprs } => {
3314 f.write_fmt(format_args!("ORDER BY {0}",
display_comma_separated(exprs.as_slice())))write!(f, "ORDER BY {}", display_comma_separated(exprs.as_slice()))
3315 }
3316
3317 PipeOperator::TableSample { sample } => {
3318 f.write_fmt(format_args!("{0}", sample))write!(f, "{sample}")
3319 }
3320 PipeOperator::Rename { mappings } => {
3321 f.write_fmt(format_args!("RENAME {0}", display_comma_separated(mappings)))write!(f, "RENAME {}", display_comma_separated(mappings))
3322 }
3323 PipeOperator::Union {
3324 set_quantifier,
3325 queries,
3326 } => Self::fmt_set_operation(f, "UNION", set_quantifier, queries),
3327 PipeOperator::Intersect {
3328 set_quantifier,
3329 queries,
3330 } => Self::fmt_set_operation(f, "INTERSECT", set_quantifier, queries),
3331 PipeOperator::Except {
3332 set_quantifier,
3333 queries,
3334 } => Self::fmt_set_operation(f, "EXCEPT", set_quantifier, queries),
3335 PipeOperator::Call { function, alias } => {
3336 f.write_fmt(format_args!("CALL {0}", function))write!(f, "CALL {function}")?;
3337 Self::fmt_optional_alias(f, alias)
3338 }
3339 PipeOperator::Pivot {
3340 aggregate_functions,
3341 value_column,
3342 value_source,
3343 alias,
3344 } => {
3345 f.write_fmt(format_args!("PIVOT({0} FOR {1} IN ({2}))",
display_comma_separated(aggregate_functions),
Expr::CompoundIdentifier(value_column.to_vec()), value_source))write!(
3346 f,
3347 "PIVOT({} FOR {} IN ({}))",
3348 display_comma_separated(aggregate_functions),
3349 Expr::CompoundIdentifier(value_column.to_vec()),
3350 value_source
3351 )?;
3352 Self::fmt_optional_alias(f, alias)
3353 }
3354 PipeOperator::Unpivot {
3355 value_column,
3356 name_column,
3357 unpivot_columns,
3358 alias,
3359 } => {
3360 f.write_fmt(format_args!("UNPIVOT({0} FOR {1} IN ({2}))", value_column,
name_column, display_comma_separated(unpivot_columns)))write!(
3361 f,
3362 "UNPIVOT({} FOR {} IN ({}))",
3363 value_column,
3364 name_column,
3365 display_comma_separated(unpivot_columns)
3366 )?;
3367 Self::fmt_optional_alias(f, alias)
3368 }
3369 PipeOperator::Join(join) => f.write_fmt(format_args!("{0}", join))write!(f, "{join}"),
3370 }
3371 }
3372}
3373
3374impl PipeOperator {
3375 fn fmt_optional_alias(f: &mut fmt::Formatter<'_>, alias: &Option<Ident>) -> fmt::Result {
3377 if let Some(alias) = alias {
3378 f.write_fmt(format_args!(" AS {0}", alias))write!(f, " AS {alias}")?;
3379 }
3380 Ok(())
3381 }
3382
3383 fn fmt_set_operation(
3385 f: &mut fmt::Formatter<'_>,
3386 operation: &str,
3387 set_quantifier: &SetQuantifier,
3388 queries: &[Query],
3389 ) -> fmt::Result {
3390 f.write_fmt(format_args!("{0}", operation))write!(f, "{operation}")?;
3391 match set_quantifier {
3392 SetQuantifier::None => {}
3393 _ => {
3394 f.write_fmt(format_args!(" {0}", set_quantifier))write!(f, " {set_quantifier}")?;
3395 }
3396 }
3397 f.write_fmt(format_args!(" "))write!(f, " ")?;
3398 let parenthesized_queries: Vec<String> =
3399 queries.iter().map(|query| ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("({0})", query))
})format!("({query})")).collect();
3400 f.write_fmt(format_args!("{0}",
display_comma_separated(&parenthesized_queries)))write!(f, "{}", display_comma_separated(&parenthesized_queries))
3401 }
3402}
3403
3404#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Fetch {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "Fetch",
"with_ties", &self.with_ties, "percent", &self.percent,
"quantity", &&self.quantity)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Fetch {
#[inline]
fn clone(&self) -> Fetch {
Fetch {
with_ties: ::core::clone::Clone::clone(&self.with_ties),
percent: ::core::clone::Clone::clone(&self.percent),
quantity: ::core::clone::Clone::clone(&self.quantity),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Fetch {
#[inline]
fn eq(&self, other: &Fetch) -> bool {
self.with_ties == other.with_ties && self.percent == other.percent &&
self.quantity == other.quantity
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Fetch {
#[inline]
fn partial_cmp(&self, other: &Fetch)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.with_ties,
&other.with_ties) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.percent,
&other.percent) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.quantity,
&other.quantity),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for Fetch {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for Fetch {
#[inline]
fn cmp(&self, other: &Fetch) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.with_ties, &other.with_ties) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.percent, &other.percent) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.quantity, &other.quantity),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Fetch {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.with_ties, state);
::core::hash::Hash::hash(&self.percent, state);
::core::hash::Hash::hash(&self.quantity, state)
}
}Hash)]
3405#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3406#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for Fetch {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.with_ties, visitor)?;
sqlparser::ast::Visit::visit(&self.percent, visitor)?;
sqlparser::ast::Visit::visit(&self.quantity, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for Fetch {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.with_ties,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.percent,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.quantity,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3407pub struct Fetch {
3409 pub with_ties: bool,
3411 pub percent: bool,
3413 pub quantity: Option<Expr>,
3415}
3416
3417impl fmt::Display for Fetch {
3418 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3419 let extension = if self.with_ties { "WITH TIES" } else { "ONLY" };
3420 if let Some(ref quantity) = self.quantity {
3421 let percent = if self.percent { " PERCENT" } else { "" };
3422 f.write_fmt(format_args!("FETCH FIRST {0}{1} ROWS {2}", quantity, percent,
extension))write!(f, "FETCH FIRST {quantity}{percent} ROWS {extension}")
3423 } else {
3424 f.write_fmt(format_args!("FETCH FIRST ROWS {0}", extension))write!(f, "FETCH FIRST ROWS {extension}")
3425 }
3426 }
3427}
3428
3429#[derive(#[automatically_derived]
impl ::core::fmt::Debug for LockClause {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "LockClause",
"lock_type", &self.lock_type, "of", &self.of, "nonblock",
&&self.nonblock)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for LockClause {
#[inline]
fn clone(&self) -> LockClause {
LockClause {
lock_type: ::core::clone::Clone::clone(&self.lock_type),
of: ::core::clone::Clone::clone(&self.of),
nonblock: ::core::clone::Clone::clone(&self.nonblock),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for LockClause {
#[inline]
fn eq(&self, other: &LockClause) -> bool {
self.lock_type == other.lock_type && self.of == other.of &&
self.nonblock == other.nonblock
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for LockClause {
#[inline]
fn partial_cmp(&self, other: &LockClause)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.lock_type,
&other.lock_type) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.of,
&other.of) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.nonblock,
&other.nonblock),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for LockClause {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<LockType>;
let _: ::core::cmp::AssertParamIsEq<Option<ObjectName>>;
let _: ::core::cmp::AssertParamIsEq<Option<NonBlock>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for LockClause {
#[inline]
fn cmp(&self, other: &LockClause) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.lock_type, &other.lock_type) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.of, &other.of) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.nonblock, &other.nonblock),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for LockClause {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.lock_type, state);
::core::hash::Hash::hash(&self.of, state);
::core::hash::Hash::hash(&self.nonblock, state)
}
}Hash)]
3430#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3431#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for LockClause {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.lock_type, visitor)?;
sqlparser::ast::Visit::visit(&self.of, visitor)?;
sqlparser::ast::Visit::visit(&self.nonblock, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for LockClause {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.lock_type,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.of, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.nonblock,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3432pub struct LockClause {
3434 pub lock_type: LockType,
3436 pub of: Option<ObjectName>,
3438 pub nonblock: Option<NonBlock>,
3440}
3441
3442impl fmt::Display for LockClause {
3443 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3444 f.write_fmt(format_args!("FOR {0}", &self.lock_type))write!(f, "FOR {}", &self.lock_type)?;
3445 if let Some(ref of) = self.of {
3446 f.write_fmt(format_args!(" OF {0}", of))write!(f, " OF {of}")?;
3447 }
3448 if let Some(ref nb) = self.nonblock {
3449 f.write_fmt(format_args!(" {0}", nb))write!(f, " {nb}")?;
3450 }
3451 Ok(())
3452 }
3453}
3454
3455#[derive(#[automatically_derived]
impl ::core::fmt::Debug for LockType {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
LockType::Share => "Share",
LockType::Update => "Update",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::Copy for LockType { }Copy, #[automatically_derived]
impl ::core::clone::Clone for LockType {
#[inline]
fn clone(&self) -> LockType { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for LockType {
#[inline]
fn eq(&self, other: &LockType) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for LockType {
#[inline]
fn partial_cmp(&self, other: &LockType)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for LockType {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for LockType {
#[inline]
fn cmp(&self, other: &LockType) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for LockType {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
3456#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3457#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for LockType {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self { Self::Share => {} Self::Update => {} }
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for LockType {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self { Self::Share => {} Self::Update => {} }
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3458pub enum LockType {
3460 Share,
3462 Update,
3464}
3465
3466impl fmt::Display for LockType {
3467 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3468 let select_lock = match self {
3469 LockType::Share => "SHARE",
3470 LockType::Update => "UPDATE",
3471 };
3472 f.write_fmt(format_args!("{0}", select_lock))write!(f, "{select_lock}")
3473 }
3474}
3475
3476#[derive(#[automatically_derived]
impl ::core::fmt::Debug for NonBlock {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
NonBlock::Nowait => "Nowait",
NonBlock::SkipLocked => "SkipLocked",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::Copy for NonBlock { }Copy, #[automatically_derived]
impl ::core::clone::Clone for NonBlock {
#[inline]
fn clone(&self) -> NonBlock { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for NonBlock {
#[inline]
fn eq(&self, other: &NonBlock) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for NonBlock {
#[inline]
fn partial_cmp(&self, other: &NonBlock)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for NonBlock {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for NonBlock {
#[inline]
fn cmp(&self, other: &NonBlock) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for NonBlock {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
3477#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3478#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for NonBlock {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self { Self::Nowait => {} Self::SkipLocked => {} }
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for NonBlock {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self { Self::Nowait => {} Self::SkipLocked => {} }
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3479pub enum NonBlock {
3481 Nowait,
3483 SkipLocked,
3485}
3486
3487impl fmt::Display for NonBlock {
3488 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3489 let nonblock = match self {
3490 NonBlock::Nowait => "NOWAIT",
3491 NonBlock::SkipLocked => "SKIP LOCKED",
3492 };
3493 f.write_fmt(format_args!("{0}", nonblock))write!(f, "{nonblock}")
3494 }
3495}
3496
3497#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Distinct {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Distinct::All => ::core::fmt::Formatter::write_str(f, "All"),
Distinct::Distinct =>
::core::fmt::Formatter::write_str(f, "Distinct"),
Distinct::On(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "On",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Distinct {
#[inline]
fn clone(&self) -> Distinct {
match self {
Distinct::All => Distinct::All,
Distinct::Distinct => Distinct::Distinct,
Distinct::On(__self_0) =>
Distinct::On(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Distinct {
#[inline]
fn eq(&self, other: &Distinct) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(Distinct::On(__self_0), Distinct::On(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Distinct {
#[inline]
fn partial_cmp(&self, other: &Distinct)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(Distinct::On(__self_0), Distinct::On(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for Distinct {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Vec<Expr>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for Distinct {
#[inline]
fn cmp(&self, other: &Distinct) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(Distinct::On(__self_0), Distinct::On(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Distinct {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
Distinct::On(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
3498#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3499#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for Distinct {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::All => {}
Self::Distinct => {}
Self::On(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for Distinct {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::All => {}
Self::Distinct => {}
Self::On(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3500pub enum Distinct {
3502 All,
3507
3508 Distinct,
3510
3511 On(Vec<Expr>),
3513}
3514
3515impl fmt::Display for Distinct {
3516 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3517 match self {
3518 Distinct::All => f.write_fmt(format_args!("ALL"))write!(f, "ALL"),
3519 Distinct::Distinct => f.write_fmt(format_args!("DISTINCT"))write!(f, "DISTINCT"),
3520 Distinct::On(col_names) => {
3521 let col_names = display_comma_separated(col_names);
3522 f.write_fmt(format_args!("DISTINCT ON ({0})", col_names))write!(f, "DISTINCT ON ({col_names})")
3523 }
3524 }
3525 }
3526}
3527
3528#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Top {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "Top",
"with_ties", &self.with_ties, "percent", &self.percent,
"quantity", &&self.quantity)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Top {
#[inline]
fn clone(&self) -> Top {
Top {
with_ties: ::core::clone::Clone::clone(&self.with_ties),
percent: ::core::clone::Clone::clone(&self.percent),
quantity: ::core::clone::Clone::clone(&self.quantity),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Top {
#[inline]
fn eq(&self, other: &Top) -> bool {
self.with_ties == other.with_ties && self.percent == other.percent &&
self.quantity == other.quantity
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Top {
#[inline]
fn partial_cmp(&self, other: &Top)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.with_ties,
&other.with_ties) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.percent,
&other.percent) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.quantity,
&other.quantity),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for Top {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<Option<TopQuantity>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for Top {
#[inline]
fn cmp(&self, other: &Top) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.with_ties, &other.with_ties) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.percent, &other.percent) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.quantity, &other.quantity),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Top {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.with_ties, state);
::core::hash::Hash::hash(&self.percent, state);
::core::hash::Hash::hash(&self.quantity, state)
}
}Hash)]
3529#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3530#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for Top {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.with_ties, visitor)?;
sqlparser::ast::Visit::visit(&self.percent, visitor)?;
sqlparser::ast::Visit::visit(&self.quantity, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for Top {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.with_ties,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.percent,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.quantity,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3531pub struct Top {
3533 pub with_ties: bool,
3536 pub percent: bool,
3538 pub quantity: Option<TopQuantity>,
3540}
3541
3542#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TopQuantity {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
TopQuantity::Expr(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Expr",
&__self_0),
TopQuantity::Constant(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Constant", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TopQuantity {
#[inline]
fn clone(&self) -> TopQuantity {
match self {
TopQuantity::Expr(__self_0) =>
TopQuantity::Expr(::core::clone::Clone::clone(__self_0)),
TopQuantity::Constant(__self_0) =>
TopQuantity::Constant(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for TopQuantity {
#[inline]
fn eq(&self, other: &TopQuantity) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(TopQuantity::Expr(__self_0), TopQuantity::Expr(__arg1_0)) =>
__self_0 == __arg1_0,
(TopQuantity::Constant(__self_0),
TopQuantity::Constant(__arg1_0)) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TopQuantity {
#[inline]
fn partial_cmp(&self, other: &TopQuantity)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(TopQuantity::Expr(__self_0), TopQuantity::Expr(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(TopQuantity::Constant(__self_0), TopQuantity::Constant(__arg1_0))
=> ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for TopQuantity {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Expr>;
let _: ::core::cmp::AssertParamIsEq<u64>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for TopQuantity {
#[inline]
fn cmp(&self, other: &TopQuantity) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(TopQuantity::Expr(__self_0), TopQuantity::Expr(__arg1_0))
=> ::core::cmp::Ord::cmp(__self_0, __arg1_0),
(TopQuantity::Constant(__self_0),
TopQuantity::Constant(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for TopQuantity {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
TopQuantity::Expr(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
TopQuantity::Constant(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash)]
3543#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3544#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TopQuantity {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Expr(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Constant(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TopQuantity {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Expr(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Constant(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3545pub enum TopQuantity {
3547 Expr(Expr),
3549 Constant(u64),
3551}
3552
3553impl fmt::Display for Top {
3554 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3555 let extension = if self.with_ties { " WITH TIES" } else { "" };
3556 if let Some(ref quantity) = self.quantity {
3557 let percent = if self.percent { " PERCENT" } else { "" };
3558 match quantity {
3559 TopQuantity::Expr(quantity) => f.write_fmt(format_args!("TOP ({0}){1}{2}", quantity, percent, extension))write!(f, "TOP ({quantity}){percent}{extension}"),
3560 TopQuantity::Constant(quantity) => {
3561 f.write_fmt(format_args!("TOP {0}{1}{2}", quantity, percent, extension))write!(f, "TOP {quantity}{percent}{extension}")
3562 }
3563 }
3564 } else {
3565 f.write_fmt(format_args!("TOP{0}", extension))write!(f, "TOP{extension}")
3566 }
3567 }
3568}
3569
3570#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Values {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "Values",
"explicit_row", &self.explicit_row, "value_keyword",
&self.value_keyword, "rows", &&self.rows)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Values {
#[inline]
fn clone(&self) -> Values {
Values {
explicit_row: ::core::clone::Clone::clone(&self.explicit_row),
value_keyword: ::core::clone::Clone::clone(&self.value_keyword),
rows: ::core::clone::Clone::clone(&self.rows),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Values {
#[inline]
fn eq(&self, other: &Values) -> bool {
self.explicit_row == other.explicit_row &&
self.value_keyword == other.value_keyword &&
self.rows == other.rows
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Values {
#[inline]
fn partial_cmp(&self, other: &Values)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.explicit_row,
&other.explicit_row) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.value_keyword,
&other.value_keyword) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.rows,
&other.rows),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for Values {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<Vec<Vec<Expr>>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for Values {
#[inline]
fn cmp(&self, other: &Values) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.explicit_row, &other.explicit_row) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.value_keyword,
&other.value_keyword) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.rows, &other.rows),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Values {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.explicit_row, state);
::core::hash::Hash::hash(&self.value_keyword, state);
::core::hash::Hash::hash(&self.rows, state)
}
}Hash)]
3571#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3572#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for Values {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.explicit_row, visitor)?;
sqlparser::ast::Visit::visit(&self.value_keyword, visitor)?;
sqlparser::ast::Visit::visit(&self.rows, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for Values {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.explicit_row,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.value_keyword,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.rows, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3573pub struct Values {
3575 pub explicit_row: bool,
3578 pub value_keyword: bool,
3581 pub rows: Vec<Vec<Expr>>,
3583}
3584
3585impl fmt::Display for Values {
3586 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3587 match self.value_keyword {
3588 true => f.write_str("VALUE")?,
3589 false => f.write_str("VALUES")?,
3590 };
3591 let prefix = if self.explicit_row { "ROW" } else { "" };
3592 let mut delim = "";
3593 for row in &self.rows {
3594 f.write_str(delim)?;
3595 delim = ",";
3596 SpaceOrNewline.fmt(f)?;
3597 Indent(format_args!("{1}({0})", display_comma_separated(row), prefix)format_args!("{prefix}({})", display_comma_separated(row))).fmt(f)?;
3598 }
3599 Ok(())
3600 }
3601}
3602
3603#[derive(#[automatically_derived]
impl ::core::fmt::Debug for SelectInto {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "SelectInto",
"temporary", &self.temporary, "unlogged", &self.unlogged, "table",
&self.table, "name", &&self.name)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for SelectInto {
#[inline]
fn clone(&self) -> SelectInto {
SelectInto {
temporary: ::core::clone::Clone::clone(&self.temporary),
unlogged: ::core::clone::Clone::clone(&self.unlogged),
table: ::core::clone::Clone::clone(&self.table),
name: ::core::clone::Clone::clone(&self.name),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for SelectInto {
#[inline]
fn eq(&self, other: &SelectInto) -> bool {
self.temporary == other.temporary && self.unlogged == other.unlogged
&& self.table == other.table && self.name == other.name
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for SelectInto {
#[inline]
fn partial_cmp(&self, other: &SelectInto)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.temporary,
&other.temporary) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.unlogged,
&other.unlogged) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.table,
&other.table) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.name,
&other.name),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for SelectInto {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<ObjectName>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for SelectInto {
#[inline]
fn cmp(&self, other: &SelectInto) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.temporary, &other.temporary) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.unlogged, &other.unlogged) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.table, &other.table) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.name, &other.name),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for SelectInto {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.temporary, state);
::core::hash::Hash::hash(&self.unlogged, state);
::core::hash::Hash::hash(&self.table, state);
::core::hash::Hash::hash(&self.name, state)
}
}Hash)]
3604#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3605#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for SelectInto {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.temporary, visitor)?;
sqlparser::ast::Visit::visit(&self.unlogged, visitor)?;
sqlparser::ast::Visit::visit(&self.table, visitor)?;
sqlparser::ast::Visit::visit(&self.name, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for SelectInto {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.temporary,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.unlogged,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.table, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.name, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3606pub struct SelectInto {
3608 pub temporary: bool,
3610 pub unlogged: bool,
3612 pub table: bool,
3614 pub name: ObjectName,
3616}
3617
3618impl fmt::Display for SelectInto {
3619 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3620 let temporary = if self.temporary { " TEMPORARY" } else { "" };
3621 let unlogged = if self.unlogged { " UNLOGGED" } else { "" };
3622 let table = if self.table { " TABLE" } else { "" };
3623
3624 f.write_fmt(format_args!("INTO{0}{1}{2} {3}", temporary, unlogged, table,
self.name))write!(f, "INTO{}{}{} {}", temporary, unlogged, table, self.name)
3625 }
3626}
3627
3628#[derive(#[automatically_derived]
impl ::core::fmt::Debug for GroupByWithModifier {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
GroupByWithModifier::Rollup =>
::core::fmt::Formatter::write_str(f, "Rollup"),
GroupByWithModifier::Cube =>
::core::fmt::Formatter::write_str(f, "Cube"),
GroupByWithModifier::Totals =>
::core::fmt::Formatter::write_str(f, "Totals"),
GroupByWithModifier::GroupingSets(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"GroupingSets", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for GroupByWithModifier {
#[inline]
fn clone(&self) -> GroupByWithModifier {
match self {
GroupByWithModifier::Rollup => GroupByWithModifier::Rollup,
GroupByWithModifier::Cube => GroupByWithModifier::Cube,
GroupByWithModifier::Totals => GroupByWithModifier::Totals,
GroupByWithModifier::GroupingSets(__self_0) =>
GroupByWithModifier::GroupingSets(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for GroupByWithModifier {
#[inline]
fn eq(&self, other: &GroupByWithModifier) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(GroupByWithModifier::GroupingSets(__self_0),
GroupByWithModifier::GroupingSets(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for GroupByWithModifier {
#[inline]
fn partial_cmp(&self, other: &GroupByWithModifier)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(GroupByWithModifier::GroupingSets(__self_0),
GroupByWithModifier::GroupingSets(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for GroupByWithModifier {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Expr>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for GroupByWithModifier {
#[inline]
fn cmp(&self, other: &GroupByWithModifier) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(GroupByWithModifier::GroupingSets(__self_0),
GroupByWithModifier::GroupingSets(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for GroupByWithModifier {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
GroupByWithModifier::GroupingSets(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
3633#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3634#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for GroupByWithModifier {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Rollup => {}
Self::Cube => {}
Self::Totals => {}
Self::GroupingSets(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for GroupByWithModifier {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Rollup => {}
Self::Cube => {}
Self::Totals => {}
Self::GroupingSets(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3635pub enum GroupByWithModifier {
3637 Rollup,
3639 Cube,
3641 Totals,
3643 GroupingSets(Expr),
3647}
3648
3649impl fmt::Display for GroupByWithModifier {
3650 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3651 match self {
3652 GroupByWithModifier::Rollup => f.write_fmt(format_args!("WITH ROLLUP"))write!(f, "WITH ROLLUP"),
3653 GroupByWithModifier::Cube => f.write_fmt(format_args!("WITH CUBE"))write!(f, "WITH CUBE"),
3654 GroupByWithModifier::Totals => f.write_fmt(format_args!("WITH TOTALS"))write!(f, "WITH TOTALS"),
3655 GroupByWithModifier::GroupingSets(expr) => {
3656 f.write_fmt(format_args!("{0}", expr))write!(f, "{expr}")
3657 }
3658 }
3659 }
3660}
3661
3662#[derive(#[automatically_derived]
impl ::core::fmt::Debug for GroupByExpr {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
GroupByExpr::All(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "All",
&__self_0),
GroupByExpr::Expressions(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f,
"Expressions", __self_0, &__self_1),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for GroupByExpr {
#[inline]
fn clone(&self) -> GroupByExpr {
match self {
GroupByExpr::All(__self_0) =>
GroupByExpr::All(::core::clone::Clone::clone(__self_0)),
GroupByExpr::Expressions(__self_0, __self_1) =>
GroupByExpr::Expressions(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for GroupByExpr {
#[inline]
fn eq(&self, other: &GroupByExpr) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(GroupByExpr::All(__self_0), GroupByExpr::All(__arg1_0)) =>
__self_0 == __arg1_0,
(GroupByExpr::Expressions(__self_0, __self_1),
GroupByExpr::Expressions(__arg1_0, __arg1_1)) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for GroupByExpr {
#[inline]
fn partial_cmp(&self, other: &GroupByExpr)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(GroupByExpr::All(__self_0), GroupByExpr::All(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(GroupByExpr::Expressions(__self_0, __self_1),
GroupByExpr::Expressions(__arg1_0, __arg1_1)) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_1, __arg1_1),
cmp => cmp,
},
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for GroupByExpr {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Vec<GroupByWithModifier>>;
let _: ::core::cmp::AssertParamIsEq<Vec<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Vec<GroupByWithModifier>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for GroupByExpr {
#[inline]
fn cmp(&self, other: &GroupByExpr) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(GroupByExpr::All(__self_0), GroupByExpr::All(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(GroupByExpr::Expressions(__self_0, __self_1),
GroupByExpr::Expressions(__arg1_0, __arg1_1)) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_1, __arg1_1),
cmp => cmp,
},
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for GroupByExpr {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
GroupByExpr::All(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
GroupByExpr::Expressions(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
}
}
}Hash)]
3663#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3664#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for GroupByExpr {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::All(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Expressions(_0, _1) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
sqlparser::ast::Visit::visit(_1, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for GroupByExpr {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::All(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Expressions(_0, _1) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
sqlparser::ast::VisitMut::visit(_1, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3665pub enum GroupByExpr {
3668 All(Vec<GroupByWithModifier>),
3678 Expressions(Vec<Expr>, Vec<GroupByWithModifier>),
3680}
3681
3682impl fmt::Display for GroupByExpr {
3683 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3684 match self {
3685 GroupByExpr::All(modifiers) => {
3686 f.write_fmt(format_args!("GROUP BY ALL"))write!(f, "GROUP BY ALL")?;
3687 if !modifiers.is_empty() {
3688 f.write_fmt(format_args!(" {0}", display_separated(modifiers, " ")))write!(f, " {}", display_separated(modifiers, " "))?;
3689 }
3690 Ok(())
3691 }
3692 GroupByExpr::Expressions(col_names, modifiers) => {
3693 f.write_str("GROUP BY")?;
3694 SpaceOrNewline.fmt(f)?;
3695 Indent(display_comma_separated(col_names)).fmt(f)?;
3696 if !modifiers.is_empty() {
3697 f.write_fmt(format_args!(" {0}", display_separated(modifiers, " ")))write!(f, " {}", display_separated(modifiers, " "))?;
3698 }
3699 Ok(())
3700 }
3701 }
3702 }
3703}
3704
3705#[derive(#[automatically_derived]
impl ::core::fmt::Debug for FormatClause {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
FormatClause::Identifier(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Identifier", &__self_0),
FormatClause::Null =>
::core::fmt::Formatter::write_str(f, "Null"),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for FormatClause {
#[inline]
fn clone(&self) -> FormatClause {
match self {
FormatClause::Identifier(__self_0) =>
FormatClause::Identifier(::core::clone::Clone::clone(__self_0)),
FormatClause::Null => FormatClause::Null,
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for FormatClause {
#[inline]
fn eq(&self, other: &FormatClause) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(FormatClause::Identifier(__self_0),
FormatClause::Identifier(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for FormatClause {
#[inline]
fn partial_cmp(&self, other: &FormatClause)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(FormatClause::Identifier(__self_0),
FormatClause::Identifier(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for FormatClause {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for FormatClause {
#[inline]
fn cmp(&self, other: &FormatClause) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(FormatClause::Identifier(__self_0),
FormatClause::Identifier(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for FormatClause {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
FormatClause::Identifier(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
3709#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3710#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for FormatClause {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Identifier(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Null => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for FormatClause {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Identifier(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Null => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3711pub enum FormatClause {
3712 Identifier(Ident),
3714 Null,
3716}
3717
3718impl fmt::Display for FormatClause {
3719 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3720 match self {
3721 FormatClause::Identifier(ident) => f.write_fmt(format_args!("FORMAT {0}", ident))write!(f, "FORMAT {ident}"),
3722 FormatClause::Null => f.write_fmt(format_args!("FORMAT NULL"))write!(f, "FORMAT NULL"),
3723 }
3724 }
3725}
3726
3727#[derive(#[automatically_derived]
impl ::core::fmt::Debug for InputFormatClause {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"InputFormatClause", "ident", &self.ident, "values",
&&self.values)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for InputFormatClause {
#[inline]
fn clone(&self) -> InputFormatClause {
InputFormatClause {
ident: ::core::clone::Clone::clone(&self.ident),
values: ::core::clone::Clone::clone(&self.values),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for InputFormatClause {
#[inline]
fn eq(&self, other: &InputFormatClause) -> bool {
self.ident == other.ident && self.values == other.values
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for InputFormatClause {
#[inline]
fn partial_cmp(&self, other: &InputFormatClause)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.ident, &other.ident)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.values,
&other.values),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for InputFormatClause {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<Vec<Expr>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for InputFormatClause {
#[inline]
fn cmp(&self, other: &InputFormatClause) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.ident, &other.ident) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.values, &other.values),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for InputFormatClause {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.ident, state);
::core::hash::Hash::hash(&self.values, state)
}
}Hash)]
3731#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3732#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for InputFormatClause {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.ident, visitor)?;
sqlparser::ast::Visit::visit(&self.values, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for InputFormatClause {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.ident, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.values, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3733pub struct InputFormatClause {
3734 pub ident: Ident,
3736 pub values: Vec<Expr>,
3738}
3739
3740impl fmt::Display for InputFormatClause {
3741 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3742 f.write_fmt(format_args!("FORMAT {0}", self.ident))write!(f, "FORMAT {}", self.ident)?;
3743
3744 if !self.values.is_empty() {
3745 f.write_fmt(format_args!(" {0}",
display_comma_separated(self.values.as_slice())))write!(f, " {}", display_comma_separated(self.values.as_slice()))?;
3746 }
3747
3748 Ok(())
3749 }
3750}
3751
3752#[derive(#[automatically_derived]
impl ::core::fmt::Debug for ForClause {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ForClause::Browse =>
::core::fmt::Formatter::write_str(f, "Browse"),
ForClause::Json {
for_json: __self_0,
root: __self_1,
include_null_values: __self_2,
without_array_wrapper: __self_3 } =>
::core::fmt::Formatter::debug_struct_field4_finish(f, "Json",
"for_json", __self_0, "root", __self_1,
"include_null_values", __self_2, "without_array_wrapper",
&__self_3),
ForClause::Xml {
for_xml: __self_0,
elements: __self_1,
binary_base64: __self_2,
root: __self_3,
r#type: __self_4 } =>
::core::fmt::Formatter::debug_struct_field5_finish(f, "Xml",
"for_xml", __self_0, "elements", __self_1, "binary_base64",
__self_2, "root", __self_3, "type", &__self_4),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for ForClause {
#[inline]
fn clone(&self) -> ForClause {
match self {
ForClause::Browse => ForClause::Browse,
ForClause::Json {
for_json: __self_0,
root: __self_1,
include_null_values: __self_2,
without_array_wrapper: __self_3 } =>
ForClause::Json {
for_json: ::core::clone::Clone::clone(__self_0),
root: ::core::clone::Clone::clone(__self_1),
include_null_values: ::core::clone::Clone::clone(__self_2),
without_array_wrapper: ::core::clone::Clone::clone(__self_3),
},
ForClause::Xml {
for_xml: __self_0,
elements: __self_1,
binary_base64: __self_2,
root: __self_3,
r#type: __self_4 } =>
ForClause::Xml {
for_xml: ::core::clone::Clone::clone(__self_0),
elements: ::core::clone::Clone::clone(__self_1),
binary_base64: ::core::clone::Clone::clone(__self_2),
root: ::core::clone::Clone::clone(__self_3),
r#type: ::core::clone::Clone::clone(__self_4),
},
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ForClause {
#[inline]
fn eq(&self, other: &ForClause) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ForClause::Json {
for_json: __self_0,
root: __self_1,
include_null_values: __self_2,
without_array_wrapper: __self_3 }, ForClause::Json {
for_json: __arg1_0,
root: __arg1_1,
include_null_values: __arg1_2,
without_array_wrapper: __arg1_3 }) =>
__self_2 == __arg1_2 && __self_3 == __arg1_3 &&
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(ForClause::Xml {
for_xml: __self_0,
elements: __self_1,
binary_base64: __self_2,
root: __self_3,
r#type: __self_4 }, ForClause::Xml {
for_xml: __arg1_0,
elements: __arg1_1,
binary_base64: __arg1_2,
root: __arg1_3,
r#type: __arg1_4 }) =>
__self_1 == __arg1_1 && __self_2 == __arg1_2 &&
__self_4 == __arg1_4 && __self_0 == __arg1_0 &&
__self_3 == __arg1_3,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ForClause {
#[inline]
fn partial_cmp(&self, other: &ForClause)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(ForClause::Json {
for_json: __self_0,
root: __self_1,
include_null_values: __self_2,
without_array_wrapper: __self_3 }, ForClause::Json {
for_json: __arg1_0,
root: __arg1_1,
include_null_values: __arg1_2,
without_array_wrapper: __arg1_3 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(ForClause::Xml {
for_xml: __self_0,
elements: __self_1,
binary_base64: __self_2,
root: __self_3,
r#type: __self_4 }, ForClause::Xml {
for_xml: __arg1_0,
elements: __arg1_1,
binary_base64: __arg1_2,
root: __arg1_3,
r#type: __arg1_4 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_3,
__arg1_3) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_4, __arg1_4),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for ForClause {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<ForJson>;
let _: ::core::cmp::AssertParamIsEq<Option<String>>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<ForXml>;
let _: ::core::cmp::AssertParamIsEq<Option<String>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for ForClause {
#[inline]
fn cmp(&self, other: &ForClause) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(ForClause::Json {
for_json: __self_0,
root: __self_1,
include_null_values: __self_2,
without_array_wrapper: __self_3 }, ForClause::Json {
for_json: __arg1_0,
root: __arg1_1,
include_null_values: __arg1_2,
without_array_wrapper: __arg1_3 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
(ForClause::Xml {
for_xml: __self_0,
elements: __self_1,
binary_base64: __self_2,
root: __self_3,
r#type: __self_4 }, ForClause::Xml {
for_xml: __arg1_0,
elements: __arg1_1,
binary_base64: __arg1_2,
root: __arg1_3,
r#type: __arg1_4 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_3, __arg1_3) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_4, __arg1_4),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ForClause {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
ForClause::Json {
for_json: __self_0,
root: __self_1,
include_null_values: __self_2,
without_array_wrapper: __self_3 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state)
}
ForClause::Xml {
for_xml: __self_0,
elements: __self_1,
binary_base64: __self_2,
root: __self_3,
r#type: __self_4 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state);
::core::hash::Hash::hash(__self_4, state)
}
_ => {}
}
}
}Hash)]
3754#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3755#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for ForClause {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Browse => {}
Self::Json {
for_json, root, include_null_values, without_array_wrapper }
=> {
sqlparser::ast::Visit::visit(for_json, visitor)?;
sqlparser::ast::Visit::visit(root, visitor)?;
sqlparser::ast::Visit::visit(include_null_values, visitor)?;
sqlparser::ast::Visit::visit(without_array_wrapper,
visitor)?;
}
Self::Xml { for_xml, elements, binary_base64, root, r#type }
=> {
sqlparser::ast::Visit::visit(for_xml, visitor)?;
sqlparser::ast::Visit::visit(elements, visitor)?;
sqlparser::ast::Visit::visit(binary_base64, visitor)?;
sqlparser::ast::Visit::visit(root, visitor)?;
sqlparser::ast::Visit::visit(r#type, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for ForClause {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Browse => {}
Self::Json {
for_json, root, include_null_values, without_array_wrapper }
=> {
sqlparser::ast::VisitMut::visit(for_json, visitor)?;
sqlparser::ast::VisitMut::visit(root, visitor)?;
sqlparser::ast::VisitMut::visit(include_null_values,
visitor)?;
sqlparser::ast::VisitMut::visit(without_array_wrapper,
visitor)?;
}
Self::Xml { for_xml, elements, binary_base64, root, r#type }
=> {
sqlparser::ast::VisitMut::visit(for_xml, visitor)?;
sqlparser::ast::VisitMut::visit(elements, visitor)?;
sqlparser::ast::VisitMut::visit(binary_base64, visitor)?;
sqlparser::ast::VisitMut::visit(root, visitor)?;
sqlparser::ast::VisitMut::visit(r#type, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3756pub enum ForClause {
3757 Browse,
3759 Json {
3761 for_json: ForJson,
3763 root: Option<String>,
3765 include_null_values: bool,
3767 without_array_wrapper: bool,
3769 },
3770 Xml {
3772 for_xml: ForXml,
3774 elements: bool,
3776 binary_base64: bool,
3778 root: Option<String>,
3780 r#type: bool,
3782 },
3783}
3784
3785impl fmt::Display for ForClause {
3786 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3787 match self {
3788 ForClause::Browse => f.write_fmt(format_args!("FOR BROWSE"))write!(f, "FOR BROWSE"),
3789 ForClause::Json {
3790 for_json,
3791 root,
3792 include_null_values,
3793 without_array_wrapper,
3794 } => {
3795 f.write_fmt(format_args!("FOR JSON "))write!(f, "FOR JSON ")?;
3796 f.write_fmt(format_args!("{0}", for_json))write!(f, "{for_json}")?;
3797 if let Some(root) = root {
3798 f.write_fmt(format_args!(", ROOT(\'{0}\')", root))write!(f, ", ROOT('{root}')")?;
3799 }
3800 if *include_null_values {
3801 f.write_fmt(format_args!(", INCLUDE_NULL_VALUES"))write!(f, ", INCLUDE_NULL_VALUES")?;
3802 }
3803 if *without_array_wrapper {
3804 f.write_fmt(format_args!(", WITHOUT_ARRAY_WRAPPER"))write!(f, ", WITHOUT_ARRAY_WRAPPER")?;
3805 }
3806 Ok(())
3807 }
3808 ForClause::Xml {
3809 for_xml,
3810 elements,
3811 binary_base64,
3812 root,
3813 r#type,
3814 } => {
3815 f.write_fmt(format_args!("FOR XML "))write!(f, "FOR XML ")?;
3816 f.write_fmt(format_args!("{0}", for_xml))write!(f, "{for_xml}")?;
3817 if *binary_base64 {
3818 f.write_fmt(format_args!(", BINARY BASE64"))write!(f, ", BINARY BASE64")?;
3819 }
3820 if *r#type {
3821 f.write_fmt(format_args!(", TYPE"))write!(f, ", TYPE")?;
3822 }
3823 if let Some(root) = root {
3824 f.write_fmt(format_args!(", ROOT(\'{0}\')", root))write!(f, ", ROOT('{root}')")?;
3825 }
3826 if *elements {
3827 f.write_fmt(format_args!(", ELEMENTS"))write!(f, ", ELEMENTS")?;
3828 }
3829 Ok(())
3830 }
3831 }
3832 }
3833}
3834
3835#[derive(#[automatically_derived]
impl ::core::fmt::Debug for ForXml {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
ForXml::Raw(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Raw",
&__self_0),
ForXml::Auto => ::core::fmt::Formatter::write_str(f, "Auto"),
ForXml::Explicit =>
::core::fmt::Formatter::write_str(f, "Explicit"),
ForXml::Path(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Path",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for ForXml {
#[inline]
fn clone(&self) -> ForXml {
match self {
ForXml::Raw(__self_0) =>
ForXml::Raw(::core::clone::Clone::clone(__self_0)),
ForXml::Auto => ForXml::Auto,
ForXml::Explicit => ForXml::Explicit,
ForXml::Path(__self_0) =>
ForXml::Path(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ForXml {
#[inline]
fn eq(&self, other: &ForXml) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(ForXml::Raw(__self_0), ForXml::Raw(__arg1_0)) =>
__self_0 == __arg1_0,
(ForXml::Path(__self_0), ForXml::Path(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ForXml {
#[inline]
fn partial_cmp(&self, other: &ForXml)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(ForXml::Raw(__self_0), ForXml::Raw(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(ForXml::Path(__self_0), ForXml::Path(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for ForXml {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Option<String>>;
let _: ::core::cmp::AssertParamIsEq<Option<String>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for ForXml {
#[inline]
fn cmp(&self, other: &ForXml) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(ForXml::Raw(__self_0), ForXml::Raw(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(ForXml::Path(__self_0), ForXml::Path(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ForXml {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
ForXml::Raw(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
ForXml::Path(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
3836#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3837#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for ForXml {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Raw(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Auto => {}
Self::Explicit => {}
Self::Path(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for ForXml {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Raw(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Auto => {}
Self::Explicit => {}
Self::Path(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3838pub enum ForXml {
3840 Raw(Option<String>),
3842 Auto,
3844 Explicit,
3846 Path(Option<String>),
3848}
3849
3850impl fmt::Display for ForXml {
3851 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3852 match self {
3853 ForXml::Raw(root) => {
3854 f.write_fmt(format_args!("RAW"))write!(f, "RAW")?;
3855 if let Some(root) = root {
3856 f.write_fmt(format_args!("(\'{0}\')", root))write!(f, "('{root}')")?;
3857 }
3858 Ok(())
3859 }
3860 ForXml::Auto => f.write_fmt(format_args!("AUTO"))write!(f, "AUTO"),
3861 ForXml::Explicit => f.write_fmt(format_args!("EXPLICIT"))write!(f, "EXPLICIT"),
3862 ForXml::Path(root) => {
3863 f.write_fmt(format_args!("PATH"))write!(f, "PATH")?;
3864 if let Some(root) = root {
3865 f.write_fmt(format_args!("(\'{0}\')", root))write!(f, "('{root}')")?;
3866 }
3867 Ok(())
3868 }
3869 }
3870 }
3871}
3872
3873#[derive(#[automatically_derived]
impl ::core::fmt::Debug for ForJson {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self { ForJson::Auto => "Auto", ForJson::Path => "Path", })
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for ForJson {
#[inline]
fn clone(&self) -> ForJson {
match self {
ForJson::Auto => ForJson::Auto,
ForJson::Path => ForJson::Path,
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ForJson {
#[inline]
fn eq(&self, other: &ForJson) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ForJson {
#[inline]
fn partial_cmp(&self, other: &ForJson)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for ForJson {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for ForJson {
#[inline]
fn cmp(&self, other: &ForJson) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ForJson {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
3874#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for ForJson {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self { Self::Auto => {} Self::Path => {} }
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for ForJson {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self { Self::Auto => {} Self::Path => {} }
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3875#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3876pub enum ForJson {
3878 Auto,
3880 Path,
3882}
3883
3884impl fmt::Display for ForJson {
3885 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3886 match self {
3887 ForJson::Auto => f.write_fmt(format_args!("AUTO"))write!(f, "AUTO"),
3888 ForJson::Path => f.write_fmt(format_args!("PATH"))write!(f, "PATH"),
3889 }
3890 }
3891}
3892
3893#[derive(#[automatically_derived]
impl ::core::fmt::Debug for JsonTableColumn {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
JsonTableColumn::Named(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Named",
&__self_0),
JsonTableColumn::ForOrdinality(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ForOrdinality", &__self_0),
JsonTableColumn::Nested(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Nested",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for JsonTableColumn {
#[inline]
fn clone(&self) -> JsonTableColumn {
match self {
JsonTableColumn::Named(__self_0) =>
JsonTableColumn::Named(::core::clone::Clone::clone(__self_0)),
JsonTableColumn::ForOrdinality(__self_0) =>
JsonTableColumn::ForOrdinality(::core::clone::Clone::clone(__self_0)),
JsonTableColumn::Nested(__self_0) =>
JsonTableColumn::Nested(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for JsonTableColumn {
#[inline]
fn eq(&self, other: &JsonTableColumn) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(JsonTableColumn::Named(__self_0),
JsonTableColumn::Named(__arg1_0)) => __self_0 == __arg1_0,
(JsonTableColumn::ForOrdinality(__self_0),
JsonTableColumn::ForOrdinality(__arg1_0)) =>
__self_0 == __arg1_0,
(JsonTableColumn::Nested(__self_0),
JsonTableColumn::Nested(__arg1_0)) => __self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for JsonTableColumn {
#[inline]
fn partial_cmp(&self, other: &JsonTableColumn)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(JsonTableColumn::Named(__self_0),
JsonTableColumn::Named(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JsonTableColumn::ForOrdinality(__self_0),
JsonTableColumn::ForOrdinality(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(JsonTableColumn::Nested(__self_0),
JsonTableColumn::Nested(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for JsonTableColumn {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<JsonTableNamedColumn>;
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<JsonTableNestedColumn>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for JsonTableColumn {
#[inline]
fn cmp(&self, other: &JsonTableColumn) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(JsonTableColumn::Named(__self_0),
JsonTableColumn::Named(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JsonTableColumn::ForOrdinality(__self_0),
JsonTableColumn::ForOrdinality(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(JsonTableColumn::Nested(__self_0),
JsonTableColumn::Nested(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for JsonTableColumn {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
JsonTableColumn::Named(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JsonTableColumn::ForOrdinality(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
JsonTableColumn::Nested(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash)]
3914#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for JsonTableColumn {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Named(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::ForOrdinality(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Nested(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for JsonTableColumn {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Named(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::ForOrdinality(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Nested(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3915#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3916pub enum JsonTableColumn {
3917 Named(JsonTableNamedColumn),
3919 ForOrdinality(Ident),
3921 Nested(JsonTableNestedColumn),
3923}
3924
3925impl fmt::Display for JsonTableColumn {
3926 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
3927 match self {
3928 JsonTableColumn::Named(json_table_named_column) => {
3929 f.write_fmt(format_args!("{0}", json_table_named_column))write!(f, "{json_table_named_column}")
3930 }
3931 JsonTableColumn::ForOrdinality(ident) => f.write_fmt(format_args!("{0} FOR ORDINALITY", ident))write!(f, "{ident} FOR ORDINALITY"),
3932 JsonTableColumn::Nested(json_table_nested_column) => {
3933 f.write_fmt(format_args!("{0}", json_table_nested_column))write!(f, "{json_table_nested_column}")
3934 }
3935 }
3936 }
3937}
3938
3939#[derive(#[automatically_derived]
impl ::core::fmt::Debug for JsonTableNestedColumn {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"JsonTableNestedColumn", "path", &self.path, "columns",
&&self.columns)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for JsonTableNestedColumn {
#[inline]
fn clone(&self) -> JsonTableNestedColumn {
JsonTableNestedColumn {
path: ::core::clone::Clone::clone(&self.path),
columns: ::core::clone::Clone::clone(&self.columns),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for JsonTableNestedColumn {
#[inline]
fn eq(&self, other: &JsonTableNestedColumn) -> bool {
self.path == other.path && self.columns == other.columns
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for JsonTableNestedColumn {
#[inline]
fn partial_cmp(&self, other: &JsonTableNestedColumn)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.path, &other.path) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.columns,
&other.columns),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for JsonTableNestedColumn {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Value>;
let _: ::core::cmp::AssertParamIsEq<Vec<JsonTableColumn>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for JsonTableNestedColumn {
#[inline]
fn cmp(&self, other: &JsonTableNestedColumn) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.path, &other.path) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.columns, &other.columns),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for JsonTableNestedColumn {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.path, state);
::core::hash::Hash::hash(&self.columns, state)
}
}Hash)]
3943#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for JsonTableNestedColumn {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.path, visitor)?;
sqlparser::ast::Visit::visit(&self.columns, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for JsonTableNestedColumn {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.path, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.columns,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3944#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3945pub struct JsonTableNestedColumn {
3947 pub path: Value,
3949 pub columns: Vec<JsonTableColumn>,
3951}
3952
3953impl fmt::Display for JsonTableNestedColumn {
3954 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
3955 f.write_fmt(format_args!("NESTED PATH {0} COLUMNS ({1})", self.path,
display_comma_separated(&self.columns)))write!(
3956 f,
3957 "NESTED PATH {} COLUMNS ({})",
3958 self.path,
3959 display_comma_separated(&self.columns)
3960 )
3961 }
3962}
3963
3964#[derive(#[automatically_derived]
impl ::core::fmt::Debug for JsonTableNamedColumn {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["name", "type", "path", "exists", "on_empty", "on_error"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.name, &self.r#type, &self.path, &self.exists,
&self.on_empty, &&self.on_error];
::core::fmt::Formatter::debug_struct_fields_finish(f,
"JsonTableNamedColumn", names, values)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for JsonTableNamedColumn {
#[inline]
fn clone(&self) -> JsonTableNamedColumn {
JsonTableNamedColumn {
name: ::core::clone::Clone::clone(&self.name),
r#type: ::core::clone::Clone::clone(&self.r#type),
path: ::core::clone::Clone::clone(&self.path),
exists: ::core::clone::Clone::clone(&self.exists),
on_empty: ::core::clone::Clone::clone(&self.on_empty),
on_error: ::core::clone::Clone::clone(&self.on_error),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for JsonTableNamedColumn {
#[inline]
fn eq(&self, other: &JsonTableNamedColumn) -> bool {
self.exists == other.exists && self.name == other.name &&
self.r#type == other.r#type && self.path == other.path &&
self.on_empty == other.on_empty &&
self.on_error == other.on_error
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for JsonTableNamedColumn {
#[inline]
fn partial_cmp(&self, other: &JsonTableNamedColumn)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.name, &other.name) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.r#type,
&other.r#type) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.path,
&other.path) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.exists,
&other.exists) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.on_empty,
&other.on_empty) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.on_error,
&other.on_error),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for JsonTableNamedColumn {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<DataType>;
let _: ::core::cmp::AssertParamIsEq<Value>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _:
::core::cmp::AssertParamIsEq<Option<JsonTableColumnErrorHandling>>;
let _:
::core::cmp::AssertParamIsEq<Option<JsonTableColumnErrorHandling>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for JsonTableNamedColumn {
#[inline]
fn cmp(&self, other: &JsonTableNamedColumn) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.name, &other.name) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.r#type, &other.r#type) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.path, &other.path) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.exists, &other.exists) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.on_empty, &other.on_empty)
{
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.on_error, &other.on_error),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for JsonTableNamedColumn {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.name, state);
::core::hash::Hash::hash(&self.r#type, state);
::core::hash::Hash::hash(&self.path, state);
::core::hash::Hash::hash(&self.exists, state);
::core::hash::Hash::hash(&self.on_empty, state);
::core::hash::Hash::hash(&self.on_error, state)
}
}Hash)]
3972#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for JsonTableNamedColumn {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.name, visitor)?;
sqlparser::ast::Visit::visit(&self.r#type, visitor)?;
sqlparser::ast::Visit::visit(&self.path, visitor)?;
sqlparser::ast::Visit::visit(&self.exists, visitor)?;
sqlparser::ast::Visit::visit(&self.on_empty, visitor)?;
sqlparser::ast::Visit::visit(&self.on_error, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for JsonTableNamedColumn {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.name, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.r#type, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.path, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.exists, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.on_empty,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.on_error,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
3973#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3974pub struct JsonTableNamedColumn {
3975 pub name: Ident,
3977 pub r#type: DataType,
3979 pub path: Value,
3981 pub exists: bool,
3983 pub on_empty: Option<JsonTableColumnErrorHandling>,
3985 pub on_error: Option<JsonTableColumnErrorHandling>,
3987}
3988
3989impl fmt::Display for JsonTableNamedColumn {
3990 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3991 f.write_fmt(format_args!("{0} {1}{2} PATH {3}", self.name, self.r#type,
if self.exists { " EXISTS" } else { "" }, self.path))write!(
3992 f,
3993 "{} {}{} PATH {}",
3994 self.name,
3995 self.r#type,
3996 if self.exists { " EXISTS" } else { "" },
3997 self.path
3998 )?;
3999 if let Some(on_empty) = &self.on_empty {
4000 f.write_fmt(format_args!(" {0} ON EMPTY", on_empty))write!(f, " {on_empty} ON EMPTY")?;
4001 }
4002 if let Some(on_error) = &self.on_error {
4003 f.write_fmt(format_args!(" {0} ON ERROR", on_error))write!(f, " {on_error} ON ERROR")?;
4004 }
4005 Ok(())
4006 }
4007}
4008
4009#[derive(#[automatically_derived]
impl ::core::fmt::Debug for JsonTableColumnErrorHandling {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
JsonTableColumnErrorHandling::Null =>
::core::fmt::Formatter::write_str(f, "Null"),
JsonTableColumnErrorHandling::Default(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Default", &__self_0),
JsonTableColumnErrorHandling::Error =>
::core::fmt::Formatter::write_str(f, "Error"),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for JsonTableColumnErrorHandling {
#[inline]
fn clone(&self) -> JsonTableColumnErrorHandling {
match self {
JsonTableColumnErrorHandling::Null =>
JsonTableColumnErrorHandling::Null,
JsonTableColumnErrorHandling::Default(__self_0) =>
JsonTableColumnErrorHandling::Default(::core::clone::Clone::clone(__self_0)),
JsonTableColumnErrorHandling::Error =>
JsonTableColumnErrorHandling::Error,
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for JsonTableColumnErrorHandling {
#[inline]
fn eq(&self, other: &JsonTableColumnErrorHandling) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(JsonTableColumnErrorHandling::Default(__self_0),
JsonTableColumnErrorHandling::Default(__arg1_0)) =>
__self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for JsonTableColumnErrorHandling {
#[inline]
fn partial_cmp(&self, other: &JsonTableColumnErrorHandling)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(JsonTableColumnErrorHandling::Default(__self_0),
JsonTableColumnErrorHandling::Default(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for JsonTableColumnErrorHandling {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Value>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for JsonTableColumnErrorHandling {
#[inline]
fn cmp(&self, other: &JsonTableColumnErrorHandling)
-> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(JsonTableColumnErrorHandling::Default(__self_0),
JsonTableColumnErrorHandling::Default(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for JsonTableColumnErrorHandling {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
JsonTableColumnErrorHandling::Default(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
4012#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for JsonTableColumnErrorHandling {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Null => {}
Self::Default(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Error => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for JsonTableColumnErrorHandling {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::Null => {}
Self::Default(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Error => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
4013#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
4014pub enum JsonTableColumnErrorHandling {
4016 Null,
4018 Default(Value),
4020 Error,
4022}
4023
4024impl fmt::Display for JsonTableColumnErrorHandling {
4025 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4026 match self {
4027 JsonTableColumnErrorHandling::Null => f.write_fmt(format_args!("NULL"))write!(f, "NULL"),
4028 JsonTableColumnErrorHandling::Default(json_string) => {
4029 f.write_fmt(format_args!("DEFAULT {0}", json_string))write!(f, "DEFAULT {json_string}")
4030 }
4031 JsonTableColumnErrorHandling::Error => f.write_fmt(format_args!("ERROR"))write!(f, "ERROR"),
4032 }
4033 }
4034}
4035
4036#[derive(#[automatically_derived]
impl ::core::fmt::Debug for OpenJsonTableColumn {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f,
"OpenJsonTableColumn", "name", &self.name, "type", &self.r#type,
"path", &self.path, "as_json", &&self.as_json)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for OpenJsonTableColumn {
#[inline]
fn clone(&self) -> OpenJsonTableColumn {
OpenJsonTableColumn {
name: ::core::clone::Clone::clone(&self.name),
r#type: ::core::clone::Clone::clone(&self.r#type),
path: ::core::clone::Clone::clone(&self.path),
as_json: ::core::clone::Clone::clone(&self.as_json),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for OpenJsonTableColumn {
#[inline]
fn eq(&self, other: &OpenJsonTableColumn) -> bool {
self.as_json == other.as_json && self.name == other.name &&
self.r#type == other.r#type && self.path == other.path
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for OpenJsonTableColumn {
#[inline]
fn partial_cmp(&self, other: &OpenJsonTableColumn)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.name, &other.name) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.r#type,
&other.r#type) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(&self.path,
&other.path) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.as_json,
&other.as_json),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for OpenJsonTableColumn {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<DataType>;
let _: ::core::cmp::AssertParamIsEq<Option<String>>;
let _: ::core::cmp::AssertParamIsEq<bool>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for OpenJsonTableColumn {
#[inline]
fn cmp(&self, other: &OpenJsonTableColumn) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.name, &other.name) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.r#type, &other.r#type) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.path, &other.path) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.as_json, &other.as_json),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for OpenJsonTableColumn {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.name, state);
::core::hash::Hash::hash(&self.r#type, state);
::core::hash::Hash::hash(&self.path, state);
::core::hash::Hash::hash(&self.as_json, state)
}
}Hash)]
4044#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for OpenJsonTableColumn {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.name, visitor)?;
sqlparser::ast::Visit::visit(&self.r#type, visitor)?;
sqlparser::ast::Visit::visit(&self.path, visitor)?;
sqlparser::ast::Visit::visit(&self.as_json, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for OpenJsonTableColumn {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.name, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.r#type, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.path, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.as_json,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
4045#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
4046pub struct OpenJsonTableColumn {
4047 pub name: Ident,
4049 pub r#type: DataType,
4051 pub path: Option<String>,
4053 pub as_json: bool,
4055}
4056
4057impl fmt::Display for OpenJsonTableColumn {
4058 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4059 f.write_fmt(format_args!("{0} {1}", self.name, self.r#type))write!(f, "{} {}", self.name, self.r#type)?;
4060 if let Some(path) = &self.path {
4061 f.write_fmt(format_args!(" \'{0}\'", value::escape_single_quote_string(path)))write!(f, " '{}'", value::escape_single_quote_string(path))?;
4062 }
4063 if self.as_json {
4064 f.write_fmt(format_args!(" AS JSON"))write!(f, " AS JSON")?;
4065 }
4066 Ok(())
4067 }
4068}
4069
4070#[derive(#[automatically_derived]
impl ::core::fmt::Debug for ValueTableMode {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
ValueTableMode::AsStruct => "AsStruct",
ValueTableMode::AsValue => "AsValue",
ValueTableMode::DistinctAsStruct => "DistinctAsStruct",
ValueTableMode::DistinctAsValue => "DistinctAsValue",
})
}
}Debug, #[automatically_derived]
impl ::core::marker::Copy for ValueTableMode { }Copy, #[automatically_derived]
impl ::core::clone::Clone for ValueTableMode {
#[inline]
fn clone(&self) -> ValueTableMode { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for ValueTableMode {
#[inline]
fn eq(&self, other: &ValueTableMode) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for ValueTableMode {
#[inline]
fn partial_cmp(&self, other: &ValueTableMode)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for ValueTableMode {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for ValueTableMode {
#[inline]
fn cmp(&self, other: &ValueTableMode) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for ValueTableMode {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
4077#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
4078#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for ValueTableMode {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::AsStruct => {}
Self::AsValue => {}
Self::DistinctAsStruct => {}
Self::DistinctAsValue => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for ValueTableMode {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::AsStruct => {}
Self::AsValue => {}
Self::DistinctAsStruct => {}
Self::DistinctAsValue => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
4079pub enum ValueTableMode {
4081 AsStruct,
4083 AsValue,
4085 DistinctAsStruct,
4087 DistinctAsValue,
4089}
4090
4091impl fmt::Display for ValueTableMode {
4092 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4093 match self {
4094 ValueTableMode::AsStruct => f.write_fmt(format_args!("AS STRUCT"))write!(f, "AS STRUCT"),
4095 ValueTableMode::AsValue => f.write_fmt(format_args!("AS VALUE"))write!(f, "AS VALUE"),
4096 ValueTableMode::DistinctAsStruct => f.write_fmt(format_args!("DISTINCT AS STRUCT"))write!(f, "DISTINCT AS STRUCT"),
4097 ValueTableMode::DistinctAsValue => f.write_fmt(format_args!("DISTINCT AS VALUE"))write!(f, "DISTINCT AS VALUE"),
4098 }
4099 }
4100}
4101
4102#[derive(#[automatically_derived]
impl ::core::fmt::Debug for UpdateTableFromKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
UpdateTableFromKind::BeforeSet(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"BeforeSet", &__self_0),
UpdateTableFromKind::AfterSet(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"AfterSet", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for UpdateTableFromKind {
#[inline]
fn clone(&self) -> UpdateTableFromKind {
match self {
UpdateTableFromKind::BeforeSet(__self_0) =>
UpdateTableFromKind::BeforeSet(::core::clone::Clone::clone(__self_0)),
UpdateTableFromKind::AfterSet(__self_0) =>
UpdateTableFromKind::AfterSet(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for UpdateTableFromKind {
#[inline]
fn eq(&self, other: &UpdateTableFromKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(UpdateTableFromKind::BeforeSet(__self_0),
UpdateTableFromKind::BeforeSet(__arg1_0)) =>
__self_0 == __arg1_0,
(UpdateTableFromKind::AfterSet(__self_0),
UpdateTableFromKind::AfterSet(__arg1_0)) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for UpdateTableFromKind {
#[inline]
fn partial_cmp(&self, other: &UpdateTableFromKind)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(UpdateTableFromKind::BeforeSet(__self_0),
UpdateTableFromKind::BeforeSet(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(UpdateTableFromKind::AfterSet(__self_0),
UpdateTableFromKind::AfterSet(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for UpdateTableFromKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Vec<TableWithJoins>>;
let _: ::core::cmp::AssertParamIsEq<Vec<TableWithJoins>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for UpdateTableFromKind {
#[inline]
fn cmp(&self, other: &UpdateTableFromKind) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(UpdateTableFromKind::BeforeSet(__self_0),
UpdateTableFromKind::BeforeSet(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(UpdateTableFromKind::AfterSet(__self_0),
UpdateTableFromKind::AfterSet(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => unsafe { ::core::intrinsics::unreachable() }
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for UpdateTableFromKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
UpdateTableFromKind::BeforeSet(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
UpdateTableFromKind::AfterSet(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
}
}
}Hash)]
4104#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
4105#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for UpdateTableFromKind {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::BeforeSet(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::AfterSet(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for UpdateTableFromKind {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::BeforeSet(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::AfterSet(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
4106pub enum UpdateTableFromKind {
4107 BeforeSet(Vec<TableWithJoins>),
4110 AfterSet(Vec<TableWithJoins>),
4113}
4114
4115#[derive(#[automatically_derived]
impl ::core::fmt::Debug for XmlTableColumnOption {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
XmlTableColumnOption::NamedInfo {
r#type: __self_0,
path: __self_1,
default: __self_2,
nullable: __self_3 } =>
::core::fmt::Formatter::debug_struct_field4_finish(f,
"NamedInfo", "type", __self_0, "path", __self_1, "default",
__self_2, "nullable", &__self_3),
XmlTableColumnOption::ForOrdinality =>
::core::fmt::Formatter::write_str(f, "ForOrdinality"),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for XmlTableColumnOption {
#[inline]
fn clone(&self) -> XmlTableColumnOption {
match self {
XmlTableColumnOption::NamedInfo {
r#type: __self_0,
path: __self_1,
default: __self_2,
nullable: __self_3 } =>
XmlTableColumnOption::NamedInfo {
r#type: ::core::clone::Clone::clone(__self_0),
path: ::core::clone::Clone::clone(__self_1),
default: ::core::clone::Clone::clone(__self_2),
nullable: ::core::clone::Clone::clone(__self_3),
},
XmlTableColumnOption::ForOrdinality =>
XmlTableColumnOption::ForOrdinality,
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for XmlTableColumnOption {
#[inline]
fn eq(&self, other: &XmlTableColumnOption) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(XmlTableColumnOption::NamedInfo {
r#type: __self_0,
path: __self_1,
default: __self_2,
nullable: __self_3 }, XmlTableColumnOption::NamedInfo {
r#type: __arg1_0,
path: __arg1_1,
default: __arg1_2,
nullable: __arg1_3 }) =>
__self_3 == __arg1_3 && __self_0 == __arg1_0 &&
__self_1 == __arg1_1 && __self_2 == __arg1_2,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for XmlTableColumnOption {
#[inline]
fn partial_cmp(&self, other: &XmlTableColumnOption)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match (self, other) {
(XmlTableColumnOption::NamedInfo {
r#type: __self_0,
path: __self_1,
default: __self_2,
nullable: __self_3 }, XmlTableColumnOption::NamedInfo {
r#type: __arg1_0,
path: __arg1_1,
default: __arg1_2,
nullable: __arg1_3 }) =>
match ::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0)
{
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_1,
__arg1_1) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
match ::core::cmp::PartialOrd::partial_cmp(__self_2,
__arg1_2) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=> ::core::cmp::PartialOrd::partial_cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
_ =>
::core::cmp::PartialOrd::partial_cmp(&__self_discr,
&__arg1_discr),
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for XmlTableColumnOption {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DataType>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
let _: ::core::cmp::AssertParamIsEq<Option<Expr>>;
let _: ::core::cmp::AssertParamIsEq<bool>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for XmlTableColumnOption {
#[inline]
fn cmp(&self, other: &XmlTableColumnOption) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
match ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) {
::core::cmp::Ordering::Equal =>
match (self, other) {
(XmlTableColumnOption::NamedInfo {
r#type: __self_0,
path: __self_1,
default: __self_2,
nullable: __self_3 }, XmlTableColumnOption::NamedInfo {
r#type: __arg1_0,
path: __arg1_1,
default: __arg1_2,
nullable: __arg1_3 }) =>
match ::core::cmp::Ord::cmp(__self_0, __arg1_0) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_1, __arg1_1) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(__self_2, __arg1_2) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(__self_3, __arg1_3),
cmp => cmp,
},
cmp => cmp,
},
cmp => cmp,
},
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for XmlTableColumnOption {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state);
match self {
XmlTableColumnOption::NamedInfo {
r#type: __self_0,
path: __self_1,
default: __self_2,
nullable: __self_3 } => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state);
::core::hash::Hash::hash(__self_2, state);
::core::hash::Hash::hash(__self_3, state)
}
_ => {}
}
}
}Hash)]
4117#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for XmlTableColumnOption {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::NamedInfo { r#type, path, default, nullable } => {
sqlparser::ast::Visit::visit(r#type, visitor)?;
sqlparser::ast::Visit::visit(path, visitor)?;
sqlparser::ast::Visit::visit(default, visitor)?;
sqlparser::ast::Visit::visit(nullable, visitor)?;
}
Self::ForOrdinality => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for XmlTableColumnOption {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
match self {
Self::NamedInfo { r#type, path, default, nullable } => {
sqlparser::ast::VisitMut::visit(r#type, visitor)?;
sqlparser::ast::VisitMut::visit(path, visitor)?;
sqlparser::ast::VisitMut::visit(default, visitor)?;
sqlparser::ast::VisitMut::visit(nullable, visitor)?;
}
Self::ForOrdinality => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
4118#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
4119pub enum XmlTableColumnOption {
4120 NamedInfo {
4122 r#type: DataType,
4124 path: Option<Expr>,
4126 default: Option<Expr>,
4128 nullable: bool,
4130 },
4131 ForOrdinality,
4133}
4134
4135#[derive(#[automatically_derived]
impl ::core::fmt::Debug for XmlTableColumn {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"XmlTableColumn", "name", &self.name, "option", &&self.option)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for XmlTableColumn {
#[inline]
fn clone(&self) -> XmlTableColumn {
XmlTableColumn {
name: ::core::clone::Clone::clone(&self.name),
option: ::core::clone::Clone::clone(&self.option),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for XmlTableColumn {
#[inline]
fn eq(&self, other: &XmlTableColumn) -> bool {
self.name == other.name && self.option == other.option
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for XmlTableColumn {
#[inline]
fn partial_cmp(&self, other: &XmlTableColumn)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.name, &other.name) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.option,
&other.option),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for XmlTableColumn {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Ident>;
let _: ::core::cmp::AssertParamIsEq<XmlTableColumnOption>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for XmlTableColumn {
#[inline]
fn cmp(&self, other: &XmlTableColumn) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.name, &other.name) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.option, &other.option),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for XmlTableColumn {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.name, state);
::core::hash::Hash::hash(&self.option, state)
}
}Hash)]
4148#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for XmlTableColumn {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.name, visitor)?;
sqlparser::ast::Visit::visit(&self.option, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for XmlTableColumn {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.name, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.option, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
4149#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
4150pub struct XmlTableColumn {
4151 pub name: Ident,
4153 pub option: XmlTableColumnOption,
4155}
4156
4157impl fmt::Display for XmlTableColumn {
4158 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
4159 f.write_fmt(format_args!("{0}", self.name))write!(f, "{}", self.name)?;
4160 match &self.option {
4161 XmlTableColumnOption::NamedInfo {
4162 r#type,
4163 path,
4164 default,
4165 nullable,
4166 } => {
4167 f.write_fmt(format_args!(" {0}", r#type))write!(f, " {type}")?;
4168 if let Some(p) = path {
4169 f.write_fmt(format_args!(" PATH {0}", p))write!(f, " PATH {p}")?;
4170 }
4171 if let Some(d) = default {
4172 f.write_fmt(format_args!(" DEFAULT {0}", d))write!(f, " DEFAULT {d}")?;
4173 }
4174 if !*nullable {
4175 f.write_fmt(format_args!(" NOT NULL"))write!(f, " NOT NULL")?;
4176 }
4177 Ok(())
4178 }
4179 XmlTableColumnOption::ForOrdinality => {
4180 f.write_fmt(format_args!(" FOR ORDINALITY"))write!(f, " FOR ORDINALITY")
4181 }
4182 }
4183 }
4184}
4185
4186#[derive(#[automatically_derived]
impl ::core::fmt::Debug for XmlPassingArgument {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"XmlPassingArgument", "expr", &self.expr, "alias", &self.alias,
"by_value", &&self.by_value)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for XmlPassingArgument {
#[inline]
fn clone(&self) -> XmlPassingArgument {
XmlPassingArgument {
expr: ::core::clone::Clone::clone(&self.expr),
alias: ::core::clone::Clone::clone(&self.alias),
by_value: ::core::clone::Clone::clone(&self.by_value),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for XmlPassingArgument {
#[inline]
fn eq(&self, other: &XmlPassingArgument) -> bool {
self.by_value == other.by_value && self.expr == other.expr &&
self.alias == other.alias
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for XmlPassingArgument {
#[inline]
fn partial_cmp(&self, other: &XmlPassingArgument)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.expr, &other.expr) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
match ::core::cmp::PartialOrd::partial_cmp(&self.alias,
&other.alias) {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
=>
::core::cmp::PartialOrd::partial_cmp(&self.by_value,
&other.by_value),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for XmlPassingArgument {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Expr>;
let _: ::core::cmp::AssertParamIsEq<Option<Ident>>;
let _: ::core::cmp::AssertParamIsEq<bool>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for XmlPassingArgument {
#[inline]
fn cmp(&self, other: &XmlPassingArgument) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.expr, &other.expr) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.alias, &other.alias) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.by_value, &other.by_value),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for XmlPassingArgument {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.expr, state);
::core::hash::Hash::hash(&self.alias, state);
::core::hash::Hash::hash(&self.by_value, state)
}
}Hash)]
4188#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for XmlPassingArgument {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.expr, visitor)?;
sqlparser::ast::Visit::visit(&self.alias, visitor)?;
sqlparser::ast::Visit::visit(&self.by_value, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for XmlPassingArgument {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.expr, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.alias, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.by_value,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
4189#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
4190pub struct XmlPassingArgument {
4192 pub expr: Expr,
4194 pub alias: Option<Ident>,
4196 pub by_value: bool,
4198}
4199
4200impl fmt::Display for XmlPassingArgument {
4201 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
4202 if self.by_value {
4203 f.write_fmt(format_args!("BY VALUE "))write!(f, "BY VALUE ")?;
4204 }
4205 f.write_fmt(format_args!("{0}", self.expr))write!(f, "{}", self.expr)?;
4206 if let Some(alias) = &self.alias {
4207 f.write_fmt(format_args!(" AS {0}", alias))write!(f, " AS {alias}")?;
4208 }
4209 Ok(())
4210 }
4211}
4212
4213#[derive(#[automatically_derived]
impl ::core::fmt::Debug for XmlPassingClause {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f,
"XmlPassingClause", "arguments", &&self.arguments)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for XmlPassingClause {
#[inline]
fn clone(&self) -> XmlPassingClause {
XmlPassingClause {
arguments: ::core::clone::Clone::clone(&self.arguments),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for XmlPassingClause {
#[inline]
fn eq(&self, other: &XmlPassingClause) -> bool {
self.arguments == other.arguments
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for XmlPassingClause {
#[inline]
fn partial_cmp(&self, other: &XmlPassingClause)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::cmp::PartialOrd::partial_cmp(&self.arguments,
&other.arguments)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for XmlPassingClause {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Vec<XmlPassingArgument>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for XmlPassingClause {
#[inline]
fn cmp(&self, other: &XmlPassingClause) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.arguments, &other.arguments)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for XmlPassingClause {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.arguments, state)
}
}Hash)]
4215#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for XmlPassingClause {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.arguments, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for XmlPassingClause {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.arguments,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
4216#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
4217pub struct XmlPassingClause {
4219 pub arguments: Vec<XmlPassingArgument>,
4221}
4222
4223impl fmt::Display for XmlPassingClause {
4224 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
4225 if !self.arguments.is_empty() {
4226 f.write_fmt(format_args!(" PASSING {0}",
display_comma_separated(&self.arguments)))write!(f, " PASSING {}", display_comma_separated(&self.arguments))?;
4227 }
4228 Ok(())
4229 }
4230}
4231
4232#[derive(#[automatically_derived]
impl ::core::fmt::Debug for XmlNamespaceDefinition {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"XmlNamespaceDefinition", "uri", &self.uri, "name", &&self.name)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for XmlNamespaceDefinition {
#[inline]
fn clone(&self) -> XmlNamespaceDefinition {
XmlNamespaceDefinition {
uri: ::core::clone::Clone::clone(&self.uri),
name: ::core::clone::Clone::clone(&self.name),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for XmlNamespaceDefinition {
#[inline]
fn eq(&self, other: &XmlNamespaceDefinition) -> bool {
self.uri == other.uri && self.name == other.name
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for XmlNamespaceDefinition {
#[inline]
fn partial_cmp(&self, other: &XmlNamespaceDefinition)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.uri, &other.uri) {
::core::option::Option::Some(::core::cmp::Ordering::Equal) =>
::core::cmp::PartialOrd::partial_cmp(&self.name, &other.name),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for XmlNamespaceDefinition {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Expr>;
let _: ::core::cmp::AssertParamIsEq<Ident>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for XmlNamespaceDefinition {
#[inline]
fn cmp(&self, other: &XmlNamespaceDefinition) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.uri, &other.uri) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.name, &other.name),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for XmlNamespaceDefinition {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.uri, state);
::core::hash::Hash::hash(&self.name, state)
}
}Hash)]
4236#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for XmlNamespaceDefinition {
fn visit<V: sqlparser::ast::Visitor>(&self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::Visit::visit(&self.uri, visitor)?;
sqlparser::ast::Visit::visit(&self.name, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for XmlNamespaceDefinition {
fn visit<V: sqlparser::ast::VisitorMut>(&mut self, visitor: &mut V)
-> ::std::ops::ControlFlow<V::Break> {
::recursive::__impl::stacker::maybe_grow(::recursive::get_minimum_stack_size(),
::recursive::get_stack_allocation_size(),
move || -> ::std::ops::ControlFlow<V::Break>
{
{
sqlparser::ast::VisitMut::visit(&mut self.uri, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.name, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
4237#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
4238pub struct XmlNamespaceDefinition {
4239 pub uri: Expr,
4241 pub name: Ident,
4243}
4244
4245impl fmt::Display for XmlNamespaceDefinition {
4246 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
4247 f.write_fmt(format_args!("{0} AS {1}", self.uri, self.name))write!(f, "{} AS {}", self.uri, self.name)
4248 }
4249}