1#[cfg(not(feature = "std"))]
19use alloc::string::String;
20
21use core::fmt;
22
23#[cfg(feature = "bigdecimal")]
24use bigdecimal::BigDecimal;
25
26#[cfg(feature = "serde")]
27use serde::{Deserialize, Serialize};
28
29use crate::{ast::Ident, tokenizer::Span};
30#[cfg(feature = "visitor")]
31use sqlparser_derive::{Visit, VisitMut};
32
33#[derive(#[automatically_derived]
impl ::core::fmt::Debug for ValueWithSpan {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "ValueWithSpan",
"value", &self.value, "span", &&self.span)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for ValueWithSpan {
#[inline]
fn clone(&self) -> ValueWithSpan {
ValueWithSpan {
value: ::core::clone::Clone::clone(&self.value),
span: ::core::clone::Clone::clone(&self.span),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::Eq for ValueWithSpan {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Value>;
let _: ::core::cmp::AssertParamIsEq<Span>;
}
}Eq)]
69#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
70#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for ValueWithSpan {
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.span, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for ValueWithSpan {
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.span, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
71pub struct ValueWithSpan {
72 pub value: Value,
74 pub span: Span,
76}
77
78impl PartialEq for ValueWithSpan {
79 fn eq(&self, other: &Self) -> bool {
80 self.value == other.value
81 }
82}
83
84impl Ord for ValueWithSpan {
85 fn cmp(&self, other: &Self) -> core::cmp::Ordering {
86 self.value.cmp(&other.value)
87 }
88}
89
90impl PartialOrd for ValueWithSpan {
91 fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
92 Some(Ord::cmp(self, other))
93 }
94}
95
96impl core::hash::Hash for ValueWithSpan {
97 fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
98 self.value.hash(state);
99 }
100}
101
102impl From<Value> for ValueWithSpan {
103 fn from(value: Value) -> Self {
104 value.with_empty_span()
105 }
106}
107
108impl From<ValueWithSpan> for Value {
109 fn from(value: ValueWithSpan) -> Self {
110 value.value
111 }
112}
113
114#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Value {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Value::Number(__self_0, __self_1) =>
::core::fmt::Formatter::debug_tuple_field2_finish(f, "Number",
__self_0, &__self_1),
Value::SingleQuotedString(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"SingleQuotedString", &__self_0),
Value::DollarQuotedString(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"DollarQuotedString", &__self_0),
Value::TripleSingleQuotedString(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TripleSingleQuotedString", &__self_0),
Value::TripleDoubleQuotedString(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TripleDoubleQuotedString", &__self_0),
Value::EscapedStringLiteral(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"EscapedStringLiteral", &__self_0),
Value::UnicodeStringLiteral(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"UnicodeStringLiteral", &__self_0),
Value::SingleQuotedByteStringLiteral(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"SingleQuotedByteStringLiteral", &__self_0),
Value::DoubleQuotedByteStringLiteral(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"DoubleQuotedByteStringLiteral", &__self_0),
Value::TripleSingleQuotedByteStringLiteral(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TripleSingleQuotedByteStringLiteral", &__self_0),
Value::TripleDoubleQuotedByteStringLiteral(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TripleDoubleQuotedByteStringLiteral", &__self_0),
Value::SingleQuotedRawStringLiteral(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"SingleQuotedRawStringLiteral", &__self_0),
Value::DoubleQuotedRawStringLiteral(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"DoubleQuotedRawStringLiteral", &__self_0),
Value::TripleSingleQuotedRawStringLiteral(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TripleSingleQuotedRawStringLiteral", &__self_0),
Value::TripleDoubleQuotedRawStringLiteral(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"TripleDoubleQuotedRawStringLiteral", &__self_0),
Value::NationalStringLiteral(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"NationalStringLiteral", &__self_0),
Value::QuoteDelimitedStringLiteral(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"QuoteDelimitedStringLiteral", &__self_0),
Value::NationalQuoteDelimitedStringLiteral(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"NationalQuoteDelimitedStringLiteral", &__self_0),
Value::HexStringLiteral(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"HexStringLiteral", &__self_0),
Value::DoubleQuotedString(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"DoubleQuotedString", &__self_0),
Value::Boolean(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Boolean", &__self_0),
Value::Null => ::core::fmt::Formatter::write_str(f, "Null"),
Value::Placeholder(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"Placeholder", &__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Value {
#[inline]
fn clone(&self) -> Value {
match self {
Value::Number(__self_0, __self_1) =>
Value::Number(::core::clone::Clone::clone(__self_0),
::core::clone::Clone::clone(__self_1)),
Value::SingleQuotedString(__self_0) =>
Value::SingleQuotedString(::core::clone::Clone::clone(__self_0)),
Value::DollarQuotedString(__self_0) =>
Value::DollarQuotedString(::core::clone::Clone::clone(__self_0)),
Value::TripleSingleQuotedString(__self_0) =>
Value::TripleSingleQuotedString(::core::clone::Clone::clone(__self_0)),
Value::TripleDoubleQuotedString(__self_0) =>
Value::TripleDoubleQuotedString(::core::clone::Clone::clone(__self_0)),
Value::EscapedStringLiteral(__self_0) =>
Value::EscapedStringLiteral(::core::clone::Clone::clone(__self_0)),
Value::UnicodeStringLiteral(__self_0) =>
Value::UnicodeStringLiteral(::core::clone::Clone::clone(__self_0)),
Value::SingleQuotedByteStringLiteral(__self_0) =>
Value::SingleQuotedByteStringLiteral(::core::clone::Clone::clone(__self_0)),
Value::DoubleQuotedByteStringLiteral(__self_0) =>
Value::DoubleQuotedByteStringLiteral(::core::clone::Clone::clone(__self_0)),
Value::TripleSingleQuotedByteStringLiteral(__self_0) =>
Value::TripleSingleQuotedByteStringLiteral(::core::clone::Clone::clone(__self_0)),
Value::TripleDoubleQuotedByteStringLiteral(__self_0) =>
Value::TripleDoubleQuotedByteStringLiteral(::core::clone::Clone::clone(__self_0)),
Value::SingleQuotedRawStringLiteral(__self_0) =>
Value::SingleQuotedRawStringLiteral(::core::clone::Clone::clone(__self_0)),
Value::DoubleQuotedRawStringLiteral(__self_0) =>
Value::DoubleQuotedRawStringLiteral(::core::clone::Clone::clone(__self_0)),
Value::TripleSingleQuotedRawStringLiteral(__self_0) =>
Value::TripleSingleQuotedRawStringLiteral(::core::clone::Clone::clone(__self_0)),
Value::TripleDoubleQuotedRawStringLiteral(__self_0) =>
Value::TripleDoubleQuotedRawStringLiteral(::core::clone::Clone::clone(__self_0)),
Value::NationalStringLiteral(__self_0) =>
Value::NationalStringLiteral(::core::clone::Clone::clone(__self_0)),
Value::QuoteDelimitedStringLiteral(__self_0) =>
Value::QuoteDelimitedStringLiteral(::core::clone::Clone::clone(__self_0)),
Value::NationalQuoteDelimitedStringLiteral(__self_0) =>
Value::NationalQuoteDelimitedStringLiteral(::core::clone::Clone::clone(__self_0)),
Value::HexStringLiteral(__self_0) =>
Value::HexStringLiteral(::core::clone::Clone::clone(__self_0)),
Value::DoubleQuotedString(__self_0) =>
Value::DoubleQuotedString(::core::clone::Clone::clone(__self_0)),
Value::Boolean(__self_0) =>
Value::Boolean(::core::clone::Clone::clone(__self_0)),
Value::Null => Value::Null,
Value::Placeholder(__self_0) =>
Value::Placeholder(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for Value {
#[inline]
fn eq(&self, other: &Value) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(Value::Number(__self_0, __self_1),
Value::Number(__arg1_0, __arg1_1)) =>
__self_1 == __arg1_1 && __self_0 == __arg1_0,
(Value::SingleQuotedString(__self_0),
Value::SingleQuotedString(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::DollarQuotedString(__self_0),
Value::DollarQuotedString(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::TripleSingleQuotedString(__self_0),
Value::TripleSingleQuotedString(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::TripleDoubleQuotedString(__self_0),
Value::TripleDoubleQuotedString(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::EscapedStringLiteral(__self_0),
Value::EscapedStringLiteral(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::UnicodeStringLiteral(__self_0),
Value::UnicodeStringLiteral(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::SingleQuotedByteStringLiteral(__self_0),
Value::SingleQuotedByteStringLiteral(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::DoubleQuotedByteStringLiteral(__self_0),
Value::DoubleQuotedByteStringLiteral(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::TripleSingleQuotedByteStringLiteral(__self_0),
Value::TripleSingleQuotedByteStringLiteral(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::TripleDoubleQuotedByteStringLiteral(__self_0),
Value::TripleDoubleQuotedByteStringLiteral(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::SingleQuotedRawStringLiteral(__self_0),
Value::SingleQuotedRawStringLiteral(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::DoubleQuotedRawStringLiteral(__self_0),
Value::DoubleQuotedRawStringLiteral(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::TripleSingleQuotedRawStringLiteral(__self_0),
Value::TripleSingleQuotedRawStringLiteral(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::TripleDoubleQuotedRawStringLiteral(__self_0),
Value::TripleDoubleQuotedRawStringLiteral(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::NationalStringLiteral(__self_0),
Value::NationalStringLiteral(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::QuoteDelimitedStringLiteral(__self_0),
Value::QuoteDelimitedStringLiteral(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::NationalQuoteDelimitedStringLiteral(__self_0),
Value::NationalQuoteDelimitedStringLiteral(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::HexStringLiteral(__self_0),
Value::HexStringLiteral(__arg1_0)) => __self_0 == __arg1_0,
(Value::DoubleQuotedString(__self_0),
Value::DoubleQuotedString(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::Boolean(__self_0), Value::Boolean(__arg1_0)) =>
__self_0 == __arg1_0,
(Value::Placeholder(__self_0), Value::Placeholder(__arg1_0))
=> __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for Value {
#[inline]
fn partial_cmp(&self, other: &Value)
-> ::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) {
(Value::Number(__self_0, __self_1),
Value::Number(__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,
},
(Value::SingleQuotedString(__self_0),
Value::SingleQuotedString(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::DollarQuotedString(__self_0),
Value::DollarQuotedString(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::TripleSingleQuotedString(__self_0),
Value::TripleSingleQuotedString(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::TripleDoubleQuotedString(__self_0),
Value::TripleDoubleQuotedString(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::EscapedStringLiteral(__self_0),
Value::EscapedStringLiteral(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::UnicodeStringLiteral(__self_0),
Value::UnicodeStringLiteral(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::SingleQuotedByteStringLiteral(__self_0),
Value::SingleQuotedByteStringLiteral(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::DoubleQuotedByteStringLiteral(__self_0),
Value::DoubleQuotedByteStringLiteral(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::TripleSingleQuotedByteStringLiteral(__self_0),
Value::TripleSingleQuotedByteStringLiteral(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::TripleDoubleQuotedByteStringLiteral(__self_0),
Value::TripleDoubleQuotedByteStringLiteral(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::SingleQuotedRawStringLiteral(__self_0),
Value::SingleQuotedRawStringLiteral(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::DoubleQuotedRawStringLiteral(__self_0),
Value::DoubleQuotedRawStringLiteral(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::TripleSingleQuotedRawStringLiteral(__self_0),
Value::TripleSingleQuotedRawStringLiteral(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::TripleDoubleQuotedRawStringLiteral(__self_0),
Value::TripleDoubleQuotedRawStringLiteral(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::NationalStringLiteral(__self_0),
Value::NationalStringLiteral(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::QuoteDelimitedStringLiteral(__self_0),
Value::QuoteDelimitedStringLiteral(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::NationalQuoteDelimitedStringLiteral(__self_0),
Value::NationalQuoteDelimitedStringLiteral(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::HexStringLiteral(__self_0),
Value::HexStringLiteral(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::DoubleQuotedString(__self_0),
Value::DoubleQuotedString(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::Boolean(__self_0), Value::Boolean(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(Value::Placeholder(__self_0), Value::Placeholder(__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 Value {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<String>;
let _: ::core::cmp::AssertParamIsEq<bool>;
let _: ::core::cmp::AssertParamIsEq<DollarQuotedString>;
let _: ::core::cmp::AssertParamIsEq<QuoteDelimitedString>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for Value {
#[inline]
fn cmp(&self, other: &Value) -> ::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) {
(Value::Number(__self_0, __self_1),
Value::Number(__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,
},
(Value::SingleQuotedString(__self_0),
Value::SingleQuotedString(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::DollarQuotedString(__self_0),
Value::DollarQuotedString(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::TripleSingleQuotedString(__self_0),
Value::TripleSingleQuotedString(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::TripleDoubleQuotedString(__self_0),
Value::TripleDoubleQuotedString(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::EscapedStringLiteral(__self_0),
Value::EscapedStringLiteral(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::UnicodeStringLiteral(__self_0),
Value::UnicodeStringLiteral(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::SingleQuotedByteStringLiteral(__self_0),
Value::SingleQuotedByteStringLiteral(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::DoubleQuotedByteStringLiteral(__self_0),
Value::DoubleQuotedByteStringLiteral(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::TripleSingleQuotedByteStringLiteral(__self_0),
Value::TripleSingleQuotedByteStringLiteral(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::TripleDoubleQuotedByteStringLiteral(__self_0),
Value::TripleDoubleQuotedByteStringLiteral(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::SingleQuotedRawStringLiteral(__self_0),
Value::SingleQuotedRawStringLiteral(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::DoubleQuotedRawStringLiteral(__self_0),
Value::DoubleQuotedRawStringLiteral(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::TripleSingleQuotedRawStringLiteral(__self_0),
Value::TripleSingleQuotedRawStringLiteral(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::TripleDoubleQuotedRawStringLiteral(__self_0),
Value::TripleDoubleQuotedRawStringLiteral(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::NationalStringLiteral(__self_0),
Value::NationalStringLiteral(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::QuoteDelimitedStringLiteral(__self_0),
Value::QuoteDelimitedStringLiteral(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::NationalQuoteDelimitedStringLiteral(__self_0),
Value::NationalQuoteDelimitedStringLiteral(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::HexStringLiteral(__self_0),
Value::HexStringLiteral(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::DoubleQuotedString(__self_0),
Value::DoubleQuotedString(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::Boolean(__self_0), Value::Boolean(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(Value::Placeholder(__self_0), Value::Placeholder(__arg1_0))
=> ::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for Value {
#[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 {
Value::Number(__self_0, __self_1) => {
::core::hash::Hash::hash(__self_0, state);
::core::hash::Hash::hash(__self_1, state)
}
Value::SingleQuotedString(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::DollarQuotedString(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::TripleSingleQuotedString(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::TripleDoubleQuotedString(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::EscapedStringLiteral(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::UnicodeStringLiteral(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::SingleQuotedByteStringLiteral(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::DoubleQuotedByteStringLiteral(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::TripleSingleQuotedByteStringLiteral(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::TripleDoubleQuotedByteStringLiteral(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::SingleQuotedRawStringLiteral(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::DoubleQuotedRawStringLiteral(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::TripleSingleQuotedRawStringLiteral(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::TripleDoubleQuotedRawStringLiteral(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::NationalStringLiteral(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::QuoteDelimitedStringLiteral(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::NationalQuoteDelimitedStringLiteral(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::HexStringLiteral(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::DoubleQuotedString(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::Boolean(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
Value::Placeholder(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
116#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
117#[cfg_attr(
118 feature = "visitor",
119 derive(impl sqlparser::ast::Visit for Value {
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_value(self)?;
match self {
Self::Number(_0, _1) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
sqlparser::ast::Visit::visit(_1, visitor)?;
}
Self::SingleQuotedString(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::DollarQuotedString(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::TripleSingleQuotedString(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::TripleDoubleQuotedString(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::EscapedStringLiteral(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::UnicodeStringLiteral(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::SingleQuotedByteStringLiteral(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::DoubleQuotedByteStringLiteral(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::TripleSingleQuotedByteStringLiteral(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::TripleDoubleQuotedByteStringLiteral(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::SingleQuotedRawStringLiteral(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::DoubleQuotedRawStringLiteral(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::TripleSingleQuotedRawStringLiteral(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::TripleDoubleQuotedRawStringLiteral(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::NationalStringLiteral(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::QuoteDelimitedStringLiteral(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::NationalQuoteDelimitedStringLiteral(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::HexStringLiteral(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::DoubleQuotedString(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Boolean(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Null => {}
Self::Placeholder(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
visitor.post_visit_value(self)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for Value {
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_value(self)?;
match self {
Self::Number(_0, _1) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
sqlparser::ast::VisitMut::visit(_1, visitor)?;
}
Self::SingleQuotedString(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::DollarQuotedString(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::TripleSingleQuotedString(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::TripleDoubleQuotedString(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::EscapedStringLiteral(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::UnicodeStringLiteral(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::SingleQuotedByteStringLiteral(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::DoubleQuotedByteStringLiteral(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::TripleSingleQuotedByteStringLiteral(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::TripleDoubleQuotedByteStringLiteral(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::SingleQuotedRawStringLiteral(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::DoubleQuotedRawStringLiteral(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::TripleSingleQuotedRawStringLiteral(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::TripleDoubleQuotedRawStringLiteral(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::NationalStringLiteral(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::QuoteDelimitedStringLiteral(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::NationalQuoteDelimitedStringLiteral(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::HexStringLiteral(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::DoubleQuotedString(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Boolean(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Null => {}
Self::Placeholder(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
visitor.post_visit_value(self)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut),
120 visit(with = "visit_value")
121)]
122pub enum Value {
123 #[cfg(not(feature = "bigdecimal"))]
125 Number(String, bool),
126 #[cfg(feature = "bigdecimal")]
127 Number(BigDecimal, bool),
132 SingleQuotedString(String),
134 DollarQuotedString(DollarQuotedString),
136 TripleSingleQuotedString(String),
139 TripleDoubleQuotedString(String),
142 EscapedStringLiteral(String),
146 UnicodeStringLiteral(String),
150 SingleQuotedByteStringLiteral(String),
152 DoubleQuotedByteStringLiteral(String),
154 TripleSingleQuotedByteStringLiteral(String),
157 TripleDoubleQuotedByteStringLiteral(String),
160 SingleQuotedRawStringLiteral(String),
163 DoubleQuotedRawStringLiteral(String),
166 TripleSingleQuotedRawStringLiteral(String),
169 TripleDoubleQuotedRawStringLiteral(String),
172 NationalStringLiteral(String),
174 QuoteDelimitedStringLiteral(QuoteDelimitedString),
177 NationalQuoteDelimitedStringLiteral(QuoteDelimitedString),
180 HexStringLiteral(String),
182
183 DoubleQuotedString(String),
185 Boolean(bool),
187 Null,
189 Placeholder(String),
191}
192
193impl ValueWithSpan {
194 pub fn into_string(self) -> Option<String> {
196 self.value.into_string()
197 }
198}
199
200impl Value {
201 pub fn into_string(self) -> Option<String> {
203 match self {
204 Value::SingleQuotedString(s)
205 | Value::DoubleQuotedString(s)
206 | Value::TripleSingleQuotedString(s)
207 | Value::TripleDoubleQuotedString(s)
208 | Value::SingleQuotedByteStringLiteral(s)
209 | Value::DoubleQuotedByteStringLiteral(s)
210 | Value::TripleSingleQuotedByteStringLiteral(s)
211 | Value::TripleDoubleQuotedByteStringLiteral(s)
212 | Value::SingleQuotedRawStringLiteral(s)
213 | Value::DoubleQuotedRawStringLiteral(s)
214 | Value::TripleSingleQuotedRawStringLiteral(s)
215 | Value::TripleDoubleQuotedRawStringLiteral(s)
216 | Value::EscapedStringLiteral(s)
217 | Value::UnicodeStringLiteral(s)
218 | Value::NationalStringLiteral(s)
219 | Value::HexStringLiteral(s) => Some(s),
220 Value::DollarQuotedString(s) => Some(s.value),
221 Value::QuoteDelimitedStringLiteral(s) => Some(s.value),
222 Value::NationalQuoteDelimitedStringLiteral(s) => Some(s.value),
223 _ => None,
224 }
225 }
226
227 pub fn with_span(self, span: Span) -> ValueWithSpan {
229 ValueWithSpan { value: self, span }
230 }
231
232 pub fn with_empty_span(self) -> ValueWithSpan {
234 self.with_span(Span::empty())
235 }
236}
237
238impl fmt::Display for ValueWithSpan {
239 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
240 f.write_fmt(format_args!("{0}", self.value))write!(f, "{}", self.value)
241 }
242}
243
244impl fmt::Display for Value {
245 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
246 match self {
247 Value::Number(v, l) => f.write_fmt(format_args!("{0}{1}", v, if *l { "L" } else { "" }))write!(f, "{}{long}", v, long = if *l { "L" } else { "" }),
248 Value::DoubleQuotedString(v) => f.write_fmt(format_args!("\"{0}\"", escape_double_quote_string(v)))write!(f, "\"{}\"", escape_double_quote_string(v)),
249 Value::SingleQuotedString(v) => f.write_fmt(format_args!("\'{0}\'", escape_single_quote_string(v)))write!(f, "'{}'", escape_single_quote_string(v)),
250 Value::TripleSingleQuotedString(v) => {
251 f.write_fmt(format_args!("\'\'\'{0}\'\'\'", v))write!(f, "'''{v}'''")
252 }
253 Value::TripleDoubleQuotedString(v) => {
254 f.write_fmt(format_args!("\"\"\"{0}\"\"\"", v))write!(f, r#""""{v}""""#)
255 }
256 Value::DollarQuotedString(v) => f.write_fmt(format_args!("{0}", v))write!(f, "{v}"),
257 Value::EscapedStringLiteral(v) => f.write_fmt(format_args!("E\'{0}\'", escape_escaped_string(v)))write!(f, "E'{}'", escape_escaped_string(v)),
258 Value::UnicodeStringLiteral(v) => f.write_fmt(format_args!("U&\'{0}\'", escape_unicode_string(v)))write!(f, "U&'{}'", escape_unicode_string(v)),
259 Value::NationalStringLiteral(v) => f.write_fmt(format_args!("N\'{0}\'", v))write!(f, "N'{v}'"),
260 Value::QuoteDelimitedStringLiteral(v) => v.fmt(f),
261 Value::NationalQuoteDelimitedStringLiteral(v) => f.write_fmt(format_args!("N{0}", v))write!(f, "N{v}"),
262 Value::HexStringLiteral(v) => f.write_fmt(format_args!("X\'{0}\'", v))write!(f, "X'{v}'"),
263 Value::Boolean(v) => f.write_fmt(format_args!("{0}", v))write!(f, "{v}"),
264 Value::SingleQuotedByteStringLiteral(v) => f.write_fmt(format_args!("B\'{0}\'", v))write!(f, "B'{v}'"),
265 Value::DoubleQuotedByteStringLiteral(v) => f.write_fmt(format_args!("B\"{0}\"", v))write!(f, "B\"{v}\""),
266 Value::TripleSingleQuotedByteStringLiteral(v) => f.write_fmt(format_args!("B\'\'\'{0}\'\'\'", v))write!(f, "B'''{v}'''"),
267 Value::TripleDoubleQuotedByteStringLiteral(v) => f.write_fmt(format_args!("B\"\"\"{0}\"\"\"", v))write!(f, r#"B"""{v}""""#),
268 Value::SingleQuotedRawStringLiteral(v) => f.write_fmt(format_args!("R\'{0}\'", v))write!(f, "R'{v}'"),
269 Value::DoubleQuotedRawStringLiteral(v) => f.write_fmt(format_args!("R\"{0}\"", v))write!(f, "R\"{v}\""),
270 Value::TripleSingleQuotedRawStringLiteral(v) => f.write_fmt(format_args!("R\'\'\'{0}\'\'\'", v))write!(f, "R'''{v}'''"),
271 Value::TripleDoubleQuotedRawStringLiteral(v) => f.write_fmt(format_args!("R\"\"\"{0}\"\"\"", v))write!(f, r#"R"""{v}""""#),
272 Value::Null => f.write_fmt(format_args!("NULL"))write!(f, "NULL"),
273 Value::Placeholder(v) => f.write_fmt(format_args!("{0}", v))write!(f, "{v}"),
274 }
275 }
276}
277
278#[derive(#[automatically_derived]
impl ::core::fmt::Debug for DollarQuotedString {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"DollarQuotedString", "value", &self.value, "tag", &&self.tag)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for DollarQuotedString {
#[inline]
fn clone(&self) -> DollarQuotedString {
DollarQuotedString {
value: ::core::clone::Clone::clone(&self.value),
tag: ::core::clone::Clone::clone(&self.tag),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for DollarQuotedString {
#[inline]
fn eq(&self, other: &DollarQuotedString) -> bool {
self.value == other.value && self.tag == other.tag
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for DollarQuotedString {
#[inline]
fn partial_cmp(&self, other: &DollarQuotedString)
-> ::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.tag, &other.tag),
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for DollarQuotedString {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<String>;
let _: ::core::cmp::AssertParamIsEq<Option<String>>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for DollarQuotedString {
#[inline]
fn cmp(&self, other: &DollarQuotedString) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.value, &other.value) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.tag, &other.tag),
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for DollarQuotedString {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.value, state);
::core::hash::Hash::hash(&self.tag, state)
}
}Hash)]
280#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
281#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for DollarQuotedString {
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.tag, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for DollarQuotedString {
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.tag, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
282pub struct DollarQuotedString {
283 pub value: String,
285 pub tag: Option<String>,
287}
288
289impl fmt::Display for DollarQuotedString {
290 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
291 match &self.tag {
292 Some(tag) => {
293 f.write_fmt(format_args!("${0}${1}${2}$", tag, self.value, tag))write!(f, "${}${}${}$", tag, self.value, tag)
294 }
295 None => {
296 f.write_fmt(format_args!("$${0}$$", self.value))write!(f, "$${}$$", self.value)
297 }
298 }
299 }
300}
301
302#[derive(#[automatically_derived]
impl ::core::fmt::Debug for QuoteDelimitedString {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"QuoteDelimitedString", "start_quote", &self.start_quote, "value",
&self.value, "end_quote", &&self.end_quote)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for QuoteDelimitedString {
#[inline]
fn clone(&self) -> QuoteDelimitedString {
QuoteDelimitedString {
start_quote: ::core::clone::Clone::clone(&self.start_quote),
value: ::core::clone::Clone::clone(&self.value),
end_quote: ::core::clone::Clone::clone(&self.end_quote),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for QuoteDelimitedString {
#[inline]
fn eq(&self, other: &QuoteDelimitedString) -> bool {
self.start_quote == other.start_quote &&
self.end_quote == other.end_quote && self.value == other.value
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::PartialOrd for QuoteDelimitedString {
#[inline]
fn partial_cmp(&self, other: &QuoteDelimitedString)
-> ::core::option::Option<::core::cmp::Ordering> {
match ::core::cmp::PartialOrd::partial_cmp(&self.start_quote,
&other.start_quote) {
::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.end_quote,
&other.end_quote),
cmp => cmp,
},
cmp => cmp,
}
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Eq for QuoteDelimitedString {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<char>;
let _: ::core::cmp::AssertParamIsEq<String>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for QuoteDelimitedString {
#[inline]
fn cmp(&self, other: &QuoteDelimitedString) -> ::core::cmp::Ordering {
match ::core::cmp::Ord::cmp(&self.start_quote, &other.start_quote) {
::core::cmp::Ordering::Equal =>
match ::core::cmp::Ord::cmp(&self.value, &other.value) {
::core::cmp::Ordering::Equal =>
::core::cmp::Ord::cmp(&self.end_quote, &other.end_quote),
cmp => cmp,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for QuoteDelimitedString {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.start_quote, state);
::core::hash::Hash::hash(&self.value, state);
::core::hash::Hash::hash(&self.end_quote, state)
}
}Hash)]
307#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
308#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for QuoteDelimitedString {
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.start_quote, visitor)?;
sqlparser::ast::Visit::visit(&self.value, visitor)?;
sqlparser::ast::Visit::visit(&self.end_quote, visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for QuoteDelimitedString {
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.start_quote,
visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.value, visitor)?;
sqlparser::ast::VisitMut::visit(&mut self.end_quote,
visitor)?;
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
309pub struct QuoteDelimitedString {
310 pub start_quote: char,
312 pub value: String,
314 pub end_quote: char,
316}
317
318impl fmt::Display for QuoteDelimitedString {
319 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
320 f.write_fmt(format_args!("Q\'{0}{1}{2}\'", self.start_quote, self.value,
self.end_quote))write!(f, "Q'{}{}{}'", self.start_quote, self.value, self.end_quote)
321 }
322}
323
324#[derive(#[automatically_derived]
impl ::core::fmt::Debug for DateTimeField {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
DateTimeField::Year =>
::core::fmt::Formatter::write_str(f, "Year"),
DateTimeField::Years =>
::core::fmt::Formatter::write_str(f, "Years"),
DateTimeField::Month =>
::core::fmt::Formatter::write_str(f, "Month"),
DateTimeField::Months =>
::core::fmt::Formatter::write_str(f, "Months"),
DateTimeField::Week(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Week",
&__self_0),
DateTimeField::Weeks =>
::core::fmt::Formatter::write_str(f, "Weeks"),
DateTimeField::Day => ::core::fmt::Formatter::write_str(f, "Day"),
DateTimeField::DayOfWeek =>
::core::fmt::Formatter::write_str(f, "DayOfWeek"),
DateTimeField::DayOfYear =>
::core::fmt::Formatter::write_str(f, "DayOfYear"),
DateTimeField::Days =>
::core::fmt::Formatter::write_str(f, "Days"),
DateTimeField::Date =>
::core::fmt::Formatter::write_str(f, "Date"),
DateTimeField::Datetime =>
::core::fmt::Formatter::write_str(f, "Datetime"),
DateTimeField::Hour =>
::core::fmt::Formatter::write_str(f, "Hour"),
DateTimeField::Hours =>
::core::fmt::Formatter::write_str(f, "Hours"),
DateTimeField::Minute =>
::core::fmt::Formatter::write_str(f, "Minute"),
DateTimeField::Minutes =>
::core::fmt::Formatter::write_str(f, "Minutes"),
DateTimeField::Second =>
::core::fmt::Formatter::write_str(f, "Second"),
DateTimeField::Seconds =>
::core::fmt::Formatter::write_str(f, "Seconds"),
DateTimeField::Century =>
::core::fmt::Formatter::write_str(f, "Century"),
DateTimeField::Decade =>
::core::fmt::Formatter::write_str(f, "Decade"),
DateTimeField::Dow => ::core::fmt::Formatter::write_str(f, "Dow"),
DateTimeField::Doy => ::core::fmt::Formatter::write_str(f, "Doy"),
DateTimeField::Epoch =>
::core::fmt::Formatter::write_str(f, "Epoch"),
DateTimeField::Isodow =>
::core::fmt::Formatter::write_str(f, "Isodow"),
DateTimeField::Isoyear =>
::core::fmt::Formatter::write_str(f, "Isoyear"),
DateTimeField::IsoWeek =>
::core::fmt::Formatter::write_str(f, "IsoWeek"),
DateTimeField::Julian =>
::core::fmt::Formatter::write_str(f, "Julian"),
DateTimeField::Microsecond =>
::core::fmt::Formatter::write_str(f, "Microsecond"),
DateTimeField::Microseconds =>
::core::fmt::Formatter::write_str(f, "Microseconds"),
DateTimeField::Millenium =>
::core::fmt::Formatter::write_str(f, "Millenium"),
DateTimeField::Millennium =>
::core::fmt::Formatter::write_str(f, "Millennium"),
DateTimeField::Millisecond =>
::core::fmt::Formatter::write_str(f, "Millisecond"),
DateTimeField::Milliseconds =>
::core::fmt::Formatter::write_str(f, "Milliseconds"),
DateTimeField::Nanosecond =>
::core::fmt::Formatter::write_str(f, "Nanosecond"),
DateTimeField::Nanoseconds =>
::core::fmt::Formatter::write_str(f, "Nanoseconds"),
DateTimeField::Quarter =>
::core::fmt::Formatter::write_str(f, "Quarter"),
DateTimeField::Time =>
::core::fmt::Formatter::write_str(f, "Time"),
DateTimeField::Timezone =>
::core::fmt::Formatter::write_str(f, "Timezone"),
DateTimeField::TimezoneAbbr =>
::core::fmt::Formatter::write_str(f, "TimezoneAbbr"),
DateTimeField::TimezoneHour =>
::core::fmt::Formatter::write_str(f, "TimezoneHour"),
DateTimeField::TimezoneMinute =>
::core::fmt::Formatter::write_str(f, "TimezoneMinute"),
DateTimeField::TimezoneRegion =>
::core::fmt::Formatter::write_str(f, "TimezoneRegion"),
DateTimeField::NoDateTime =>
::core::fmt::Formatter::write_str(f, "NoDateTime"),
DateTimeField::Custom(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Custom",
&__self_0),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for DateTimeField {
#[inline]
fn clone(&self) -> DateTimeField {
match self {
DateTimeField::Year => DateTimeField::Year,
DateTimeField::Years => DateTimeField::Years,
DateTimeField::Month => DateTimeField::Month,
DateTimeField::Months => DateTimeField::Months,
DateTimeField::Week(__self_0) =>
DateTimeField::Week(::core::clone::Clone::clone(__self_0)),
DateTimeField::Weeks => DateTimeField::Weeks,
DateTimeField::Day => DateTimeField::Day,
DateTimeField::DayOfWeek => DateTimeField::DayOfWeek,
DateTimeField::DayOfYear => DateTimeField::DayOfYear,
DateTimeField::Days => DateTimeField::Days,
DateTimeField::Date => DateTimeField::Date,
DateTimeField::Datetime => DateTimeField::Datetime,
DateTimeField::Hour => DateTimeField::Hour,
DateTimeField::Hours => DateTimeField::Hours,
DateTimeField::Minute => DateTimeField::Minute,
DateTimeField::Minutes => DateTimeField::Minutes,
DateTimeField::Second => DateTimeField::Second,
DateTimeField::Seconds => DateTimeField::Seconds,
DateTimeField::Century => DateTimeField::Century,
DateTimeField::Decade => DateTimeField::Decade,
DateTimeField::Dow => DateTimeField::Dow,
DateTimeField::Doy => DateTimeField::Doy,
DateTimeField::Epoch => DateTimeField::Epoch,
DateTimeField::Isodow => DateTimeField::Isodow,
DateTimeField::Isoyear => DateTimeField::Isoyear,
DateTimeField::IsoWeek => DateTimeField::IsoWeek,
DateTimeField::Julian => DateTimeField::Julian,
DateTimeField::Microsecond => DateTimeField::Microsecond,
DateTimeField::Microseconds => DateTimeField::Microseconds,
DateTimeField::Millenium => DateTimeField::Millenium,
DateTimeField::Millennium => DateTimeField::Millennium,
DateTimeField::Millisecond => DateTimeField::Millisecond,
DateTimeField::Milliseconds => DateTimeField::Milliseconds,
DateTimeField::Nanosecond => DateTimeField::Nanosecond,
DateTimeField::Nanoseconds => DateTimeField::Nanoseconds,
DateTimeField::Quarter => DateTimeField::Quarter,
DateTimeField::Time => DateTimeField::Time,
DateTimeField::Timezone => DateTimeField::Timezone,
DateTimeField::TimezoneAbbr => DateTimeField::TimezoneAbbr,
DateTimeField::TimezoneHour => DateTimeField::TimezoneHour,
DateTimeField::TimezoneMinute => DateTimeField::TimezoneMinute,
DateTimeField::TimezoneRegion => DateTimeField::TimezoneRegion,
DateTimeField::NoDateTime => DateTimeField::NoDateTime,
DateTimeField::Custom(__self_0) =>
DateTimeField::Custom(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for DateTimeField {
#[inline]
fn eq(&self, other: &DateTimeField) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(DateTimeField::Week(__self_0), DateTimeField::Week(__arg1_0))
=> __self_0 == __arg1_0,
(DateTimeField::Custom(__self_0),
DateTimeField::Custom(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for DateTimeField {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Option<Ident>>;
let _: ::core::cmp::AssertParamIsEq<Ident>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for DateTimeField {
#[inline]
fn cmp(&self, other: &DateTimeField) -> ::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) {
(DateTimeField::Week(__self_0),
DateTimeField::Week(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
(DateTimeField::Custom(__self_0),
DateTimeField::Custom(__arg1_0)) =>
::core::cmp::Ord::cmp(__self_0, __arg1_0),
_ => ::core::cmp::Ordering::Equal,
},
cmp => cmp,
}
}
}Ord, #[automatically_derived]
impl ::core::cmp::PartialOrd for DateTimeField {
#[inline]
fn partial_cmp(&self, other: &DateTimeField)
-> ::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) {
(DateTimeField::Week(__self_0), DateTimeField::Week(__arg1_0)) =>
::core::cmp::PartialOrd::partial_cmp(__self_0, __arg1_0),
(DateTimeField::Custom(__self_0), DateTimeField::Custom(__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::hash::Hash for DateTimeField {
#[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 {
DateTimeField::Week(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
DateTimeField::Custom(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash)]
330#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
331#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for DateTimeField {
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::Year => {}
Self::Years => {}
Self::Month => {}
Self::Months => {}
Self::Week(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
Self::Weeks => {}
Self::Day => {}
Self::DayOfWeek => {}
Self::DayOfYear => {}
Self::Days => {}
Self::Date => {}
Self::Datetime => {}
Self::Hour => {}
Self::Hours => {}
Self::Minute => {}
Self::Minutes => {}
Self::Second => {}
Self::Seconds => {}
Self::Century => {}
Self::Decade => {}
Self::Dow => {}
Self::Doy => {}
Self::Epoch => {}
Self::Isodow => {}
Self::Isoyear => {}
Self::IsoWeek => {}
Self::Julian => {}
Self::Microsecond => {}
Self::Microseconds => {}
Self::Millenium => {}
Self::Millennium => {}
Self::Millisecond => {}
Self::Milliseconds => {}
Self::Nanosecond => {}
Self::Nanoseconds => {}
Self::Quarter => {}
Self::Time => {}
Self::Timezone => {}
Self::TimezoneAbbr => {}
Self::TimezoneHour => {}
Self::TimezoneMinute => {}
Self::TimezoneRegion => {}
Self::NoDateTime => {}
Self::Custom(_0) => {
sqlparser::ast::Visit::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for DateTimeField {
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::Year => {}
Self::Years => {}
Self::Month => {}
Self::Months => {}
Self::Week(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
Self::Weeks => {}
Self::Day => {}
Self::DayOfWeek => {}
Self::DayOfYear => {}
Self::Days => {}
Self::Date => {}
Self::Datetime => {}
Self::Hour => {}
Self::Hours => {}
Self::Minute => {}
Self::Minutes => {}
Self::Second => {}
Self::Seconds => {}
Self::Century => {}
Self::Decade => {}
Self::Dow => {}
Self::Doy => {}
Self::Epoch => {}
Self::Isodow => {}
Self::Isoyear => {}
Self::IsoWeek => {}
Self::Julian => {}
Self::Microsecond => {}
Self::Microseconds => {}
Self::Millenium => {}
Self::Millennium => {}
Self::Millisecond => {}
Self::Milliseconds => {}
Self::Nanosecond => {}
Self::Nanoseconds => {}
Self::Quarter => {}
Self::Time => {}
Self::Timezone => {}
Self::TimezoneAbbr => {}
Self::TimezoneHour => {}
Self::TimezoneMinute => {}
Self::TimezoneRegion => {}
Self::NoDateTime => {}
Self::Custom(_0) => {
sqlparser::ast::VisitMut::visit(_0, visitor)?;
}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
332pub enum DateTimeField {
333 Year,
335 Years,
337 Month,
339 Months,
341 Week(Option<Ident>),
345 Weeks,
347 Day,
349 DayOfWeek,
351 DayOfYear,
353 Days,
355 Date,
357 Datetime,
359 Hour,
361 Hours,
363 Minute,
365 Minutes,
367 Second,
369 Seconds,
371 Century,
373 Decade,
375 Dow,
377 Doy,
379 Epoch,
381 Isodow,
383 Isoyear,
385 IsoWeek,
387 Julian,
389 Microsecond,
391 Microseconds,
393 Millenium,
395 Millennium,
397 Millisecond,
399 Milliseconds,
401 Nanosecond,
403 Nanoseconds,
405 Quarter,
407 Time,
409 Timezone,
411 TimezoneAbbr,
413 TimezoneHour,
415 TimezoneMinute,
417 TimezoneRegion,
419 NoDateTime,
421 Custom(Ident),
428}
429
430impl fmt::Display for DateTimeField {
431 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
432 match self {
433 DateTimeField::Year => f.write_fmt(format_args!("YEAR"))write!(f, "YEAR"),
434 DateTimeField::Years => f.write_fmt(format_args!("YEARS"))write!(f, "YEARS"),
435 DateTimeField::Month => f.write_fmt(format_args!("MONTH"))write!(f, "MONTH"),
436 DateTimeField::Months => f.write_fmt(format_args!("MONTHS"))write!(f, "MONTHS"),
437 DateTimeField::Week(week_day) => {
438 f.write_fmt(format_args!("WEEK"))write!(f, "WEEK")?;
439 if let Some(week_day) = week_day {
440 f.write_fmt(format_args!("({0})", week_day))write!(f, "({week_day})")?
441 }
442 Ok(())
443 }
444 DateTimeField::Weeks => f.write_fmt(format_args!("WEEKS"))write!(f, "WEEKS"),
445 DateTimeField::Day => f.write_fmt(format_args!("DAY"))write!(f, "DAY"),
446 DateTimeField::DayOfWeek => f.write_fmt(format_args!("DAYOFWEEK"))write!(f, "DAYOFWEEK"),
447 DateTimeField::DayOfYear => f.write_fmt(format_args!("DAYOFYEAR"))write!(f, "DAYOFYEAR"),
448 DateTimeField::Days => f.write_fmt(format_args!("DAYS"))write!(f, "DAYS"),
449 DateTimeField::Date => f.write_fmt(format_args!("DATE"))write!(f, "DATE"),
450 DateTimeField::Datetime => f.write_fmt(format_args!("DATETIME"))write!(f, "DATETIME"),
451 DateTimeField::Hour => f.write_fmt(format_args!("HOUR"))write!(f, "HOUR"),
452 DateTimeField::Hours => f.write_fmt(format_args!("HOURS"))write!(f, "HOURS"),
453 DateTimeField::Minute => f.write_fmt(format_args!("MINUTE"))write!(f, "MINUTE"),
454 DateTimeField::Minutes => f.write_fmt(format_args!("MINUTES"))write!(f, "MINUTES"),
455 DateTimeField::Second => f.write_fmt(format_args!("SECOND"))write!(f, "SECOND"),
456 DateTimeField::Seconds => f.write_fmt(format_args!("SECONDS"))write!(f, "SECONDS"),
457 DateTimeField::Century => f.write_fmt(format_args!("CENTURY"))write!(f, "CENTURY"),
458 DateTimeField::Decade => f.write_fmt(format_args!("DECADE"))write!(f, "DECADE"),
459 DateTimeField::Dow => f.write_fmt(format_args!("DOW"))write!(f, "DOW"),
460 DateTimeField::Doy => f.write_fmt(format_args!("DOY"))write!(f, "DOY"),
461 DateTimeField::Epoch => f.write_fmt(format_args!("EPOCH"))write!(f, "EPOCH"),
462 DateTimeField::Isodow => f.write_fmt(format_args!("ISODOW"))write!(f, "ISODOW"),
463 DateTimeField::Isoyear => f.write_fmt(format_args!("ISOYEAR"))write!(f, "ISOYEAR"),
464 DateTimeField::IsoWeek => f.write_fmt(format_args!("ISOWEEK"))write!(f, "ISOWEEK"),
465 DateTimeField::Julian => f.write_fmt(format_args!("JULIAN"))write!(f, "JULIAN"),
466 DateTimeField::Microsecond => f.write_fmt(format_args!("MICROSECOND"))write!(f, "MICROSECOND"),
467 DateTimeField::Microseconds => f.write_fmt(format_args!("MICROSECONDS"))write!(f, "MICROSECONDS"),
468 DateTimeField::Millenium => f.write_fmt(format_args!("MILLENIUM"))write!(f, "MILLENIUM"),
469 DateTimeField::Millennium => f.write_fmt(format_args!("MILLENNIUM"))write!(f, "MILLENNIUM"),
470 DateTimeField::Millisecond => f.write_fmt(format_args!("MILLISECOND"))write!(f, "MILLISECOND"),
471 DateTimeField::Milliseconds => f.write_fmt(format_args!("MILLISECONDS"))write!(f, "MILLISECONDS"),
472 DateTimeField::Nanosecond => f.write_fmt(format_args!("NANOSECOND"))write!(f, "NANOSECOND"),
473 DateTimeField::Nanoseconds => f.write_fmt(format_args!("NANOSECONDS"))write!(f, "NANOSECONDS"),
474 DateTimeField::Quarter => f.write_fmt(format_args!("QUARTER"))write!(f, "QUARTER"),
475 DateTimeField::Time => f.write_fmt(format_args!("TIME"))write!(f, "TIME"),
476 DateTimeField::Timezone => f.write_fmt(format_args!("TIMEZONE"))write!(f, "TIMEZONE"),
477 DateTimeField::TimezoneAbbr => f.write_fmt(format_args!("TIMEZONE_ABBR"))write!(f, "TIMEZONE_ABBR"),
478 DateTimeField::TimezoneHour => f.write_fmt(format_args!("TIMEZONE_HOUR"))write!(f, "TIMEZONE_HOUR"),
479 DateTimeField::TimezoneMinute => f.write_fmt(format_args!("TIMEZONE_MINUTE"))write!(f, "TIMEZONE_MINUTE"),
480 DateTimeField::TimezoneRegion => f.write_fmt(format_args!("TIMEZONE_REGION"))write!(f, "TIMEZONE_REGION"),
481 DateTimeField::NoDateTime => f.write_fmt(format_args!("NODATETIME"))write!(f, "NODATETIME"),
482 DateTimeField::Custom(custom) => f.write_fmt(format_args!("{0}", custom))write!(f, "{custom}"),
483 }
484 }
485}
486
487#[derive(#[automatically_derived]
impl ::core::fmt::Debug for NormalizationForm {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
NormalizationForm::NFC => "NFC",
NormalizationForm::NFD => "NFD",
NormalizationForm::NFKC => "NFKC",
NormalizationForm::NFKD => "NFKD",
})
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for NormalizationForm {
#[inline]
fn clone(&self) -> NormalizationForm { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for NormalizationForm { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for NormalizationForm {
#[inline]
fn eq(&self, other: &NormalizationForm) -> 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::Eq for NormalizationForm {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::Ord for NormalizationForm {
#[inline]
fn cmp(&self, other: &NormalizationForm) -> ::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::cmp::PartialOrd for NormalizationForm {
#[inline]
fn partial_cmp(&self, other: &NormalizationForm)
-> ::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::hash::Hash for NormalizationForm {
#[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)]
488#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
489#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for NormalizationForm {
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::NFC => {}
Self::NFD => {}
Self::NFKC => {}
Self::NFKD => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for NormalizationForm {
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::NFC => {}
Self::NFD => {}
Self::NFKC => {}
Self::NFKD => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
490pub enum NormalizationForm {
495 NFC,
497 NFD,
499 NFKC,
501 NFKD,
503}
504
505impl fmt::Display for NormalizationForm {
506 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
507 match self {
508 NormalizationForm::NFC => f.write_fmt(format_args!("NFC"))write!(f, "NFC"),
509 NormalizationForm::NFD => f.write_fmt(format_args!("NFD"))write!(f, "NFD"),
510 NormalizationForm::NFKC => f.write_fmt(format_args!("NFKC"))write!(f, "NFKC"),
511 NormalizationForm::NFKD => f.write_fmt(format_args!("NFKD"))write!(f, "NFKD"),
512 }
513 }
514}
515
516pub struct EscapeQuotedString<'a> {
517 string: &'a str,
518 quote: char,
519}
520
521impl fmt::Display for EscapeQuotedString<'_> {
522 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
523 let quote = self.quote;
542 let mut previous_char = char::default();
543 let mut start_idx = 0;
544 let mut peekable_chars = self.string.char_indices().peekable();
545 while let Some(&(idx, ch)) = peekable_chars.peek() {
546 match ch {
547 char if char == quote => {
548 if previous_char == '\\' {
549 peekable_chars.next();
551 continue;
552 }
553 peekable_chars.next();
554 match peekable_chars.peek() {
555 Some((_, c)) if *c == quote => {
556 peekable_chars.next();
558 }
559 _ => {
560 f.write_str(&self.string[start_idx..=idx])?;
564 start_idx = idx;
565 }
566 }
567 }
568 _ => {
569 peekable_chars.next();
570 }
571 }
572 previous_char = ch;
573 }
574 f.write_str(&self.string[start_idx..])?;
575 Ok(())
576 }
577}
578
579pub fn escape_quoted_string(string: &str, quote: char) -> EscapeQuotedString<'_> {
582 EscapeQuotedString { string, quote }
583}
584
585pub fn escape_single_quote_string(s: &str) -> EscapeQuotedString<'_> {
587 escape_quoted_string(s, '\'')
588}
589
590pub fn escape_double_quote_string(s: &str) -> EscapeQuotedString<'_> {
592 escape_quoted_string(s, '\"')
593}
594
595pub struct EscapeEscapedStringLiteral<'a>(&'a str);
596
597impl fmt::Display for EscapeEscapedStringLiteral<'_> {
598 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
599 for c in self.0.chars() {
600 match c {
601 '\'' => {
602 f.write_fmt(format_args!("\\\'"))write!(f, r#"\'"#)?;
603 }
604 '\\' => {
605 f.write_fmt(format_args!("\\\\"))write!(f, r#"\\"#)?;
606 }
607 '\n' => {
608 f.write_fmt(format_args!("\\n"))write!(f, r#"\n"#)?;
609 }
610 '\t' => {
611 f.write_fmt(format_args!("\\t"))write!(f, r#"\t"#)?;
612 }
613 '\r' => {
614 f.write_fmt(format_args!("\\r"))write!(f, r#"\r"#)?;
615 }
616 _ => {
617 f.write_fmt(format_args!("{0}", c))write!(f, "{c}")?;
618 }
619 }
620 }
621 Ok(())
622 }
623}
624
625pub fn escape_escaped_string(s: &str) -> EscapeEscapedStringLiteral<'_> {
628 EscapeEscapedStringLiteral(s)
629}
630
631pub struct EscapeUnicodeStringLiteral<'a>(&'a str);
632
633impl fmt::Display for EscapeUnicodeStringLiteral<'_> {
634 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
635 for c in self.0.chars() {
636 match c {
637 '\'' => {
638 f.write_fmt(format_args!("\'\'"))write!(f, "''")?;
639 }
640 '\\' => {
641 f.write_fmt(format_args!("\\\\"))write!(f, r#"\\"#)?;
642 }
643 x if x.is_ascii() => {
644 f.write_fmt(format_args!("{0}", c))write!(f, "{c}")?;
645 }
646 _ => {
647 let codepoint = c as u32;
648 if codepoint <= 0xFFFF {
651 f.write_fmt(format_args!("\\{0:04X}", codepoint))write!(f, "\\{codepoint:04X}")?;
652 } else {
653 f.write_fmt(format_args!("\\+{0:06X}", codepoint))write!(f, "\\+{codepoint:06X}")?;
654 }
655 }
656 }
657 }
658 Ok(())
659 }
660}
661
662pub fn escape_unicode_string(s: &str) -> EscapeUnicodeStringLiteral<'_> {
665 EscapeUnicodeStringLiteral(s)
666}
667
668#[derive(#[automatically_derived]
impl ::core::fmt::Debug for TrimWhereField {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
TrimWhereField::Both => "Both",
TrimWhereField::Leading => "Leading",
TrimWhereField::Trailing => "Trailing",
})
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for TrimWhereField {
#[inline]
fn clone(&self) -> TrimWhereField { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for TrimWhereField { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for TrimWhereField {
#[inline]
fn eq(&self, other: &TrimWhereField) -> 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::Eq for TrimWhereField {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for TrimWhereField {
#[inline]
fn partial_cmp(&self, other: &TrimWhereField)
-> ::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::Ord for TrimWhereField {
#[inline]
fn cmp(&self, other: &TrimWhereField) -> ::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 TrimWhereField {
#[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)]
672#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
673#[cfg_attr(feature = "visitor", derive(impl sqlparser::ast::Visit for TrimWhereField {
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::Both => {}
Self::Leading => {}
Self::Trailing => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}Visit, impl sqlparser::ast::VisitMut for TrimWhereField {
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::Both => {}
Self::Leading => {}
Self::Trailing => {}
}
::std::ops::ControlFlow::Continue(())
}
})
}
}VisitMut))]
674pub enum TrimWhereField {
675 Both,
677 Leading,
679 Trailing,
681}
682
683impl fmt::Display for TrimWhereField {
684 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
685 use TrimWhereField::*;
686 f.write_str(match self {
687 Both => "BOTH",
688 Leading => "LEADING",
689 Trailing => "TRAILING",
690 })
691 }
692}