sqlglot.parsers.athena
1from __future__ import annotations 2 3import typing as t 4 5from sqlglot import exp 6from sqlglot.errors import ErrorLevel 7from sqlglot.parsers.trino import TrinoParser 8from sqlglot.tokens import TokenType, Token 9 10if t.TYPE_CHECKING: 11 from sqlglot.dialects.dialect import DialectType 12 from sqlglot.dialects.hive import Hive 13 from sqlglot.dialects.trino import Trino 14 15 16class AthenaTrinoParser(TrinoParser): 17 STATEMENT_PARSERS = { 18 **TrinoParser.STATEMENT_PARSERS, 19 TokenType.USING: lambda self: self._parse_as_command(self._prev), 20 } 21 22 DDL_SELECT_TOKENS = {*TrinoParser.DDL_SELECT_TOKENS, TokenType.USING} 23 24 def _parse_ddl_select(self) -> exp.Expr | None: 25 if self._match(TokenType.USING): 26 return self._parse_as_command(self._prev) 27 28 return super()._parse_ddl_select() 29 30 31class AthenaParser(AthenaTrinoParser): 32 def __init__( 33 self, 34 error_level: ErrorLevel | None = None, 35 error_message_context: int = 100, 36 max_errors: int = 3, 37 max_nodes: int = -1, 38 dialect: DialectType = None, 39 hive: Hive | None = None, 40 trino: Trino | None = None, 41 ) -> None: 42 from sqlglot.dialects.hive import Hive 43 from sqlglot.dialects.trino import Trino 44 45 hive = hive or Hive() 46 trino = trino or Trino() 47 48 super().__init__( 49 error_level=error_level, 50 error_message_context=error_message_context, 51 max_errors=max_errors, 52 max_nodes=max_nodes, 53 dialect=dialect, 54 ) 55 56 self._hive_parser = hive.parser( 57 error_level=error_level, 58 error_message_context=error_message_context, 59 max_errors=max_errors, 60 max_nodes=max_nodes, 61 ) 62 self._trino_parser = AthenaTrinoParser( 63 error_level=error_level, 64 error_message_context=error_message_context, 65 max_errors=max_errors, 66 max_nodes=max_nodes, 67 dialect=trino, 68 ) 69 70 def parse(self, raw_tokens: list[Token], sql: str) -> list[exp.Expr | None]: 71 if raw_tokens and raw_tokens[0].token_type == TokenType.HIVE_TOKEN_STREAM: 72 return self._hive_parser.parse(raw_tokens[1:], sql) 73 74 return self._trino_parser.parse(raw_tokens, sql) 75 76 def parse_into( 77 self, 78 expression_types: exp.IntoType, 79 raw_tokens: list[Token], 80 sql: str | None = None, 81 ) -> list[exp.Expr | None]: 82 if raw_tokens and raw_tokens[0].token_type == TokenType.HIVE_TOKEN_STREAM: 83 return self._hive_parser.parse_into(expression_types, raw_tokens[1:], sql) 84 85 return self._trino_parser.parse_into(expression_types, raw_tokens, sql)
17class AthenaTrinoParser(TrinoParser): 18 STATEMENT_PARSERS = { 19 **TrinoParser.STATEMENT_PARSERS, 20 TokenType.USING: lambda self: self._parse_as_command(self._prev), 21 } 22 23 DDL_SELECT_TOKENS = {*TrinoParser.DDL_SELECT_TOKENS, TokenType.USING} 24 25 def _parse_ddl_select(self) -> exp.Expr | None: 26 if self._match(TokenType.USING): 27 return self._parse_as_command(self._prev) 28 29 return super()._parse_ddl_select()
Parser consumes a list of tokens produced by the Tokenizer and produces a parsed syntax tree.
Arguments:
- error_level: The desired error level. Default: ErrorLevel.IMMEDIATE
- error_message_context: The amount of context to capture from a query string when displaying the error message (in number of characters). Default: 100
- max_errors: Maximum number of error messages to include in a raised ParseError. This is only relevant if error_level is ErrorLevel.RAISE. Default: 3
- max_nodes: Maximum number of AST nodes to prevent memory exhaustion. Set to -1 (default) to disable the check.
STATEMENT_PARSERS =
{<TokenType.ALTER: 220>: <function Parser.<lambda>>, <TokenType.ANALYZE: 441>: <function Parser.<lambda>>, <TokenType.BEGIN: 230>: <function Parser.<lambda>>, <TokenType.CACHE: 233>: <function Parser.<lambda>>, <TokenType.COMMENT: 239>: <function Parser.<lambda>>, <TokenType.COMMIT: 240>: <function Parser.<lambda>>, <TokenType.COPY: 243>: <function Parser.<lambda>>, <TokenType.CREATE: 244>: <function Parser.<lambda>>, <TokenType.DECLARE: 256>: <function Parser.<lambda>>, <TokenType.DELETE: 258>: <function Parser.<lambda>>, <TokenType.DESC: 259>: <function Parser.<lambda>>, <TokenType.DESCRIBE: 260>: <function Parser.<lambda>>, <TokenType.DROP: 266>: <function Parser.<lambda>>, <TokenType.GRANT: 290>: <function Parser.<lambda>>, <TokenType.REVOKE: 379>: <function Parser.<lambda>>, <TokenType.INSERT: 301>: <function Parser.<lambda>>, <TokenType.KILL: 315>: <function Parser.<lambda>>, <TokenType.LOAD: 322>: <function Parser.<lambda>>, <TokenType.MERGE: 329>: <function Parser.<lambda>>, <TokenType.PIVOT: 357>: <function Parser.<lambda>>, <TokenType.PRAGMA: 362>: <function Parser.<lambda>>, <TokenType.REFRESH: 375>: <function Parser.<lambda>>, <TokenType.ROLLBACK: 384>: <function Parser.<lambda>>, <TokenType.SET: 394>: <function Parser.<lambda>>, <TokenType.TRUNCATE: 413>: <function Parser.<lambda>>, <TokenType.UNCACHE: 416>: <function Parser.<lambda>>, <TokenType.UNPIVOT: 420>: <function Parser.<lambda>>, <TokenType.UPDATE: 421>: <function Parser.<lambda>>, <TokenType.USE: 422>: <function Parser.<lambda>>, <TokenType.SEMICOLON: 19>: <function Parser.<lambda>>, <TokenType.USING: 423>: <function AthenaTrinoParser.<lambda>>}
DDL_SELECT_TOKENS =
{<TokenType.WITH: 433>, <TokenType.SELECT: 389>, <TokenType.L_PAREN: 1>, <TokenType.USING: 423>}
Inherited Members
- sqlglot.parser.Parser
- Parser
- STRUCT_TYPE_TOKENS
- NESTED_TYPE_TOKENS
- ENUM_TYPE_TOKENS
- AGGREGATE_TYPE_TOKENS
- TYPE_TOKENS
- SIGNED_TO_UNSIGNED_TYPE_TOKEN
- SUBQUERY_PREDICATES
- SUBQUERY_TOKENS
- RESERVED_TOKENS
- TEXT_MATCH_EXCLUDED_TOKENS
- DB_CREATABLES
- CREATABLES
- TRIGGER_EVENTS
- ALTERABLES
- ID_VAR_TOKENS
- ALIAS_TOKENS
- COLON_PLACEHOLDER_TOKENS
- ARRAY_CONSTRUCTORS
- COMMENT_TABLE_ALIAS_TOKENS
- UPDATE_ALIAS_TOKENS
- TRIM_TYPES
- IDENTIFIER_TOKENS
- BRACKETS
- COLUMN_POSTFIX_TOKENS
- TABLE_POSTFIX_TOKENS
- FUNC_TOKENS
- CONJUNCTION
- ASSIGNMENT
- DISJUNCTION
- EQUALITY
- COMPARISON
- BITWISE
- TERM
- FACTOR
- EXPONENT
- TIMES
- TIMESTAMPS
- SET_OPERATIONS
- JOIN_METHODS
- JOIN_SIDES
- JOIN_KINDS
- JOIN_HINTS
- TABLE_TERMINATORS
- LAMBDAS
- TYPED_LAMBDA_ARGS
- LAMBDA_ARG_TERMINATORS
- COLUMN_OPERATORS
- JSON_OPERATORS
- CAST_COLUMN_OPERATORS
- EXPRESSION_PARSERS
- UNARY_PARSERS
- STRING_PARSERS
- NUMERIC_PARSERS
- PRIMARY_PARSERS
- PLACEHOLDER_PARSERS
- RANGE_PARSERS
- PIPE_SYNTAX_TRANSFORM_PARSERS
- PROPERTY_PARSERS
- CONSTRAINT_PARSERS
- ALTER_PARSERS
- ALTER_ALTER_PARSERS
- SCHEMA_UNNAMED_CONSTRAINTS
- RESERVED_CONSTRAINT_KINDS
- NO_PAREN_FUNCTION_PARSERS
- INVALID_FUNC_NAME_TOKENS
- FUNCTIONS_WITH_ALIASED_ARGS
- KEY_VALUE_DEFINITIONS
- QUERY_MODIFIER_PARSERS
- QUERY_MODIFIER_TOKENS
- SET_PARSERS
- SHOW_PARSERS
- TYPE_CONVERTERS
- PRE_VOLATILE_TOKENS
- TRANSACTION_KIND
- TRANSACTION_CHARACTERISTICS
- CONFLICT_ACTIONS
- TRIGGER_TIMING
- TRIGGER_DEFERRABLE
- CREATE_SEQUENCE
- ISOLATED_LOADING_OPTIONS
- USABLES
- CAST_ACTIONS
- SCHEMA_BINDING_OPTIONS
- PROCEDURE_OPTIONS
- EXECUTE_AS_OPTIONS
- KEY_CONSTRAINT_OPTIONS
- WINDOW_EXCLUDE_OPTIONS
- INSERT_ALTERNATIVES
- CLONE_KEYWORDS
- VERSION_PHRASES
- HISTORICAL_DATA_PREFIX
- HISTORICAL_DATA_KIND
- OPCLASS_FOLLOW_KEYWORDS
- OPTYPE_FOLLOW_TOKENS
- TABLE_INDEX_HINT_TOKENS
- VIEW_ATTRIBUTES
- WINDOW_ALIAS_TOKENS
- WINDOW_BEFORE_PAREN_TOKENS
- WINDOW_SIDES
- JSON_KEY_VALUE_SEPARATOR_TOKENS
- FETCH_TOKENS
- ADD_CONSTRAINT_TOKENS
- ADD_CONSTRAINT_KEYWORDS
- DISTINCT_TOKENS
- UNNEST_OFFSET_ALIAS_TOKENS
- SELECT_START_TOKENS
- COPY_INTO_VARLEN_OPTIONS
- IS_PREDICATE_PRECEDENCE
- IS_PREDICATE_TOKENS
- IS_JSON_PREDICATE_KIND
- ODBC_DATETIME_LITERALS
- ON_CONDITION_TOKENS
- PRIVILEGE_FOLLOW_TOKENS
- DESCRIBE_STYLES
- SET_ASSIGNMENT_DELIMITERS
- ANALYZE_STYLES
- ANALYZE_EXPRESSION_PARSERS
- PARTITION_KEYWORDS
- AMBIGUOUS_ALIAS_TOKENS
- OPERATION_MODIFIERS
- RECURSIVE_CTE_SEARCH_KIND
- SECURITY_PROPERTY_KEYWORDS
- MODIFIABLES
- STRICT_CAST
- PREFIXED_PIVOT_COLUMNS
- IDENTIFY_PIVOT_STRINGS
- UNPIVOT_VALUE_COLUMNS_FIRST
- PIVOT_COLUMN_NAMING
- LOG_DEFAULTS_TO_LN
- TABLESAMPLE_CSV
- DEFAULT_SAMPLING_METHOD
- SET_REQUIRES_ASSIGNMENT_DELIMITER
- TRIM_PATTERN_FIRST
- STRING_ALIASES
- MODIFIERS_ATTACHED_TO_SET_OP
- SET_OP_MODIFIERS
- NO_PAREN_IF_COMMANDS
- JSON_ARROWS_REQUIRE_JSON_TYPE
- COLON_IS_VARIANT_EXTRACT
- COLON_CHAIN_IS_SINGLE_EXTRACT
- SUPPORTS_IMPLICIT_UNNEST
- SUPPORTS_DIGIT_PREFIXED_FIELD_NAMES
- INTERVAL_SPANS
- SUPPORTS_PARTITION_SELECTION
- WRAPPED_TRANSFORM_COLUMN_CONSTRAINT
- OPTIONAL_ALIAS_TOKEN_CTE
- ALTER_RENAME_REQUIRES_COLUMN
- ALTER_DROP_REQUIRES_COLUMN
- ALTER_TABLE_PARTITIONS
- ALTER_TABLE_MIXED_ACTIONS
- ALTER_TABLE_REQUIRES_ACTION
- ALTER_COLUMN_TYPE_REQUIRES_KEYWORD
- JOINS_HAVE_EQUAL_PRECEDENCE
- MAP_KEYS_ARE_ARBITRARY_EXPRESSIONS
- JSON_EXTRACT_REQUIRES_JSON_EXPRESSION
- ADD_JOIN_ON_TRUE
- SUPPORTS_OMITTED_INTERVAL_SPAN_UNIT
- ADJACENT_STRINGS_CANNOT_BE_CONNECTED
- SUPPORTS_NTH_VALUE_FROM_MODIFIER
- QUOTED_TYPES_TO_PRESERVE
- SHOW_TRIE
- SET_TRIE
- error_level
- error_message_context
- max_errors
- max_nodes
- dialect
- sql
- errors
- reset
- raise_error
- validate_expression
- parse
- parse_into
- check_errors
- expression
- parse_set_operation
- build_cast
32class AthenaParser(AthenaTrinoParser): 33 def __init__( 34 self, 35 error_level: ErrorLevel | None = None, 36 error_message_context: int = 100, 37 max_errors: int = 3, 38 max_nodes: int = -1, 39 dialect: DialectType = None, 40 hive: Hive | None = None, 41 trino: Trino | None = None, 42 ) -> None: 43 from sqlglot.dialects.hive import Hive 44 from sqlglot.dialects.trino import Trino 45 46 hive = hive or Hive() 47 trino = trino or Trino() 48 49 super().__init__( 50 error_level=error_level, 51 error_message_context=error_message_context, 52 max_errors=max_errors, 53 max_nodes=max_nodes, 54 dialect=dialect, 55 ) 56 57 self._hive_parser = hive.parser( 58 error_level=error_level, 59 error_message_context=error_message_context, 60 max_errors=max_errors, 61 max_nodes=max_nodes, 62 ) 63 self._trino_parser = AthenaTrinoParser( 64 error_level=error_level, 65 error_message_context=error_message_context, 66 max_errors=max_errors, 67 max_nodes=max_nodes, 68 dialect=trino, 69 ) 70 71 def parse(self, raw_tokens: list[Token], sql: str) -> list[exp.Expr | None]: 72 if raw_tokens and raw_tokens[0].token_type == TokenType.HIVE_TOKEN_STREAM: 73 return self._hive_parser.parse(raw_tokens[1:], sql) 74 75 return self._trino_parser.parse(raw_tokens, sql) 76 77 def parse_into( 78 self, 79 expression_types: exp.IntoType, 80 raw_tokens: list[Token], 81 sql: str | None = None, 82 ) -> list[exp.Expr | None]: 83 if raw_tokens and raw_tokens[0].token_type == TokenType.HIVE_TOKEN_STREAM: 84 return self._hive_parser.parse_into(expression_types, raw_tokens[1:], sql) 85 86 return self._trino_parser.parse_into(expression_types, raw_tokens, sql)
Parser consumes a list of tokens produced by the Tokenizer and produces a parsed syntax tree.
Arguments:
- error_level: The desired error level. Default: ErrorLevel.IMMEDIATE
- error_message_context: The amount of context to capture from a query string when displaying the error message (in number of characters). Default: 100
- max_errors: Maximum number of error messages to include in a raised ParseError. This is only relevant if error_level is ErrorLevel.RAISE. Default: 3
- max_nodes: Maximum number of AST nodes to prevent memory exhaustion. Set to -1 (default) to disable the check.
AthenaParser( error_level: sqlglot.errors.ErrorLevel | None = None, error_message_context: int = 100, max_errors: int = 3, max_nodes: int = -1, dialect: Union[str, sqlglot.dialects.Dialect, type[sqlglot.dialects.Dialect], NoneType] = None, hive: sqlglot.dialects.Hive | None = None, trino: sqlglot.dialects.Trino | None = None)
33 def __init__( 34 self, 35 error_level: ErrorLevel | None = None, 36 error_message_context: int = 100, 37 max_errors: int = 3, 38 max_nodes: int = -1, 39 dialect: DialectType = None, 40 hive: Hive | None = None, 41 trino: Trino | None = None, 42 ) -> None: 43 from sqlglot.dialects.hive import Hive 44 from sqlglot.dialects.trino import Trino 45 46 hive = hive or Hive() 47 trino = trino or Trino() 48 49 super().__init__( 50 error_level=error_level, 51 error_message_context=error_message_context, 52 max_errors=max_errors, 53 max_nodes=max_nodes, 54 dialect=dialect, 55 ) 56 57 self._hive_parser = hive.parser( 58 error_level=error_level, 59 error_message_context=error_message_context, 60 max_errors=max_errors, 61 max_nodes=max_nodes, 62 ) 63 self._trino_parser = AthenaTrinoParser( 64 error_level=error_level, 65 error_message_context=error_message_context, 66 max_errors=max_errors, 67 max_nodes=max_nodes, 68 dialect=trino, 69 )
def
parse( self, raw_tokens: list[sqlglot.tokenizer_core.Token], sql: str) -> list[sqlglot.expressions.core.Expr | None]:
71 def parse(self, raw_tokens: list[Token], sql: str) -> list[exp.Expr | None]: 72 if raw_tokens and raw_tokens[0].token_type == TokenType.HIVE_TOKEN_STREAM: 73 return self._hive_parser.parse(raw_tokens[1:], sql) 74 75 return self._trino_parser.parse(raw_tokens, sql)
Parses a list of tokens and returns a list of syntax trees, one tree per parsed SQL statement.
Arguments:
- raw_tokens: The list of tokens.
- sql: The original SQL string.
Returns:
The list of the produced syntax trees.
def
parse_into( self, expression_types: Union[type[sqlglot.expressions.core.Expr], Collection[type[sqlglot.expressions.core.Expr]]], raw_tokens: list[sqlglot.tokenizer_core.Token], sql: str | None = None) -> list[sqlglot.expressions.core.Expr | None]:
77 def parse_into( 78 self, 79 expression_types: exp.IntoType, 80 raw_tokens: list[Token], 81 sql: str | None = None, 82 ) -> list[exp.Expr | None]: 83 if raw_tokens and raw_tokens[0].token_type == TokenType.HIVE_TOKEN_STREAM: 84 return self._hive_parser.parse_into(expression_types, raw_tokens[1:], sql) 85 86 return self._trino_parser.parse_into(expression_types, raw_tokens, sql)
Parses a list of tokens into a given Expr type. If a collection of Expr types is given instead, this method will try to parse the token list into each one of them, stopping at the first for which the parsing succeeds.
Arguments:
- expression_types: The expression type(s) to try and parse the token list into.
- raw_tokens: The list of tokens.
- sql: The original SQL string, used to produce helpful debug messages.
Returns:
The target Expr.
Inherited Members
- sqlglot.parsers.trino.TrinoParser
- TYPE_LITERAL_PARSERS
- NO_PAREN_FUNCTIONS
- FUNCTIONS
- FUNCTION_PARSERS
- JSON_QUERY_OPTIONS
- sqlglot.parsers.presto.PrestoParser
- VALUES_FOLLOWED_BY_PAREN
- ZONE_AWARE_TIMESTAMP_CONSTRUCTOR
- TABLE_ALIAS_TOKENS
- sqlglot.parser.Parser
- STRUCT_TYPE_TOKENS
- NESTED_TYPE_TOKENS
- ENUM_TYPE_TOKENS
- AGGREGATE_TYPE_TOKENS
- TYPE_TOKENS
- SIGNED_TO_UNSIGNED_TYPE_TOKEN
- SUBQUERY_PREDICATES
- SUBQUERY_TOKENS
- RESERVED_TOKENS
- TEXT_MATCH_EXCLUDED_TOKENS
- DB_CREATABLES
- CREATABLES
- TRIGGER_EVENTS
- ALTERABLES
- ID_VAR_TOKENS
- ALIAS_TOKENS
- COLON_PLACEHOLDER_TOKENS
- ARRAY_CONSTRUCTORS
- COMMENT_TABLE_ALIAS_TOKENS
- UPDATE_ALIAS_TOKENS
- TRIM_TYPES
- IDENTIFIER_TOKENS
- BRACKETS
- COLUMN_POSTFIX_TOKENS
- TABLE_POSTFIX_TOKENS
- FUNC_TOKENS
- CONJUNCTION
- ASSIGNMENT
- DISJUNCTION
- EQUALITY
- COMPARISON
- BITWISE
- TERM
- FACTOR
- EXPONENT
- TIMES
- TIMESTAMPS
- SET_OPERATIONS
- JOIN_METHODS
- JOIN_SIDES
- JOIN_KINDS
- JOIN_HINTS
- TABLE_TERMINATORS
- LAMBDAS
- TYPED_LAMBDA_ARGS
- LAMBDA_ARG_TERMINATORS
- COLUMN_OPERATORS
- JSON_OPERATORS
- CAST_COLUMN_OPERATORS
- EXPRESSION_PARSERS
- UNARY_PARSERS
- STRING_PARSERS
- NUMERIC_PARSERS
- PRIMARY_PARSERS
- PLACEHOLDER_PARSERS
- RANGE_PARSERS
- PIPE_SYNTAX_TRANSFORM_PARSERS
- PROPERTY_PARSERS
- CONSTRAINT_PARSERS
- ALTER_PARSERS
- ALTER_ALTER_PARSERS
- SCHEMA_UNNAMED_CONSTRAINTS
- RESERVED_CONSTRAINT_KINDS
- NO_PAREN_FUNCTION_PARSERS
- INVALID_FUNC_NAME_TOKENS
- FUNCTIONS_WITH_ALIASED_ARGS
- KEY_VALUE_DEFINITIONS
- QUERY_MODIFIER_PARSERS
- QUERY_MODIFIER_TOKENS
- SET_PARSERS
- SHOW_PARSERS
- TYPE_CONVERTERS
- PRE_VOLATILE_TOKENS
- TRANSACTION_KIND
- TRANSACTION_CHARACTERISTICS
- CONFLICT_ACTIONS
- TRIGGER_TIMING
- TRIGGER_DEFERRABLE
- CREATE_SEQUENCE
- ISOLATED_LOADING_OPTIONS
- USABLES
- CAST_ACTIONS
- SCHEMA_BINDING_OPTIONS
- PROCEDURE_OPTIONS
- EXECUTE_AS_OPTIONS
- KEY_CONSTRAINT_OPTIONS
- WINDOW_EXCLUDE_OPTIONS
- INSERT_ALTERNATIVES
- CLONE_KEYWORDS
- VERSION_PHRASES
- HISTORICAL_DATA_PREFIX
- HISTORICAL_DATA_KIND
- OPCLASS_FOLLOW_KEYWORDS
- OPTYPE_FOLLOW_TOKENS
- TABLE_INDEX_HINT_TOKENS
- VIEW_ATTRIBUTES
- WINDOW_ALIAS_TOKENS
- WINDOW_BEFORE_PAREN_TOKENS
- WINDOW_SIDES
- JSON_KEY_VALUE_SEPARATOR_TOKENS
- FETCH_TOKENS
- ADD_CONSTRAINT_TOKENS
- ADD_CONSTRAINT_KEYWORDS
- DISTINCT_TOKENS
- UNNEST_OFFSET_ALIAS_TOKENS
- SELECT_START_TOKENS
- COPY_INTO_VARLEN_OPTIONS
- IS_PREDICATE_PRECEDENCE
- IS_PREDICATE_TOKENS
- IS_JSON_PREDICATE_KIND
- ODBC_DATETIME_LITERALS
- ON_CONDITION_TOKENS
- PRIVILEGE_FOLLOW_TOKENS
- DESCRIBE_STYLES
- SET_ASSIGNMENT_DELIMITERS
- ANALYZE_STYLES
- ANALYZE_EXPRESSION_PARSERS
- PARTITION_KEYWORDS
- AMBIGUOUS_ALIAS_TOKENS
- OPERATION_MODIFIERS
- RECURSIVE_CTE_SEARCH_KIND
- SECURITY_PROPERTY_KEYWORDS
- MODIFIABLES
- STRICT_CAST
- PREFIXED_PIVOT_COLUMNS
- IDENTIFY_PIVOT_STRINGS
- UNPIVOT_VALUE_COLUMNS_FIRST
- PIVOT_COLUMN_NAMING
- LOG_DEFAULTS_TO_LN
- TABLESAMPLE_CSV
- DEFAULT_SAMPLING_METHOD
- SET_REQUIRES_ASSIGNMENT_DELIMITER
- TRIM_PATTERN_FIRST
- STRING_ALIASES
- MODIFIERS_ATTACHED_TO_SET_OP
- SET_OP_MODIFIERS
- NO_PAREN_IF_COMMANDS
- JSON_ARROWS_REQUIRE_JSON_TYPE
- COLON_IS_VARIANT_EXTRACT
- COLON_CHAIN_IS_SINGLE_EXTRACT
- SUPPORTS_IMPLICIT_UNNEST
- SUPPORTS_DIGIT_PREFIXED_FIELD_NAMES
- INTERVAL_SPANS
- SUPPORTS_PARTITION_SELECTION
- WRAPPED_TRANSFORM_COLUMN_CONSTRAINT
- OPTIONAL_ALIAS_TOKEN_CTE
- ALTER_RENAME_REQUIRES_COLUMN
- ALTER_DROP_REQUIRES_COLUMN
- ALTER_TABLE_PARTITIONS
- ALTER_TABLE_MIXED_ACTIONS
- ALTER_TABLE_REQUIRES_ACTION
- ALTER_COLUMN_TYPE_REQUIRES_KEYWORD
- JOINS_HAVE_EQUAL_PRECEDENCE
- MAP_KEYS_ARE_ARBITRARY_EXPRESSIONS
- JSON_EXTRACT_REQUIRES_JSON_EXPRESSION
- ADD_JOIN_ON_TRUE
- SUPPORTS_OMITTED_INTERVAL_SPAN_UNIT
- ADJACENT_STRINGS_CANNOT_BE_CONNECTED
- SUPPORTS_NTH_VALUE_FROM_MODIFIER
- QUOTED_TYPES_TO_PRESERVE
- SHOW_TRIE
- SET_TRIE
- error_level
- error_message_context
- max_errors
- max_nodes
- dialect
- sql
- errors
- reset
- raise_error
- validate_expression
- check_errors
- expression
- parse_set_operation
- build_cast