pub struct DuckDBDialect { /* private fields */ }
Implementations§
Source§impl DuckDBDialect
impl DuckDBDialect
pub fn new() -> DuckDBDialect
Trait Implementations§
Source§impl Default for DuckDBDialect
impl Default for DuckDBDialect
Source§fn default() -> DuckDBDialect
fn default() -> DuckDBDialect
Returns the “default value” for a type. Read more
Source§impl Dialect for DuckDBDialect
impl Dialect for DuckDBDialect
Source§fn identifier_quote_style(&self, _: &str) -> Option<char>
fn identifier_quote_style(&self, _: &str) -> Option<char>
Return the character used to quote identifiers.
Source§fn character_length_style(&self) -> CharacterLengthStyle
fn character_length_style(&self) -> CharacterLengthStyle
The character length extraction style to use:
CharacterLengthStyle
Source§fn division_operator(&self) -> BinaryOperator
fn division_operator(&self) -> BinaryOperator
The division operator for the dialect
Most dialect uses
BinaryOperator::Divide
(/)
But DuckDB dialect uses BinaryOperator::DuckIntegerDivide
(//)Source§fn with_custom_scalar_overrides(
self,
handlers: Vec<(&str, Box<dyn Fn(&Unparser<'_>, &[Expr]) -> Result<Option<Expr>, DataFusionError> + Sync + Send>)>,
) -> DuckDBDialect
fn with_custom_scalar_overrides( self, handlers: Vec<(&str, Box<dyn Fn(&Unparser<'_>, &[Expr]) -> Result<Option<Expr>, DataFusionError> + Sync + Send>)>, ) -> DuckDBDialect
Extends the dialect’s default rules for unparsing scalar functions.
This is useful for supporting application-specific UDFs or custom engine extensions.
Source§fn scalar_function_to_sql_overrides(
&self,
unparser: &Unparser<'_>,
func_name: &str,
args: &[Expr],
) -> Result<Option<Expr>, DataFusionError>
fn scalar_function_to_sql_overrides( &self, unparser: &Unparser<'_>, func_name: &str, args: &[Expr], ) -> Result<Option<Expr>, DataFusionError>
Allows the dialect to override scalar function unparsing if the dialect has specific rules.
Returns None if the default unparsing should be used, or Some(ast::Expr) if there is
a custom implementation for the function.
Source§fn supports_nulls_first_in_sort(&self) -> bool
fn supports_nulls_first_in_sort(&self) -> bool
Does the dialect support specifying
NULLS FIRST/LAST
in ORDER BY
clauses?Source§fn use_timestamp_for_date64(&self) -> bool
fn use_timestamp_for_date64(&self) -> bool
Does the dialect use TIMESTAMP to represent Date64 rather than DATETIME?
E.g. Trino, Athena and Dremio does not have DATETIME data type
fn interval_style(&self) -> IntervalStyle
Source§fn float64_ast_dtype(&self) -> DataType
fn float64_ast_dtype(&self) -> DataType
Does the dialect use DOUBLE PRECISION to represent Float64 rather than DOUBLE?
E.g. Postgres uses DOUBLE PRECISION instead of DOUBLE
Source§fn utf8_cast_dtype(&self) -> DataType
fn utf8_cast_dtype(&self) -> DataType
The SQL type to use for Arrow Utf8 unparsing
Most dialects use VARCHAR, but some, like MySQL, require CHAR
Source§fn large_utf8_cast_dtype(&self) -> DataType
fn large_utf8_cast_dtype(&self) -> DataType
The SQL type to use for Arrow LargeUtf8 unparsing
Most dialects use TEXT, but some, like MySQL, require CHAR
Source§fn date_field_extract_style(&self) -> DateFieldExtractStyle
fn date_field_extract_style(&self) -> DateFieldExtractStyle
The date field extract style to use:
DateFieldExtractStyle
Source§fn int64_cast_dtype(&self) -> DataType
fn int64_cast_dtype(&self) -> DataType
The SQL type to use for Arrow Int64 unparsing
Most dialects use BigInt, but some, like MySQL, require SIGNED
Source§fn int32_cast_dtype(&self) -> DataType
fn int32_cast_dtype(&self) -> DataType
The SQL type to use for Arrow Int32 unparsing
Most dialects use Integer, but some, like MySQL, require SIGNED
Source§fn timestamp_cast_dtype(
&self,
_time_unit: &TimeUnit,
tz: &Option<Arc<str>>,
) -> DataType
fn timestamp_cast_dtype( &self, _time_unit: &TimeUnit, tz: &Option<Arc<str>>, ) -> DataType
The SQL type to use for Timestamp unparsing
Most dialects use Timestamp, but some, like MySQL, require Datetime
Some dialects like Dremio does not support WithTimeZone and requires always Timestamp
Source§fn date32_cast_dtype(&self) -> DataType
fn date32_cast_dtype(&self) -> DataType
The SQL type to use for Arrow Date32 unparsing
Most dialects use Date, but some, like SQLite require TEXT
Source§fn supports_column_alias_in_table_alias(&self) -> bool
fn supports_column_alias_in_table_alias(&self) -> bool
Does the dialect support specifying column aliases as part of alias table definition?
(SELECT col1, col2 from my_table) AS my_table_alias(col1_alias, col2_alias)
Source§fn requires_derived_table_alias(&self) -> bool
fn requires_derived_table_alias(&self) -> bool
Whether the dialect requires a table alias for any subquery in the FROM clause
This affects behavior when deriving logical plans for Sort, Limit, etc.
Source§fn window_func_support_window_frame(
&self,
_func_name: &str,
_start_bound: &WindowFrameBound,
_end_bound: &WindowFrameBound,
) -> bool
fn window_func_support_window_frame( &self, _func_name: &str, _start_bound: &WindowFrameBound, _end_bound: &WindowFrameBound, ) -> bool
Allows the dialect to choose to omit window frame in unparsing
based on function name and window frame bound
Returns false if specific function name / window frame bound indicates no window frame is needed in unparsing
Source§fn full_qualified_col(&self) -> bool
fn full_qualified_col(&self) -> bool
Allow to unparse a qualified column with a full qualified name
(e.g. catalog_name.schema_name.table_name.column_name)
Otherwise, the column will be unparsed with only the table name and column name
(e.g. table_name.column_name)
Source§fn unnest_as_table_factor(&self) -> bool
fn unnest_as_table_factor(&self) -> bool
Allow to unparse the unnest plan as ast::TableFactor::UNNEST. Read more
Auto Trait Implementations§
impl Freeze for DuckDBDialect
impl !RefUnwindSafe for DuckDBDialect
impl Send for DuckDBDialect
impl Sync for DuckDBDialect
impl Unpin for DuckDBDialect
impl !UnwindSafe for DuckDBDialect
Blanket Implementations§
Source§impl<T> AlignerFor<1> for T
impl<T> AlignerFor<1> for T
Source§impl<T> AlignerFor<1024> for T
impl<T> AlignerFor<1024> for T
Source§type Aligner = AlignTo1024<T>
type Aligner = AlignTo1024<T>
The
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<128> for T
impl<T> AlignerFor<128> for T
Source§type Aligner = AlignTo128<T>
type Aligner = AlignTo128<T>
The
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<16> for T
impl<T> AlignerFor<16> for T
Source§impl<T> AlignerFor<16384> for T
impl<T> AlignerFor<16384> for T
Source§type Aligner = AlignTo16384<T>
type Aligner = AlignTo16384<T>
The
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<2> for T
impl<T> AlignerFor<2> for T
Source§impl<T> AlignerFor<2048> for T
impl<T> AlignerFor<2048> for T
Source§type Aligner = AlignTo2048<T>
type Aligner = AlignTo2048<T>
The
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<256> for T
impl<T> AlignerFor<256> for T
Source§type Aligner = AlignTo256<T>
type Aligner = AlignTo256<T>
The
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<32> for T
impl<T> AlignerFor<32> for T
Source§impl<T> AlignerFor<32768> for T
impl<T> AlignerFor<32768> for T
Source§type Aligner = AlignTo32768<T>
type Aligner = AlignTo32768<T>
The
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<4> for T
impl<T> AlignerFor<4> for T
Source§impl<T> AlignerFor<4096> for T
impl<T> AlignerFor<4096> for T
Source§type Aligner = AlignTo4096<T>
type Aligner = AlignTo4096<T>
The
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<512> for T
impl<T> AlignerFor<512> for T
Source§type Aligner = AlignTo512<T>
type Aligner = AlignTo512<T>
The
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<64> for T
impl<T> AlignerFor<64> for T
Source§impl<T> AlignerFor<8> for T
impl<T> AlignerFor<8> for T
Source§impl<T> AlignerFor<8192> for T
impl<T> AlignerFor<8192> for T
Source§type Aligner = AlignTo8192<T>
type Aligner = AlignTo8192<T>
The
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<S> ROExtAcc for S
impl<S> ROExtAcc for S
Source§fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
Gets a reference to a field, determined by
offset
. Read moreSource§fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
Gets a muatble reference to a field, determined by
offset
. Read moreSource§fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
Gets a const pointer to a field,
the field is determined by
offset
. Read moreSource§fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
Gets a mutable pointer to a field, determined by
offset
. Read moreSource§impl<S> ROExtOps<Aligned> for S
impl<S> ROExtOps<Aligned> for S
Source§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
Replaces a field (determined by
offset
) with value
,
returning the previous value of the field. Read moreSource§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
Source§impl<S> ROExtOps<Unaligned> for S
impl<S> ROExtOps<Unaligned> for S
Source§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
Replaces a field (determined by
offset
) with value
,
returning the previous value of the field. Read moreSource§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
Source§impl<T> SelfOps for Twhere
T: ?Sized,
impl<T> SelfOps for Twhere
T: ?Sized,
Source§fn piped<F, U>(self, f: F) -> U
fn piped<F, U>(self, f: F) -> U
Emulates the pipeline operator, allowing method syntax in more places. Read more
Source§fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
The same as
piped
except that the function takes &Self
Useful for functions that take &Self
instead of Self
. Read moreSource§fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
The same as
piped
, except that the function takes &mut Self
.
Useful for functions that take &mut Self
instead of Self
.Source§fn mutated<F>(self, f: F) -> Self
fn mutated<F>(self, f: F) -> Self
Mutates self using a closure taking self by mutable reference,
passing it along the method chain. Read more
Source§fn observe<F>(self, f: F) -> Self
fn observe<F>(self, f: F) -> Self
Observes the value of self, passing it along unmodified.
Useful in long method chains. Read more
Source§fn as_ref_<T>(&self) -> &T
fn as_ref_<T>(&self) -> &T
Performs a reference to reference conversion with
AsRef
,
using the turbofish .as_ref_::<_>()
syntax. Read moreSource§impl<This> TransmuteElement for Thiswhere
This: ?Sized,
impl<This> TransmuteElement for Thiswhere
This: ?Sized,
Source§unsafe fn transmute_element<T>(self) -> Self::TransmutedPtrwhere
Self: CanTransmuteElement<T>,
unsafe fn transmute_element<T>(self) -> Self::TransmutedPtrwhere
Self: CanTransmuteElement<T>,
Transmutes the element type of this pointer.. Read more
Source§impl<T> TypeIdentity for Twhere
T: ?Sized,
impl<T> TypeIdentity for Twhere
T: ?Sized,
Source§fn as_type_mut(&mut self) -> &mut Self::Type
fn as_type_mut(&mut self) -> &mut Self::Type
Converts a mutable reference back to the original type.
Source§fn into_type_box(self: Box<Self>) -> Box<Self::Type>
fn into_type_box(self: Box<Self>) -> Box<Self::Type>
Converts a box back to the original type.
Source§fn into_type_arc(this: Arc<Self>) -> Arc<Self::Type>
fn into_type_arc(this: Arc<Self>) -> Arc<Self::Type>
Converts an Arc back to the original type. Read more
Source§fn into_type_rc(this: Rc<Self>) -> Rc<Self::Type>
fn into_type_rc(this: Rc<Self>) -> Rc<Self::Type>
Converts an Rc back to the original type. Read more
Source§fn from_type_ref(this: &Self::Type) -> &Self
fn from_type_ref(this: &Self::Type) -> &Self
Converts a reference back to the original type.
Source§fn from_type_mut(this: &mut Self::Type) -> &mut Self
fn from_type_mut(this: &mut Self::Type) -> &mut Self
Converts a mutable reference back to the original type.
Source§fn from_type_box(this: Box<Self::Type>) -> Box<Self>
fn from_type_box(this: Box<Self::Type>) -> Box<Self>
Converts a box back to the original type.