Trait datafusion_sql::unparser::dialect::Dialect

source ·
pub trait Dialect: Send + Sync {
    // 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 timestamp_cast_dtype(
        &self,
        _time_unit: &TimeUnit,
        tz: &Option<Arc<str>>,
    ) -> DataType { ... }
}
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 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

Implementors§