datafusion_sql::unparser::dialect

Trait Dialect

Source
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§

Source

fn identifier_quote_style(&self, _identifier: &str) -> Option<char>

Return the character used to quote identifiers.

Provided Methods§

Source

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

Does the dialect use TIMESTAMP to represent Date64 rather than DATETIME? E.g. Trino, Athena and Dremio does not have DATETIME data type

Source

fn interval_style(&self) -> IntervalStyle

Source

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

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

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

The date field extract style to use: DateFieldExtractStyle

Source

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

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

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

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

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

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 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.

Implementors§