Thanks to visit codestin.com
Credit goes to docs.rs

Trait Dialect

Source
pub trait Dialect: Debug + Any {
Show 100 methods // Required methods fn is_identifier_start(&self, ch: char) -> bool; fn is_identifier_part(&self, ch: char) -> bool; // Provided methods fn dialect(&self) -> TypeId { ... } fn is_delimited_identifier_start(&self, ch: char) -> bool { ... } fn is_nested_delimited_identifier_start(&self, _ch: char) -> bool { ... } fn peek_nested_delimited_identifier_quotes( &self, _chars: Peekable<Chars<'_>>, ) -> Option<(char, Option<char>)> { ... } fn identifier_quote_style(&self, _identifier: &str) -> Option<char> { ... } fn is_custom_operator_part(&self, _ch: char) -> bool { ... } fn supports_string_literal_backslash_escape(&self) -> bool { ... } fn ignores_wildcard_escapes(&self) -> bool { ... } fn supports_unicode_string_literal(&self) -> bool { ... } fn supports_filter_during_aggregation(&self) -> bool { ... } fn supports_window_clause_named_window_reference(&self) -> bool { ... } fn supports_within_after_array_aggregation(&self) -> bool { ... } fn supports_group_by_expr(&self) -> bool { ... } fn supports_group_by_with_modifier(&self) -> bool { ... } fn supports_outer_join_operator(&self) -> bool { ... } fn supports_connect_by(&self) -> bool { ... } fn supports_execute_immediate(&self) -> bool { ... } fn supports_match_recognize(&self) -> bool { ... } fn supports_in_empty_list(&self) -> bool { ... } fn supports_start_transaction_modifier(&self) -> bool { ... } fn supports_end_transaction_modifier(&self) -> bool { ... } fn supports_named_fn_args_with_eq_operator(&self) -> bool { ... } fn supports_named_fn_args_with_colon_operator(&self) -> bool { ... } fn supports_named_fn_args_with_assignment_operator(&self) -> bool { ... } fn supports_named_fn_args_with_rarrow_operator(&self) -> bool { ... } fn supports_named_fn_args_with_expr_name(&self) -> bool { ... } fn supports_numeric_prefix(&self) -> bool { ... } fn supports_numeric_literal_underscores(&self) -> bool { ... } fn supports_window_function_null_treatment_arg(&self) -> bool { ... } fn supports_dictionary_syntax(&self) -> bool { ... } fn support_map_literal_syntax(&self) -> bool { ... } fn supports_lambda_functions(&self) -> bool { ... } fn supports_parenthesized_set_variables(&self) -> bool { ... } fn supports_comma_separated_set_assignments(&self) -> bool { ... } fn supports_select_wildcard_except(&self) -> bool { ... } fn convert_type_before_value(&self) -> bool { ... } fn supports_triple_quoted_string(&self) -> bool { ... } fn parse_prefix( &self, _parser: &mut Parser<'_>, ) -> Option<Result<Expr, ParserError>> { ... } fn supports_trailing_commas(&self) -> bool { ... } fn supports_limit_comma(&self) -> bool { ... } fn supports_projection_trailing_commas(&self) -> bool { ... } fn supports_from_trailing_commas(&self) -> bool { ... } fn supports_column_definition_trailing_commas(&self) -> bool { ... } fn supports_object_name_double_dot_notation(&self) -> bool { ... } fn supports_struct_literal(&self) -> bool { ... } fn supports_empty_projections(&self) -> bool { ... } fn supports_select_expr_star(&self) -> bool { ... } fn supports_from_first_select(&self) -> bool { ... } fn supports_user_host_grantee(&self) -> bool { ... } fn supports_match_against(&self) -> bool { ... } 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 get_next_precedence_default( &self, parser: &Parser<'_>, ) -> Result<u8, ParserError> { ... } fn parse_statement( &self, _parser: &mut Parser<'_>, ) -> Option<Result<Statement, ParserError>> { ... } fn parse_column_option( &self, _parser: &mut Parser<'_>, ) -> Result<Option<Result<Option<ColumnOption>, ParserError>>, ParserError> { ... } fn prec_value(&self, prec: Precedence) -> u8 { ... } fn prec_unknown(&self) -> u8 { ... } fn describe_requires_table_keyword(&self) -> bool { ... } fn allow_extract_custom(&self) -> bool { ... } fn allow_extract_single_quotes(&self) -> bool { ... } fn supports_dollar_placeholder(&self) -> bool { ... } fn supports_create_index_with_clause(&self) -> bool { ... } fn require_interval_qualifier(&self) -> bool { ... } fn supports_explain_with_utility_options(&self) -> bool { ... } fn supports_asc_desc_in_column_definition(&self) -> bool { ... } fn supports_factorial_operator(&self) -> bool { ... } fn supports_nested_comments(&self) -> bool { ... } fn supports_eq_alias_assignment(&self) -> bool { ... } fn supports_try_convert(&self) -> bool { ... } fn supports_bang_not_operator(&self) -> bool { ... } fn supports_listen_notify(&self) -> bool { ... } fn supports_load_data(&self) -> bool { ... } fn supports_load_extension(&self) -> bool { ... } fn supports_top_before_distinct(&self) -> bool { ... } fn supports_boolean_literals(&self) -> bool { ... } fn supports_show_like_before_in(&self) -> bool { ... } fn supports_comment_on(&self) -> bool { ... } fn supports_create_table_select(&self) -> bool { ... } fn supports_partiql(&self) -> bool { ... } fn is_reserved_for_identifier(&self, kw: Keyword) -> bool { ... } fn get_reserved_keywords_for_table_factor(&self) -> &[Keyword] { ... } fn get_reserved_keywords_for_select_item_operator(&self) -> &[Keyword] { ... } fn supports_table_sample_before_alias(&self) -> bool { ... } fn supports_insert_set(&self) -> bool { ... } fn supports_insert_table_function(&self) -> bool { ... } fn supports_insert_format(&self) -> bool { ... } fn supports_set_stmt_without_operator(&self) -> bool { ... } fn is_column_alias(&self, kw: &Keyword, _parser: &mut Parser<'_>) -> bool { ... } fn is_select_item_alias( &self, explicit: bool, kw: &Keyword, parser: &mut Parser<'_>, ) -> bool { ... } fn is_table_factor_alias( &self, explicit: bool, kw: &Keyword, _parser: &mut Parser<'_>, ) -> bool { ... } fn supports_timestamp_versioning(&self) -> bool { ... } fn supports_string_escape_constant(&self) -> bool { ... } fn supports_table_hints(&self) -> bool { ... } fn requires_single_line_comment_whitespace(&self) -> bool { ... } fn supports_array_typedef_with_brackets(&self) -> bool { ... } fn supports_geometric_types(&self) -> bool { ... } fn supports_order_by_all(&self) -> bool { ... } fn supports_set_names(&self) -> bool { ... }
}
Expand description

