diff options
Diffstat (limited to 'sqlglot/dialects/mysql.py')
-rw-r--r-- | sqlglot/dialects/mysql.py | 72 |
1 files changed, 2 insertions, 70 deletions
diff --git a/sqlglot/dialects/mysql.py b/sqlglot/dialects/mysql.py index a831235..1e2cfa3 100644 --- a/sqlglot/dialects/mysql.py +++ b/sqlglot/dialects/mysql.py @@ -177,7 +177,7 @@ class MySQL(Dialect): "@@": TokenType.SESSION_PARAMETER, } - COMMANDS = tokens.Tokenizer.COMMANDS - {TokenType.SET, TokenType.SHOW} + COMMANDS = tokens.Tokenizer.COMMANDS - {TokenType.SHOW} class Parser(parser.Parser): FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS, TokenType.SCHEMA, TokenType.DATABASE} # type: ignore @@ -211,7 +211,6 @@ class MySQL(Dialect): STATEMENT_PARSERS = { **parser.Parser.STATEMENT_PARSERS, # type: ignore TokenType.SHOW: lambda self: self._parse_show(), - TokenType.SET: lambda self: self._parse_set(), } SHOW_PARSERS = { @@ -269,15 +268,12 @@ class MySQL(Dialect): } SET_PARSERS = { - "GLOBAL": lambda self: self._parse_set_item_assignment("GLOBAL"), + **parser.Parser.SET_PARSERS, "PERSIST": lambda self: self._parse_set_item_assignment("PERSIST"), "PERSIST_ONLY": lambda self: self._parse_set_item_assignment("PERSIST_ONLY"), - "SESSION": lambda self: self._parse_set_item_assignment("SESSION"), - "LOCAL": lambda self: self._parse_set_item_assignment("LOCAL"), "CHARACTER SET": lambda self: self._parse_set_item_charset("CHARACTER SET"), "CHARSET": lambda self: self._parse_set_item_charset("CHARACTER SET"), "NAMES": lambda self: self._parse_set_item_names(), - "TRANSACTION": lambda self: self._parse_set_transaction(), } PROFILE_TYPES = { @@ -292,15 +288,6 @@ class MySQL(Dialect): "SWAPS", } - TRANSACTION_CHARACTERISTICS = { - "ISOLATION LEVEL REPEATABLE READ", - "ISOLATION LEVEL READ COMMITTED", - "ISOLATION LEVEL READ UNCOMMITTED", - "ISOLATION LEVEL SERIALIZABLE", - "READ WRITE", - "READ ONLY", - } - def _parse_show_mysql(self, this, target=False, full=None, global_=None): if target: if isinstance(target, str): @@ -354,12 +341,6 @@ class MySQL(Dialect): **{"global": global_}, ) - def _parse_var_from_options(self, options): - for option in options: - if self._match_text_seq(*option.split(" ")): - return exp.Var(this=option) - return None - def _parse_oldstyle_limit(self): limit = None offset = None @@ -372,30 +353,6 @@ class MySQL(Dialect): offset = parts[0] return offset, limit - def _default_parse_set_item(self): - return self._parse_set_item_assignment(kind=None) - - def _parse_set_item_assignment(self, kind): - if kind in {"GLOBAL", "SESSION"} and self._match_text_seq("TRANSACTION"): - return self._parse_set_transaction(global_=kind == "GLOBAL") - - left = self._parse_primary() or self._parse_id_var() - if not self._match(TokenType.EQ): - self.raise_error("Expected =") - right = self._parse_statement() or self._parse_id_var() - - this = self.expression( - exp.EQ, - this=left, - expression=right, - ) - - return self.expression( - exp.SetItem, - this=this, - kind=kind, - ) - def _parse_set_item_charset(self, kind): this = self._parse_string() or self._parse_id_var() @@ -418,18 +375,6 @@ class MySQL(Dialect): kind="NAMES", ) - def _parse_set_transaction(self, global_=False): - self._match_text_seq("TRANSACTION") - characteristics = self._parse_csv( - lambda: self._parse_var_from_options(self.TRANSACTION_CHARACTERISTICS) - ) - return self.expression( - exp.SetItem, - expressions=characteristics, - kind="TRANSACTION", - **{"global": global_}, - ) - class Generator(generator.Generator): LOCKING_READS_SUPPORTED = True NULL_ORDERING_SUPPORTED = False @@ -523,16 +468,3 @@ class MySQL(Dialect): limit_offset = f"{offset}, {limit}" if offset else limit return f" LIMIT {limit_offset}" return "" - - def setitem_sql(self, expression): - kind = self.sql(expression, "kind") - kind = f"{kind} " if kind else "" - this = self.sql(expression, "this") - expressions = self.expressions(expression) - collate = self.sql(expression, "collate") - collate = f" COLLATE {collate}" if collate else "" - global_ = "GLOBAL " if expression.args.get("global") else "" - return f"{global_}{kind}{this}{expressions}{collate}" - - def set_sql(self, expression): - return f"SET {self.expressions(expression)}" |