pub trait Dialect: Send + Sync {
Show 15 methods
// Required method
fn identifier_quote_style(&self, _identifier: &str) -> Option<char>;
// Provided methods
fn supports_nulls_first_in_sort(&self) -> bool { ... }
fn use_timestamp_for_date64(&self) -> bool { ... }
fn interval_style(&self) -> IntervalStyle { ... }
fn float64_ast_dtype(&self) -> DataType { ... }
fn utf8_cast_dtype(&self) -> DataType { ... }
fn large_utf8_cast_dtype(&self) -> DataType { ... }
fn date_field_extract_style(&self) -> DateFieldExtractStyle { ... }
fn int64_cast_dtype(&self) -> DataType { ... }
fn int32_cast_dtype(&self) -> DataType { ... }
fn timestamp_cast_dtype(
&self,
_time_unit: &TimeUnit,
tz: &Option<Arc<str>>,
) -> DataType { ... }
fn date32_cast_dtype(&self) -> DataType { ... }
fn supports_column_alias_in_table_alias(&self) -> bool { ... }
fn requires_derived_table_alias(&self) -> bool { ... }
fn scalar_function_to_sql_overrides(
&self,
_unparser: &Unparser<'_>,
_func_name: &str,
_args: &[Expr],
) -> Result<Option<Expr>> { ... }
}
Expand description
Dialect
to use for Unparsing
The default dialect tries to avoid quoting identifiers unless necessary (e.g. a
instead of "a"
)
but this behavior can be overridden as needed
Note: This trait will eventually be replaced by the Dialect in the SQLparser package
See https://github.com/sqlparser-rs/sqlparser-rs/pull/1170 See also the discussion in https://github.com/apache/datafusion/pull/10625
Required Methods§
Sourcefn identifier_quote_style(&self, _identifier: &str) -> Option<char>
fn identifier_quote_style(&self, _identifier: &str) -> Option<char>
Return the character used to quote identifiers.
Provided Methods§
Sourcefn 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?
Sourcefn 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
Sourcefn 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
Sourcefn 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
Sourcefn 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
Sourcefn date_field_extract_style(&self) -> DateFieldExtractStyle
fn date_field_extract_style(&self) -> DateFieldExtractStyle
The date field extract style to use: DateFieldExtractStyle
Sourcefn 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
Sourcefn 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
Sourcefn 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
Sourcefn 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
Sourcefn 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)
Sourcefn 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.
Sourcefn scalar_function_to_sql_overrides(
&self,
_unparser: &Unparser<'_>,
_func_name: &str,
_args: &[Expr],
) -> Result<Option<Expr>>
fn scalar_function_to_sql_overrides( &self, _unparser: &Unparser<'_>, _func_name: &str, _args: &[Expr], ) -> Result<Option<Expr>>
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.