pub struct RedshiftSqlDialect {}
Trait Implementations§
Source§impl Debug for RedshiftSqlDialect
impl Debug for RedshiftSqlDialect
Source§impl Dialect for RedshiftSqlDialect
impl Dialect for RedshiftSqlDialect
Source§fn is_nested_delimited_identifier_start(&self, ch: char) -> bool
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>)>
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 convert_type_before_value(&self) -> bool
fn convert_type_before_value(&self) -> bool
redshift has CONVERT(type, value)
instead of CONVERT(value, type)
https://docs.aws.amazon.com/redshift/latest/dg/r_CONVERT_function.html
Source§fn supports_top_before_distinct(&self) -> bool
fn supports_top_before_distinct(&self) -> bool
Redshift expects the TOP
option before the ALL/DISTINCT
option:
https://docs.aws.amazon.com/redshift/latest/dg/r_SELECT_list.html#r_SELECT_list-parameters
Source§fn supports_partiql(&self) -> bool
fn supports_partiql(&self) -> bool
Redshift supports PartiQL: https://docs.aws.amazon.com/redshift/latest/dg/super-overview.html
Source§fn is_identifier_start(&self, ch: char) -> bool
fn is_identifier_start(&self, ch: char) -> bool
Source§fn is_identifier_part(&self, ch: char) -> bool
fn is_identifier_part(&self, ch: char) -> bool
Source§fn supports_connect_by(&self) -> bool
fn supports_connect_by(&self) -> bool
Source§fn supports_string_escape_constant(&self) -> bool
fn supports_string_escape_constant(&self) -> bool
Source§fn supports_geometric_types(&self) -> bool
fn supports_geometric_types(&self) -> bool
Source§fn supports_array_typedef_with_brackets(&self) -> bool
fn supports_array_typedef_with_brackets(&self) -> bool
CREATE TABLE my_table (arr1 INT[], arr2 INT[3])
SELECT x::INT[]
Source§fn allow_extract_single_quotes(&self) -> bool
fn allow_extract_single_quotes(&self) -> bool
EXTRACT
function to use single quotes in the part being extracted.Source§fn supports_string_literal_backslash_escape(&self) -> bool
fn supports_string_literal_backslash_escape(&self) -> bool
Source§fn is_delimited_identifier_start(&self, ch: char) -> bool
fn is_delimited_identifier_start(&self, ch: char) -> bool
Word::matching_end_quote
hereSource§fn identifier_quote_style(&self, _identifier: &str) -> Option<char>
fn identifier_quote_style(&self, _identifier: &str) -> Option<char>
Source§fn is_custom_operator_part(&self, _ch: char) -> bool
fn is_custom_operator_part(&self, _ch: char) -> bool
Source§fn ignores_wildcard_escapes(&self) -> bool
fn ignores_wildcard_escapes(&self) -> bool
Source§fn supports_unicode_string_literal(&self) -> bool
fn supports_unicode_string_literal(&self) -> bool
U&
prefix.
This is used to specify Unicode code points in string literals.
For example, in PostgreSQL, the following is a valid string literal: Read moreSource§fn supports_filter_during_aggregation(&self) -> bool
fn supports_filter_during_aggregation(&self) -> bool
FILTER (WHERE expr)
for aggregate queries?Source§fn supports_window_clause_named_window_reference(&self) -> bool
fn supports_window_clause_named_window_reference(&self) -> bool
Source§fn supports_within_after_array_aggregation(&self) -> bool
fn supports_within_after_array_aggregation(&self) -> bool
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
fn supports_group_by_expr(&self) -> bool
group sets, roll up, or cube
expressions.Source§fn supports_group_by_with_modifier(&self) -> bool
fn supports_group_by_with_modifier(&self) -> bool
GROUP BY
modifiers prefixed by a WITH
keyword.
Example: GROUP BY value WITH ROLLUP
.Source§fn supports_outer_join_operator(&self) -> bool
fn supports_outer_join_operator(&self) -> bool
(+)
syntax for OUTER JOIN.Source§fn supports_execute_immediate(&self) -> bool
fn supports_execute_immediate(&self) -> bool
EXECUTE IMMEDIATE
statements.Source§fn supports_match_recognize(&self) -> bool
fn supports_match_recognize(&self) -> bool
Source§fn supports_in_empty_list(&self) -> bool
fn supports_in_empty_list(&self) -> bool
(NOT) IN ()
expressionsSource§fn supports_start_transaction_modifier(&self) -> bool
fn supports_start_transaction_modifier(&self) -> bool
BEGIN {DEFERRED | IMMEDIATE | EXCLUSIVE | TRY | CATCH} [TRANSACTION]
statementsSource§fn supports_end_transaction_modifier(&self) -> bool
fn supports_end_transaction_modifier(&self) -> bool
END {TRY | CATCH}
statementsSource§fn supports_named_fn_args_with_eq_operator(&self) -> bool
fn supports_named_fn_args_with_eq_operator(&self) -> bool
FUN(a = '1', b = '2')
.Source§fn supports_named_fn_args_with_colon_operator(&self) -> bool
fn supports_named_fn_args_with_colon_operator(&self) -> bool
FUN(a : '1', b : '2')
.Source§fn supports_named_fn_args_with_assignment_operator(&self) -> bool
fn supports_named_fn_args_with_assignment_operator(&self) -> bool
FUN(a := '1', b := '2')
.Source§fn supports_named_fn_args_with_rarrow_operator(&self) -> bool
fn supports_named_fn_args_with_rarrow_operator(&self) -> bool
FUN(a => '1', b => '2')
.Source§fn supports_named_fn_args_with_expr_name(&self) -> bool
fn supports_named_fn_args_with_expr_name(&self) -> bool
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
fn supports_numeric_prefix(&self) -> bool
59901_user_login
Source§fn supports_numeric_literal_underscores(&self) -> bool
fn supports_numeric_literal_underscores(&self) -> bool
10_000_000
Source§fn supports_window_function_null_treatment_arg(&self) -> bool
fn supports_window_function_null_treatment_arg(&self) -> bool
Source§fn supports_dictionary_syntax(&self) -> bool
fn supports_dictionary_syntax(&self) -> bool
{'x': 1, 'y': 2, 'z': 3}
.Source§fn support_map_literal_syntax(&self) -> bool
fn support_map_literal_syntax(&self) -> bool
Map {1: 10, 2: 20}
.Source§fn supports_lambda_functions(&self) -> bool
fn supports_lambda_functions(&self) -> bool
Source§fn supports_parenthesized_set_variables(&self) -> bool
fn supports_parenthesized_set_variables(&self) -> bool
SET
variable declaration. Read moreSource§fn supports_comma_separated_set_assignments(&self) -> bool
fn supports_comma_separated_set_assignments(&self) -> bool
SET
statements
in a single statement. Read moreSource§fn supports_select_wildcard_except(&self) -> bool
fn supports_select_wildcard_except(&self) -> bool
EXCEPT
clause following a
wildcard in a select list. Read moreSource§fn supports_triple_quoted_string(&self) -> bool
fn supports_triple_quoted_string(&self) -> bool
"""abc"""
Source§fn parse_prefix(
&self,
_parser: &mut Parser<'_>,
) -> Option<Result<Expr, ParserError>>
fn parse_prefix( &self, _parser: &mut Parser<'_>, ) -> Option<Result<Expr, ParserError>>
Source§fn supports_trailing_commas(&self) -> bool
fn supports_trailing_commas(&self) -> bool
Source§fn supports_limit_comma(&self) -> bool
fn supports_limit_comma(&self) -> bool
LIMIT 1, 2
as LIMIT 2 OFFSET 1
?Source§fn supports_projection_trailing_commas(&self) -> bool
fn supports_projection_trailing_commas(&self) -> bool
Source§fn supports_from_trailing_commas(&self) -> bool
fn supports_from_trailing_commas(&self) -> bool
FROM
clause of a SELECT
statement.
Example: SELECT 1 FROM T, U, LIMIT 1
Source§fn supports_column_definition_trailing_commas(&self) -> bool
fn supports_column_definition_trailing_commas(&self) -> bool
CREATE
statement.
Example: CREATE TABLE T (x INT, y TEXT,)
Source§fn supports_object_name_double_dot_notation(&self) -> bool
fn supports_object_name_double_dot_notation(&self) -> bool
Source§fn supports_struct_literal(&self) -> bool
fn supports_struct_literal(&self) -> bool
Source§fn supports_empty_projections(&self) -> bool
fn supports_empty_projections(&self) -> bool
Source§fn supports_select_expr_star(&self) -> bool
fn supports_select_expr_star(&self) -> bool
Source§fn supports_from_first_select(&self) -> bool
fn supports_from_first_select(&self) -> bool
Source§fn supports_pipe_operator(&self) -> bool
fn supports_pipe_operator(&self) -> bool
Source§fn supports_user_host_grantee(&self) -> bool
fn supports_user_host_grantee(&self) -> bool
'user'@'host'
grantee syntax?Source§fn supports_match_against(&self) -> bool
fn supports_match_against(&self) -> bool
MATCH() AGAINST()
syntax?Source§fn 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>>
Source§fn get_next_precedence(
&self,
_parser: &Parser<'_>,
) -> Option<Result<u8, ParserError>>
fn get_next_precedence( &self, _parser: &Parser<'_>, ) -> Option<Result<u8, ParserError>>
Source§fn get_next_precedence_default(
&self,
parser: &Parser<'_>,
) -> Result<u8, ParserError>
fn get_next_precedence_default( &self, parser: &Parser<'_>, ) -> Result<u8, ParserError>
Source§fn parse_statement(
&self,
_parser: &mut Parser<'_>,
) -> Option<Result<Statement, ParserError>>
fn parse_statement( &self, _parser: &mut Parser<'_>, ) -> Option<Result<Statement, ParserError>>
Source§fn parse_column_option(
&self,
_parser: &mut Parser<'_>,
) -> Result<Option<Result<Option<ColumnOption>, ParserError>>, ParserError>
fn parse_column_option( &self, _parser: &mut Parser<'_>, ) -> Result<Option<Result<Option<ColumnOption>, ParserError>>, ParserError>
Source§fn prec_value(&self, prec: Precedence) -> u8
fn prec_value(&self, prec: Precedence) -> u8
Source§fn prec_unknown(&self) -> u8
fn prec_unknown(&self) -> u8
Source§fn describe_requires_table_keyword(&self) -> bool
fn describe_requires_table_keyword(&self) -> bool
Source§fn allow_extract_custom(&self) -> bool
fn allow_extract_custom(&self) -> bool
EXTRACT
function to words other than Keyword
.Source§fn supports_dollar_placeholder(&self) -> bool
fn supports_dollar_placeholder(&self) -> bool
SELECT $var
(SQLite)Source§fn supports_create_index_with_clause(&self) -> bool
fn supports_create_index_with_clause(&self) -> bool
CREATE INDEX idx ON t WITH (key = value, key2)
Source§fn require_interval_qualifier(&self) -> bool
fn require_interval_qualifier(&self) -> bool
INTERVAL
expressions require units (called “qualifiers” in the ANSI SQL spec) to be specified,
e.g. INTERVAL 1 DAY
vs INTERVAL 1
. Read morefn supports_explain_with_utility_options(&self) -> bool
fn supports_asc_desc_in_column_definition(&self) -> bool
Source§fn supports_factorial_operator(&self) -> bool
fn supports_factorial_operator(&self) -> bool
a!
expressionsSource§fn supports_nested_comments(&self) -> bool
fn supports_nested_comments(&self) -> bool
/* /* nested */ */
Source§fn supports_eq_alias_assignment(&self) -> bool
fn supports_eq_alias_assignment(&self) -> bool
=
within a SelectItem
as an alias assignment operator, rather than a boolean expression.
For example: the following statements are equivalent for such a dialect: Read moreSource§fn supports_try_convert(&self) -> bool
fn supports_try_convert(&self) -> bool
TRY_CONVERT
functionSource§fn supports_bang_not_operator(&self) -> bool
fn supports_bang_not_operator(&self) -> bool
!a
syntax for boolean NOT
expressions.Source§fn supports_listen_notify(&self) -> bool
fn supports_listen_notify(&self) -> bool
LISTEN
, UNLISTEN
and NOTIFY
statementsSource§fn supports_load_data(&self) -> bool
fn supports_load_data(&self) -> bool
LOAD DATA
statementSource§fn supports_load_extension(&self) -> bool
fn supports_load_extension(&self) -> bool
LOAD extension
statementSource§fn supports_boolean_literals(&self) -> bool
fn supports_boolean_literals(&self) -> bool
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
fn supports_show_like_before_in(&self) -> bool
LIKE 'pattern'
option in
a SHOW
statement before the IN
optionSource§fn supports_comment_on(&self) -> bool
fn supports_comment_on(&self) -> bool
COMMENT
statementSource§fn supports_create_table_select(&self) -> bool
fn supports_create_table_select(&self) -> bool
CREATE TABLE SELECT
statementSource§fn is_reserved_for_identifier(&self, kw: Keyword) -> bool
fn is_reserved_for_identifier(&self, kw: Keyword) -> bool
Source§fn get_reserved_keywords_for_table_factor(&self) -> &[Keyword]
fn get_reserved_keywords_for_table_factor(&self) -> &[Keyword]
TableFactor
.
See Self::supports_from_trailing_commasSource§fn get_reserved_keywords_for_select_item_operator(&self) -> &[Keyword]
fn get_reserved_keywords_for_select_item_operator(&self) -> &[Keyword]
SELECT CONNECT_BY_ROOT name FROM Tbl2
(Snowflake)Source§fn get_reserved_grantees_types(&self) -> &[GranteesType]
fn get_reserved_grantees_types(&self) -> &[GranteesType]
Source§fn supports_table_sample_before_alias(&self) -> bool
fn supports_table_sample_before_alias(&self) -> bool
TABLESAMPLE
option
before the table alias option. For example: Read moreSource§fn supports_insert_set(&self) -> bool
fn supports_insert_set(&self) -> bool
INSERT INTO ... SET col1 = 1, ...
syntax. Read moreSource§fn supports_insert_table_function(&self) -> bool
fn supports_insert_table_function(&self) -> bool
Source§fn supports_insert_format(&self) -> bool
fn supports_insert_format(&self) -> bool
INSERT INTO ... FORMAT <format>
Source§fn supports_set_stmt_without_operator(&self) -> bool
fn supports_set_stmt_without_operator(&self) -> bool
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
fn is_column_alias(&self, kw: &Keyword, _parser: &mut Parser<'_>) -> bool
Source§fn is_select_item_alias(
&self,
explicit: bool,
kw: &Keyword,
parser: &mut Parser<'_>,
) -> bool
fn is_select_item_alias( &self, explicit: bool, kw: &Keyword, parser: &mut Parser<'_>, ) -> bool
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
fn is_table_factor_alias( &self, explicit: bool, kw: &Keyword, _parser: &mut Parser<'_>, ) -> bool
AS
word. Parser is provided
to enable looking ahead if needed.Source§fn supports_timestamp_versioning(&self) -> bool
fn supports_timestamp_versioning(&self) -> bool
Source§fn supports_table_hints(&self) -> bool
fn supports_table_hints(&self) -> bool
FROM
clause.Source§fn requires_single_line_comment_whitespace(&self) -> bool
fn requires_single_line_comment_whitespace(&self) -> bool
--
to start a single line comment. Read moreSource§fn supports_order_by_all(&self) -> bool
fn supports_order_by_all(&self) -> bool
ORDER BY ALL
.
ALL
which means all columns of the SELECT clause. Read moreSource§fn supports_set_names(&self) -> bool
fn supports_set_names(&self) -> bool
SET NAMES <charset_name> [COLLATE <collation_name>]
. Read more