sqlglot.dialects.starrocks
1from __future__ import annotations 2 3from sqlglot import exp 4from sqlglot.dialects.dialect import AliasPrecedence, UsingColumnOrder 5from sqlglot.dialects.mysql import MySQL 6from sqlglot.generators.starrocks import StarRocksGenerator 7from sqlglot.parsers.starrocks import StarRocksParser 8from sqlglot.tokens import TokenType 9 10 11class StarRocks(MySQL): 12 STRICT_JSON_PATH_SYNTAX = False 13 INDEX_OFFSET = 1 14 COLUMN_ALIAS_PRECEDENCE = { 15 **MySQL.COLUMN_ALIAS_PRECEDENCE, 16 exp.Having: AliasPrecedence.SOURCE, 17 } 18 USING_COLUMN_ORDER = UsingColumnOrder.USING_LIST 19 20 DEFAULT_FUNCTIONS_COLUMN_NAMES = { 21 exp.GenerateSeries: "generate_series", 22 } 23 24 class Tokenizer(MySQL.Tokenizer): 25 # Unlike MySQL, "#" doesn't start a comment 26 COMMENTS = ["--", ("/*", "*/")] 27 DASH_COMMENT_REQUIRES_BOUNDARY = False 28 COMMENTS_TERMINATE_AT_NEWLINE_ONLY = False 29 30 KEYWORDS = { 31 **MySQL.Tokenizer.KEYWORDS, 32 "ADD BACKEND BLACKLIST": TokenType.COMMAND, 33 "ADD COMPUTE NODE BLACKLIST": TokenType.COMMAND, 34 "ADD SQL DIGEST BLACKLIST": TokenType.COMMAND, 35 "ADD SQLBLACKLIST": TokenType.COMMAND, 36 "ADMIN": TokenType.COMMAND, 37 "BACKUP": TokenType.COMMAND, 38 "CANCEL": TokenType.COMMAND, 39 "DEALLOCATE": TokenType.COMMAND, 40 "DELETE BACKEND BLACKLIST": TokenType.COMMAND, 41 "DELETE COMPUTE NODE BLACKLIST": TokenType.COMMAND, 42 "DELETE SQL DIGEST BLACKLIST": TokenType.COMMAND, 43 "DELETE SQLBLACKLIST": TokenType.COMMAND, 44 "EXPORT": TokenType.COMMAND, 45 "HLL": TokenType.HLLSKETCH, 46 "INSTALL": TokenType.COMMAND, 47 "LARGEINT": TokenType.INT128, 48 "PAUSE": TokenType.COMMAND, 49 "RECOVER": TokenType.COMMAND, 50 "REFRESH": TokenType.REFRESH, 51 "RESTORE": TokenType.COMMAND, 52 "RESUME": TokenType.COMMAND, 53 "STOP": TokenType.COMMAND, 54 "SUBMIT": TokenType.COMMAND, 55 "TRANSLATE TRINO": TokenType.COMMAND, 56 "UNINSTALL": TokenType.COMMAND, 57 } 58 KEYWORDS.pop("IGNORE") 59 KEYWORDS.pop("#>") 60 KEYWORDS.pop("#>>") 61 62 Parser = StarRocksParser 63 64 Generator = StarRocksGenerator
12class StarRocks(MySQL): 13 STRICT_JSON_PATH_SYNTAX = False 14 INDEX_OFFSET = 1 15 COLUMN_ALIAS_PRECEDENCE = { 16 **MySQL.COLUMN_ALIAS_PRECEDENCE, 17 exp.Having: AliasPrecedence.SOURCE, 18 } 19 USING_COLUMN_ORDER = UsingColumnOrder.USING_LIST 20 21 DEFAULT_FUNCTIONS_COLUMN_NAMES = { 22 exp.GenerateSeries: "generate_series", 23 } 24 25 class Tokenizer(MySQL.Tokenizer): 26 # Unlike MySQL, "#" doesn't start a comment 27 COMMENTS = ["--", ("/*", "*/")] 28 DASH_COMMENT_REQUIRES_BOUNDARY = False 29 COMMENTS_TERMINATE_AT_NEWLINE_ONLY = False 30 31 KEYWORDS = { 32 **MySQL.Tokenizer.KEYWORDS, 33 "ADD BACKEND BLACKLIST": TokenType.COMMAND, 34 "ADD COMPUTE NODE BLACKLIST": TokenType.COMMAND, 35 "ADD SQL DIGEST BLACKLIST": TokenType.COMMAND, 36 "ADD SQLBLACKLIST": TokenType.COMMAND, 37 "ADMIN": TokenType.COMMAND, 38 "BACKUP": TokenType.COMMAND, 39 "CANCEL": TokenType.COMMAND, 40 "DEALLOCATE": TokenType.COMMAND, 41 "DELETE BACKEND BLACKLIST": TokenType.COMMAND, 42 "DELETE COMPUTE NODE BLACKLIST": TokenType.COMMAND, 43 "DELETE SQL DIGEST BLACKLIST": TokenType.COMMAND, 44 "DELETE SQLBLACKLIST": TokenType.COMMAND, 45 "EXPORT": TokenType.COMMAND, 46 "HLL": TokenType.HLLSKETCH, 47 "INSTALL": TokenType.COMMAND, 48 "LARGEINT": TokenType.INT128, 49 "PAUSE": TokenType.COMMAND, 50 "RECOVER": TokenType.COMMAND, 51 "REFRESH": TokenType.REFRESH, 52 "RESTORE": TokenType.COMMAND, 53 "RESUME": TokenType.COMMAND, 54 "STOP": TokenType.COMMAND, 55 "SUBMIT": TokenType.COMMAND, 56 "TRANSLATE TRINO": TokenType.COMMAND, 57 "UNINSTALL": TokenType.COMMAND, 58 } 59 KEYWORDS.pop("IGNORE") 60 KEYWORDS.pop("#>") 61 KEYWORDS.pop("#>>") 62 63 Parser = StarRocksParser 64 65 Generator = StarRocksGenerator
Whether failing to parse a JSON path expression using the JSONPath dialect will log a warning.
Alias lookup policies for HAVING, QUALIFY, ORDER BY and DISTINCT ON.
Unspecified clauses prefer aliases. GROUPED_SOURCE prefers grouped input columns and input columns inside aggregates, then aliases. MERGED_SOURCE prefers merged USING keys over other input columns. Standalone ORDER BY / DISTINCT ON names prefer aliases regardless of their clause's expression precedence.
Where star expansion places the columns of a USING or NATURAL join.
Given a(a_id, k1, k2) and b(k2, b_id, k1), SELECT * FROM a JOIN b USING (k2, k1) returns:
USING_LIST:k2, k1, a_id, b_idLEFT_TABLE:k1, k2, a_id, b_idIN_PLACE:a_id, k1, k2, b_id
When join columns come first, this applies at every join: each USING join moves its columns ahead of all the columns to its left.
Maps function expressions to their default output column name(s).
For example, in Postgres, generate_series function outputs a column named "generate_series" by default, so we map the ExplodingGenerateSeries expression to "generate_series" string.
Mapping of an escaped sequence (\n) to its unescaped version (
).
Whether string literals support escape sequences (e.g. \n). Set by the metaclass based on the tokenizer's STRING_ESCAPES.
Whether byte string literals support escape sequences. Set by the metaclass based on the tokenizer's BYTE_STRING_ESCAPES.
Mapping of an identifier escape char (\) to its escaped version (\\). Set by the metaclass based on the tokenizer's IDENTIFIER_ESCAPES.
Inherited Members
- sqlglot.dialects.mysql.MySQL
- PROMOTE_TO_INFERRED_DATETIME_TYPE
- IDENTIFIERS_CAN_START_WITH_DIGIT
- NORMALIZATION_STRATEGY
- TIME_FORMAT
- DPIPE_IS_STRING_CONCAT
- CONCAT_WS_COALESCE
- SUPPORTS_USER_DEFINED_TYPES
- SAFE_DIVISION
- SAFE_TO_ELIMINATE_DOUBLE_NEGATION
- LEAST_GREATEST_IGNORES_NULLS
- EXPRESSION_METADATA
- TIME_MAPPING
25 class Tokenizer(MySQL.Tokenizer): 26 # Unlike MySQL, "#" doesn't start a comment 27 COMMENTS = ["--", ("/*", "*/")] 28 DASH_COMMENT_REQUIRES_BOUNDARY = False 29 COMMENTS_TERMINATE_AT_NEWLINE_ONLY = False 30 31 KEYWORDS = { 32 **MySQL.Tokenizer.KEYWORDS, 33 "ADD BACKEND BLACKLIST": TokenType.COMMAND, 34 "ADD COMPUTE NODE BLACKLIST": TokenType.COMMAND, 35 "ADD SQL DIGEST BLACKLIST": TokenType.COMMAND, 36 "ADD SQLBLACKLIST": TokenType.COMMAND, 37 "ADMIN": TokenType.COMMAND, 38 "BACKUP": TokenType.COMMAND, 39 "CANCEL": TokenType.COMMAND, 40 "DEALLOCATE": TokenType.COMMAND, 41 "DELETE BACKEND BLACKLIST": TokenType.COMMAND, 42 "DELETE COMPUTE NODE BLACKLIST": TokenType.COMMAND, 43 "DELETE SQL DIGEST BLACKLIST": TokenType.COMMAND, 44 "DELETE SQLBLACKLIST": TokenType.COMMAND, 45 "EXPORT": TokenType.COMMAND, 46 "HLL": TokenType.HLLSKETCH, 47 "INSTALL": TokenType.COMMAND, 48 "LARGEINT": TokenType.INT128, 49 "PAUSE": TokenType.COMMAND, 50 "RECOVER": TokenType.COMMAND, 51 "REFRESH": TokenType.REFRESH, 52 "RESTORE": TokenType.COMMAND, 53 "RESUME": TokenType.COMMAND, 54 "STOP": TokenType.COMMAND, 55 "SUBMIT": TokenType.COMMAND, 56 "TRANSLATE TRINO": TokenType.COMMAND, 57 "UNINSTALL": TokenType.COMMAND, 58 } 59 KEYWORDS.pop("IGNORE") 60 KEYWORDS.pop("#>") 61 KEYWORDS.pop("#>>")
Inherited Members
- sqlglot.tokens.Tokenizer
- Tokenizer
- SINGLE_TOKENS
- BYTE_STRINGS
- NATIONAL_RAW_STRINGS
- RAW_STRINGS
- HEREDOC_STRINGS
- UNICODE_STRINGS
- VAR_SINGLE_TOKENS
- IDENTIFIER_ESCAPES
- HEREDOC_TAG_IS_IDENTIFIER
- HEREDOC_STRING_ALTERNATIVE
- STRING_ESCAPES_ALLOWED_IN_RAW_STRINGS
- NUMERIC_ESCAPES
- NUMERIC_ESCAPES_ARE_BYTES
- LONE_SURROGATE_REPLACEMENT
- HINT_START
- TOKENS_PRECEDING_HINT
- COMMAND_PREFIX_TOKENS
- NUMERIC_LITERALS
- NUMBERS_CAN_HAVE_DECIMALS
- dialect
- tokenize
- sql
- size
- tokens