Merging upstream version 18.5.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
ad94fdbf21
commit
11b24b93ea
67 changed files with 32690 additions and 32450 deletions
|
@ -6,8 +6,10 @@ from sqlglot import exp, generator, parser, tokens, transforms
|
|||
from sqlglot.dialects.dialect import (
|
||||
Dialect,
|
||||
arrow_json_extract_scalar_sql,
|
||||
date_add_interval_sql,
|
||||
datestrtodate_sql,
|
||||
format_time_lambda,
|
||||
isnull_to_is_null,
|
||||
json_keyvalue_comma_sql,
|
||||
locate_to_strposition,
|
||||
max_or_greatest,
|
||||
|
@ -99,6 +101,7 @@ class MySQL(Dialect):
|
|||
|
||||
TIME_FORMAT = "'%Y-%m-%d %T'"
|
||||
DPIPE_IS_STRING_CONCAT = False
|
||||
SUPPORTS_USER_DEFINED_TYPES = False
|
||||
|
||||
# https://prestodb.io/docs/current/functions/datetime.html#mysql-date-functions
|
||||
TIME_MAPPING = {
|
||||
|
@ -129,6 +132,7 @@ class MySQL(Dialect):
|
|||
"ENUM": TokenType.ENUM,
|
||||
"FORCE": TokenType.FORCE,
|
||||
"IGNORE": TokenType.IGNORE,
|
||||
"LOCK TABLES": TokenType.COMMAND,
|
||||
"LONGBLOB": TokenType.LONGBLOB,
|
||||
"LONGTEXT": TokenType.LONGTEXT,
|
||||
"MEDIUMBLOB": TokenType.MEDIUMBLOB,
|
||||
|
@ -141,6 +145,7 @@ class MySQL(Dialect):
|
|||
"START": TokenType.BEGIN,
|
||||
"SIGNED": TokenType.BIGINT,
|
||||
"SIGNED INTEGER": TokenType.BIGINT,
|
||||
"UNLOCK TABLES": TokenType.COMMAND,
|
||||
"UNSIGNED": TokenType.UBIGINT,
|
||||
"UNSIGNED INTEGER": TokenType.UBIGINT,
|
||||
"YEAR": TokenType.YEAR,
|
||||
|
@ -193,8 +198,6 @@ class MySQL(Dialect):
|
|||
COMMANDS = tokens.Tokenizer.COMMANDS - {TokenType.SHOW}
|
||||
|
||||
class Parser(parser.Parser):
|
||||
SUPPORTS_USER_DEFINED_TYPES = False
|
||||
|
||||
FUNC_TOKENS = {
|
||||
*parser.Parser.FUNC_TOKENS,
|
||||
TokenType.DATABASE,
|
||||
|
@ -233,7 +236,12 @@ class MySQL(Dialect):
|
|||
"DATE_FORMAT": format_time_lambda(exp.TimeToStr, "mysql"),
|
||||
"DATE_SUB": parse_date_delta_with_interval(exp.DateSub),
|
||||
"INSTR": lambda args: exp.StrPosition(substr=seq_get(args, 1), this=seq_get(args, 0)),
|
||||
"ISNULL": isnull_to_is_null,
|
||||
"LOCATE": locate_to_strposition,
|
||||
"MONTHNAME": lambda args: exp.TimeToStr(
|
||||
this=seq_get(args, 0),
|
||||
format=exp.Literal.string("%B"),
|
||||
),
|
||||
"STR_TO_DATE": _str_to_date,
|
||||
}
|
||||
|
||||
|
@ -374,7 +382,7 @@ class MySQL(Dialect):
|
|||
self._match_texts({"INDEX", "KEY"})
|
||||
|
||||
this = self._parse_id_var(any_token=False)
|
||||
type_ = self._match(TokenType.USING) and self._advance_any() and self._prev.text
|
||||
index_type = self._match(TokenType.USING) and self._advance_any() and self._prev.text
|
||||
schema = self._parse_schema()
|
||||
|
||||
options = []
|
||||
|
@ -414,7 +422,7 @@ class MySQL(Dialect):
|
|||
this=this,
|
||||
schema=schema,
|
||||
kind=kind,
|
||||
type=type_,
|
||||
index_type=index_type,
|
||||
options=options,
|
||||
)
|
||||
|
||||
|
@ -558,6 +566,8 @@ class MySQL(Dialect):
|
|||
exp.StrToTime: _str_to_date_sql,
|
||||
exp.Stuff: rename_func("INSERT"),
|
||||
exp.TableSample: no_tablesample_sql,
|
||||
exp.TimestampAdd: date_add_interval_sql("DATE", "ADD"),
|
||||
exp.TimestampSub: date_add_interval_sql("DATE", "SUB"),
|
||||
exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
|
||||
exp.TimeStrToTime: lambda self, e: self.sql(exp.cast(e.this, "datetime", copy=True)),
|
||||
exp.TimeToStr: lambda self, e: self.func("DATE_FORMAT", e.this, self.format_time(e)),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue