pub trait Dialect: Debug + Any {
    fn is_identifier_start(&self, ch: char) -> bool;
    fn is_identifier_part(&self, ch: char) -> bool;

    fn is_delimited_identifier_start(&self, ch: char) -> bool { ... }
    fn is_proper_identifier_inside_quotes(
        &self,
        _chars: Peekable<Chars<'_>>
    ) -> bool { ... } fn supports_filter_during_aggregation(&self) -> bool { ... } fn supports_within_after_array_aggregation(&self) -> bool { ... } fn parse_prefix(
        &self,
        _parser: &mut Parser<'_>
    ) -> Option<Result<Expr, ParserError>> { ... } fn parse_infix(
        &self,
        _parser: &mut Parser<'_>,
        _expr: &Expr,
        _precendence: u8
    ) -> Option<Result<Expr, ParserError>> { ... } fn get_next_precedence(
        &self,
        _parser: &Parser<'_>
    ) -> Option<Result<u8, ParserError>> { ... } fn parse_statement(
        &self,
        _parser: &mut Parser<'_>
    ) -> Option<Result<Statement, ParserError>> { ... } }

Required Methods§

Determine if a character is a valid start character for an unquoted identifier

Determine if a character is a valid unquoted identifier character

Provided Methods§

Determine if a character starts a quoted identifier. The default implementation, accepting “double quoted” ids is both ANSI-compliant and appropriate for most dialects (with the notable exception of MySQL, MS SQL, and sqlite). You can accept one of characters listed in Word::matching_end_quote here

Determine if quoted characters are proper for identifier

Does the dialect support FILTER (WHERE expr) for aggregate queries?

Returns true if the dialect supports ARRAY_AGG() [WITHIN GROUP (ORDER BY)] expressions. Otherwise, the dialect should expect an ORDER BY without the WITHIN GROUP clause, e.g. ANSI

Dialect-specific prefix parser override

Dialect-specific infix parser override

Dialect-specific precedence override

Dialect-specific statement parser override

Implementations§

Implementors§