Encapsulates the differences between SQL implementations.

§SQL Dialects

SQL implementations deviate from one another, either due to custom extensions or various historical reasons. This trait encapsulates the parsing differences between dialects.

GenericDialect is the most permissive dialect, and parses the union of all the other dialects, when there is no ambiguity. However, it does not currently allow CREATE TABLE statements without types specified for all columns; use SQLiteDialect if you require that.

§Examples

Most users create a Dialect directly, as shown on the module level documentation:

let dialect = AnsiDialect {};

It is also possible to dynamically create a Dialect from its name. For example:

let dialect = dialect_from_str("ansi").unwrap();

// Parsed dialect is an instance of `AnsiDialect`:
assert!(dialect.is::<AnsiDialect>());

Required Methods§

Source

fn is_identifier_start(&self, ch: char) -> bool

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

Source

fn is_identifier_part(&self, ch: char) -> bool

Determine if a character is a valid unquoted identifier character

Provided Methods§

Source

fn dialect(&self) -> TypeId

Determine the TypeId of this dialect.

By default, return the same TypeId as Any::type_id. Can be overridden by dialects that behave like other dialects (for example when wrapping a dialect).

Source

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

Source

fn is_nested_delimited_identifier_start(&self, _ch: char) -> bool

Determine if a character starts a potential nested quoted identifier. Example: RedShift supports the following quote styles to all mean the same thing:

