pub trait Dialect: Debug + Any {
// Required methods
fn is_identifier_start(&self, ch: char) -> bool;
fn is_identifier_part(&self, ch: char) -> bool;
// Provided methods
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,
_precedence: 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§
Sourcefn is_identifier_start(&self, ch: char) -> bool
fn is_identifier_start(&self, ch: char) -> bool
Determine if a character is a valid start character for an unquoted identifier
Sourcefn is_identifier_part(&self, ch: char) -> bool
fn is_identifier_part(&self, ch: char) -> bool
Determine if a character is a valid unquoted identifier character
Provided Methods§
Sourcefn is_delimited_identifier_start(&self, ch: char) -> bool
fn is_delimited_identifier_start(&self, ch: char) -> bool
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
Sourcefn is_proper_identifier_inside_quotes(
&self,
_chars: Peekable<Chars<'_>>,
) -> bool
fn is_proper_identifier_inside_quotes( &self, _chars: Peekable<Chars<'_>>, ) -> bool
Determine if quoted characters are proper for identifier
Sourcefn supports_filter_during_aggregation(&self) -> bool
fn supports_filter_during_aggregation(&self) -> bool
Does the dialect support FILTER (WHERE expr)
for aggregate queries?
Sourcefn supports_within_after_array_aggregation(&self) -> bool
fn supports_within_after_array_aggregation(&self) -> bool
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
Sourcefn parse_prefix(
&self,
_parser: &mut Parser<'_>,
) -> Option<Result<Expr, ParserError>>
fn parse_prefix( &self, _parser: &mut Parser<'_>, ) -> Option<Result<Expr, ParserError>>
Dialect-specific prefix parser override
Sourcefn parse_infix(
&self,
_parser: &mut Parser<'_>,
_expr: &Expr,
_precedence: u8,
) -> Option<Result<Expr, ParserError>>
fn parse_infix( &self, _parser: &mut Parser<'_>, _expr: &Expr, _precedence: u8, ) -> Option<Result<Expr, ParserError>>
Dialect-specific infix parser override
Sourcefn get_next_precedence(
&self,
_parser: &Parser<'_>,
) -> Option<Result<u8, ParserError>>
fn get_next_precedence( &self, _parser: &Parser<'_>, ) -> Option<Result<u8, ParserError>>
Dialect-specific precedence override
Sourcefn parse_statement(
&self,
_parser: &mut Parser<'_>,
) -> Option<Result<Statement, ParserError>>
fn parse_statement( &self, _parser: &mut Parser<'_>, ) -> Option<Result<Statement, ParserError>>
Dialect-specific statement parser override