SELECT 1 AS foo;
SELECT 1 AS "foo";
SELECT 1 AS [foo];
SELECT 1 AS ["foo"];
Source

fn peek_nested_delimited_identifier_quotes( &self, _chars: Peekable<Chars<'_>>, ) -> Option<(char, Option<char>)>

Only applicable whenever Self::is_nested_delimited_identifier_start returns true If the next sequence of tokens potentially represent a nested identifier, then this method returns a tuple containing the outer quote style, and if present, the inner (nested) quote style.

Example (Redshift):

`["foo"]` => Some(`[`, Some(`"`))
`[foo]` => Some(`[`, None)
`[0]` => None
`"foo"` => None
Source

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

Return the character used to quote identifiers.

Source

fn is_custom_operator_part(&self, _ch: char) -> bool

Most dialects do not have custom operators. Override this method to provide custom operators.

Source

fn supports_string_literal_backslash_escape(&self) -> bool

Determine if the dialect supports escaping characters via ’' in string literals.

Some dialects like BigQuery and Snowflake support this while others like Postgres do not. Such that the following is accepted by the former but rejected by the latter.

SELECT 'ab\'cd';

Conversely, such dialects reject the following statement which otherwise would be valid in the other dialects.

SELECT '\';
Source

fn ignores_wildcard_escapes(&self) -> bool

Determine whether the dialect strips the backslash when escaping LIKE wildcards (%, _).

MySQL has a special case when escaping single quoted strings which leaves these unescaped so they can be used in LIKE patterns without double-escaping (as is necessary in other escaping dialects, such as Snowflake). Generally, special characters have escaping rules causing them to be replaced with a different byte sequences (e.g. '\0' becoming the zero byte), and the default if an escaped character does not have a specific escaping rule is to strip the backslash (e.g. there is no rule for h, so '\h' = 'h'). MySQL’s special case for ignoring LIKE wildcard escapes is to not strip the backslash, so that '\%' = '\\%'. This applies to all string literals though, not just those used in LIKE patterns.

mysql> select '\_', hex('\\'), hex('_'), hex('\_');
+----+-----------+----------+-----------+
| \_ | hex('\\') | hex('_') | hex('\_') |
+----+-----------+----------+-----------+
| \_ | 5C        | 5F       | 5C5F      |
+----+-----------+----------+-----------+
1 row in set (0.00 sec)
Source

fn supports_unicode_string_literal(&self) -> bool

Determine if the dialect supports string literals with U& prefix. This is used to specify Unicode code points in string literals. For example, in PostgreSQL, the following is a valid string literal:

SELECT U&'\0061\0062\0063';

This is equivalent to the string literal 'abc'. See

Source

fn supports_filter_during_aggregation(&self) -> bool

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

Source

fn supports_window_clause_named_window_reference(&self) -> bool

Returns true if the dialect supports referencing another named window within a window clause declaration.

Example

SELECT * FROM mytable
WINDOW mynamed_window AS another_named_window
Source

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

Source

fn supports_group_by_expr(&self) -> bool

Returns true if the dialects supports group sets, roll up, or cube expressions.

Source

fn supports_group_by_with_modifier(&self) -> bool

Returns true if the dialects supports GROUP BY modifiers prefixed by a WITH keyword. Example: GROUP BY value WITH ROLLUP.

Source

fn supports_outer_join_operator(&self) -> bool

Returns true if the dialect supports the (+) syntax for OUTER JOIN.

Source

fn supports_connect_by(&self) -> bool

Returns true if the dialect supports CONNECT BY.

Source

fn supports_execute_immediate(&self) -> bool

Returns true if the dialect supports EXECUTE IMMEDIATE statements.

Source

fn supports_match_recognize(&self) -> bool

Returns true if the dialect supports the MATCH_RECOGNIZE operation.

Source

fn supports_in_empty_list(&self) -> bool

Returns true if the dialect supports (NOT) IN () expressions

Source

fn supports_start_transaction_modifier(&self) -> bool

Returns true if the dialect supports BEGIN {DEFERRED | IMMEDIATE | EXCLUSIVE | TRY | CATCH} [TRANSACTION] statements

Source

fn supports_end_transaction_modifier(&self) -> bool

Returns true if the dialect supports END {TRY | CATCH} statements

Source

fn supports_named_fn_args_with_eq_operator(&self) -> bool

Returns true if the dialect supports named arguments of the form FUN(a = '1', b = '2').

Source

fn supports_named_fn_args_with_colon_operator(&self) -> bool

Returns true if the dialect supports named arguments of the form FUN(a : '1', b : '2').

Source

fn supports_named_fn_args_with_assignment_operator(&self) -> bool

Returns true if the dialect supports named arguments of the form FUN(a := '1', b := '2').

Source

fn supports_named_fn_args_with_rarrow_operator(&self) -> bool

Returns true if the dialect supports named arguments of the form FUN(a => '1', b => '2').

Source

fn supports_named_fn_args_with_expr_name(&self) -> bool

Returns true if dialect supports argument name as arbitrary expression. e.g. FUN(LOWER('a'):'1', b:'2') Such function arguments are represented in the AST by the FunctionArg::ExprNamed variant, otherwise use the FunctionArg::Named variant (compatible reason).

Source

fn supports_numeric_prefix(&self) -> bool

Returns true if the dialect supports identifiers starting with a numeric prefix such as tables named 59901_user_login

Source

fn supports_numeric_literal_underscores(&self) -> bool

Returns true if the dialect supports numbers containing underscores, e.g. 10_000_000

Source

fn supports_window_function_null_treatment_arg(&self) -> bool

Returns true if the dialects supports specifying null treatment as part of a window function’s parameter list as opposed to after the parameter list.

i.e The following syntax returns true

FIRST_VALUE(a IGNORE NULLS) OVER ()

while the following syntax returns false

FIRST_VALUE(a) IGNORE NULLS OVER ()
Source

fn supports_dictionary_syntax(&self) -> bool

Returns true if the dialect supports defining structs or objects using a syntax like {'x': 1, 'y': 2, 'z': 3}.

Source

fn support_map_literal_syntax(&self) -> bool

Returns true if the dialect supports defining object using the syntax like Map {1: 10, 2: 20}.

Source

fn supports_lambda_functions(&self) -> bool

Returns true if the dialect supports lambda functions, for example:

SELECT transform(array(1, 2, 3), x -> x + 1); -- returns [2,3,4]
Source

fn supports_parenthesized_set_variables(&self) -> bool

Returns true if the dialect supports multiple variable assignment using parentheses in a SET variable declaration.

SET (variable[, ...]) = (expression[, ...]);
Source

fn supports_comma_separated_set_assignments(&self) -> bool

Returns true if the dialect supports multiple SET statements in a single statement.

SET variable = expression [, variable = expression];
Source

fn supports_select_wildcard_except(&self) -> bool

Returns true if the dialect supports an EXCEPT clause following a wildcard in a select list.

For example

SELECT * EXCEPT order_id FROM orders;
Source

fn convert_type_before_value(&self) -> bool

Returns true if the dialect has a CONVERT function which accepts a type first and an expression second, e.g. CONVERT(varchar, 1)

Source

fn supports_triple_quoted_string(&self) -> bool

Returns true if the dialect supports triple quoted string e.g. """abc"""

Source

fn parse_prefix( &self, _parser: &mut Parser<'_>, ) -> Option<Result<Expr, ParserError>>

Dialect-specific prefix parser override

Source

fn supports_trailing_commas(&self) -> bool

Does the dialect support trailing commas around the query?

Source

fn supports_limit_comma(&self) -> bool

Does the dialect support parsing LIMIT 1, 2 as LIMIT 2 OFFSET 1?

Source

fn supports_projection_trailing_commas(&self) -> bool

Does the dialect support trailing commas in the projection list?

Source

fn supports_from_trailing_commas(&self) -> bool

Returns true if the dialect supports trailing commas in the FROM clause of a SELECT statement. Example: SELECT 1 FROM T, U, LIMIT 1

Source

fn supports_column_definition_trailing_commas(&self) -> bool

Returns true if the dialect supports trailing commas in the column definitions list of a CREATE statement. Example: CREATE TABLE T (x INT, y TEXT,)

Source

fn supports_object_name_double_dot_notation(&self) -> bool

Returns true if the dialect supports double dot notation for object names

Example

SELECT * FROM db_name..table_name
Source

fn supports_struct_literal(&self) -> bool

Return true if the dialect supports the STRUCT literal

Example

SELECT STRUCT(1 as one, 'foo' as foo, false)
Source

fn supports_empty_projections(&self) -> bool

Return true if the dialect supports empty projections in SELECT statements

Example

SELECT from table_name
Source

fn supports_select_expr_star(&self) -> bool

Return true if the dialect supports wildcard expansion on arbitrary expressions in projections.

Example:

SELECT STRUCT<STRING>('foo').* FROM T
Source

fn supports_from_first_select(&self) -> bool

Return true if the dialect supports “FROM-first” selects.

Example:

FROM table
SELECT *
Source

fn supports_user_host_grantee(&self) -> bool

Does the dialect support MySQL-style 'user'@'host' grantee syntax?

Source

fn supports_match_against(&self) -> bool

Does the dialect support the MATCH() AGAINST() syntax?

Source

fn parse_infix( &self, _parser: &mut Parser<'_>, _expr: &Expr, _precedence: u8, ) -> Option<Result<Expr, ParserError>>

Dialect-specific infix parser override

This method is called to parse the next infix expression.

If None is returned, falls back to the default behavior.

Source

fn get_next_precedence( &self, _parser: &Parser<'_>, ) -> Option<Result<u8, ParserError>>

Dialect-specific precedence override

This method is called to get the precedence of the next token.

If None is returned, falls back to the default behavior.

Source

fn get_next_precedence_default( &self, parser: &Parser<'_>, ) -> Result<u8, ParserError>

Get the precedence of the next token, looking at the full token stream.

A higher number => higher precedence

See Self::get_next_precedence to override the behavior for just the next token.

The default implementation is used for many dialects, but can be overridden to provide dialect-specific behavior.

Source

fn parse_statement( &self, _parser: &mut Parser<'_>, ) -> Option<Result<Statement, ParserError>>

Dialect-specific statement parser override

This method is called to parse the next statement.

If None is returned, falls back to the default behavior.

Source

fn parse_column_option( &self, _parser: &mut Parser<'_>, ) -> Result<Option<Result<Option<ColumnOption>, ParserError>>, ParserError>

Dialect-specific column option parser override

This method is called to parse the next column option.

If None is returned, falls back to the default behavior.

Source

fn prec_value(&self, prec: Precedence) -> u8

Decide the lexical Precedence of operators.

Uses (APPROXIMATELY) https://www.postgresql.org/docs/7.0/operators.htm#AEN2026 as a reference

Source

fn prec_unknown(&self) -> u8

Returns the precedence when the precedence is otherwise unknown

Source

fn describe_requires_table_keyword(&self) -> bool

Returns true if this dialect requires the TABLE keyword after DESCRIBE

Defaults to false.

If true, the following statement is valid: DESCRIBE TABLE my_table If false, the following statements are valid: DESCRIBE my_table and DESCRIBE table

Source

fn allow_extract_custom(&self) -> bool

Returns true if this dialect allows the EXTRACT function to words other than Keyword.

Source

fn allow_extract_single_quotes(&self) -> bool

Returns true if this dialect allows the EXTRACT function to use single quotes in the part being extracted.

Source

fn supports_dollar_placeholder(&self) -> bool

Returns true if this dialect allows dollar placeholders e.g. SELECT $var (SQLite)

Source

fn supports_create_index_with_clause(&self) -> bool

Does the dialect support with clause in create index statement? e.g. CREATE INDEX idx ON t WITH (key = value, key2)

Source

fn require_interval_qualifier(&self) -> bool

Whether INTERVAL expressions require units (called “qualifiers” in the ANSI SQL spec) to be specified, e.g. INTERVAL 1 DAY vs INTERVAL 1.

Expressions within intervals (e.g. INTERVAL '1' + '1' DAY) are only allowed when units are required.

See https://github.com/sqlparser-rs/sqlparser-rs/pull/1398 for more information.

When true:

  • INTERVAL '1' DAY is VALID
  • INTERVAL 1 + 1 DAY is VALID
  • INTERVAL '1' + '1' DAY is VALID
  • INTERVAL '1' is INVALID

When false:

  • INTERVAL '1' is VALID
  • INTERVAL '1' DAY is VALID — unit is not required, but still allowed
  • INTERVAL 1 + 1 DAY is INVALID
Source

fn supports_explain_with_utility_options(&self) -> bool

Source

fn supports_asc_desc_in_column_definition(&self) -> bool

Source

fn supports_factorial_operator(&self) -> bool

Returns true if the dialect supports a! expressions

Source

fn supports_nested_comments(&self) -> bool

Returns true if the dialect supports nested comments e.g. /* /* nested */ */

Source

fn supports_eq_alias_assignment(&self) -> bool

Returns true if this dialect supports treating the equals operator = within a SelectItem as an alias assignment operator, rather than a boolean expression. For example: the following statements are equivalent for such a dialect:

 SELECT col_alias = col FROM tbl;
 SELECT col_alias AS col FROM tbl;
Source

fn supports_try_convert(&self) -> bool

Returns true if this dialect supports the TRY_CONVERT function

Source

fn supports_bang_not_operator(&self) -> bool

Returns true if the dialect supports !a syntax for boolean NOT expressions.

Source

fn supports_listen_notify(&self) -> bool

Returns true if the dialect supports the LISTEN, UNLISTEN and NOTIFY statements

Source

fn supports_load_data(&self) -> bool

Returns true if the dialect supports the LOAD DATA statement

Source

fn supports_load_extension(&self) -> bool

Returns true if the dialect supports the LOAD extension statement

Source

fn supports_top_before_distinct(&self) -> bool

Returns true if this dialect expects the TOP option before the ALL/DISTINCT options in a SELECT statement.

Source

fn supports_boolean_literals(&self) -> bool

Returns true if the dialect supports boolean literals (true and false). For example, in MSSQL these are treated as identifiers rather than boolean literals.

Source

fn supports_show_like_before_in(&self) -> bool

Returns true if this dialect supports the LIKE 'pattern' option in a SHOW statement before the IN option

Source

fn supports_comment_on(&self) -> bool

Returns true if this dialect supports the COMMENT statement

Source

fn supports_create_table_select(&self) -> bool

Returns true if the dialect supports the CREATE TABLE SELECT statement

Source

fn supports_partiql(&self) -> bool

Returns true if the dialect supports PartiQL for querying semi-structured data https://partiql.org/index.html

Source

fn is_reserved_for_identifier(&self, kw: Keyword) -> bool

Returns true if the specified keyword is reserved and cannot be used as an identifier without special handling like quoting.

Source

fn get_reserved_keywords_for_table_factor(&self) -> &[Keyword]

Returns reserved keywords when looking to parse a TableFactor. See Self::supports_from_trailing_commas

Source

fn get_reserved_keywords_for_select_item_operator(&self) -> &[Keyword]

Returns reserved keywords that may prefix a select item expression e.g. SELECT CONNECT_BY_ROOT name FROM Tbl2 (Snowflake)

Source

fn supports_table_sample_before_alias(&self) -> bool

Returns true if this dialect supports the TABLESAMPLE option before the table alias option. For example:

Table sample before alias: SELECT * FROM tbl AS t TABLESAMPLE (10) Table sample after alias: SELECT * FROM tbl TABLESAMPLE (10) AS t

https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html#_7_6_table_reference

Source

fn supports_insert_set(&self) -> bool

Returns true if this dialect supports the INSERT INTO ... SET col1 = 1, ... syntax.

MySQL: https://dev.mysql.com/doc/refman/8.4/en/insert.html

Source

fn supports_insert_table_function(&self) -> bool

Does the dialect support table function in insertion?

Source

fn supports_insert_format(&self) -> bool

Does the dialect support insert formats, e.g. INSERT INTO ... FORMAT <format>

Source

fn supports_set_stmt_without_operator(&self) -> bool

Returns true if this dialect supports SET statements without an explicit assignment operator such as =. For example: SET SHOWPLAN_XML ON.

Source

fn is_column_alias(&self, kw: &Keyword, _parser: &mut Parser<'_>) -> bool

Returns true if the specified keyword should be parsed as a column identifier. See keywords::RESERVED_FOR_COLUMN_ALIAS

Source

fn is_select_item_alias( &self, explicit: bool, kw: &Keyword, parser: &mut Parser<'_>, ) -> bool

Returns true if the specified keyword should be parsed as a select item alias. When explicit is true, the keyword is preceded by an AS word. Parser is provided to enable looking ahead if needed.

Source

fn is_table_factor_alias( &self, explicit: bool, kw: &Keyword, _parser: &mut Parser<'_>, ) -> bool

Returns true if the specified keyword should be parsed as a table factor alias. When explicit is true, the keyword is preceded by an AS word. Parser is provided to enable looking ahead if needed.

Source

fn supports_timestamp_versioning(&self) -> bool

Returns true if this dialect supports querying historical table data by specifying which version of the data to query.

Source

fn supports_string_escape_constant(&self) -> bool

Returns true if this dialect supports the E’…’ syntax for string literals

Postgres: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE

Source

fn supports_table_hints(&self) -> bool

Returns true if the dialect supports the table hints in the FROM clause.

Source

fn requires_single_line_comment_whitespace(&self) -> bool

Returns true if this dialect requires a whitespace character after -- to start a single line comment.

MySQL: https://dev.mysql.com/doc/refman/8.4/en/ansi-diff-comments.html e.g. UPDATE account SET balance=balance–1

Source

fn supports_array_typedef_with_brackets(&self) -> bool

Returns true if the dialect supports array type definition with brackets with an optional size. For example: CREATE TABLE my_table (arr1 INT[], arr2 INT[3]) SELECT x::INT[]

Source

fn supports_geometric_types(&self) -> bool

Returns true if the dialect supports geometric types.

Postgres: https://www.postgresql.org/docs/9.5/functions-geometry.html e.g. @@ circle ‘((0,0),10)’

Source

fn supports_order_by_all(&self) -> bool

Returns true if the dialect supports ORDER BY ALL. ALL which means all columns of the SELECT clause.

For example: SELECT * FROM addresses ORDER BY ALL;.

Source

fn supports_set_names(&self) -> bool

Returns true if the dialect supports SET NAMES <charset_name> [COLLATE <collation_name>].

Note: Postgres doesn’t support the COLLATE clause, but we permissively parse it anyway.

Implementations§

Source§

impl dyn Dialect

Source

pub fn is<T: Dialect>(&self) -> bool

Implementors§