Merging upstream version 20.9.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
9421b254ec
commit
37a231f554
144 changed files with 78309 additions and 59609 deletions
|
@ -104,6 +104,16 @@ class TestDialect(Validator):
|
|||
"Please use the correct format: 'dialect [, k1 = v2 [, ...]]'.",
|
||||
)
|
||||
|
||||
with self.assertRaises(ValueError) as cm:
|
||||
Dialect.get_or_raise("myqsl")
|
||||
|
||||
self.assertEqual(str(cm.exception), "Unknown dialect 'myqsl'. Did you mean mysql?")
|
||||
|
||||
with self.assertRaises(ValueError) as cm:
|
||||
Dialect.get_or_raise("asdfjasodiufjsd")
|
||||
|
||||
self.assertEqual(str(cm.exception), "Unknown dialect 'asdfjasodiufjsd'.")
|
||||
|
||||
def test_compare_dialects(self):
|
||||
bigquery_class = Dialect["bigquery"]
|
||||
bigquery_object = BigQuery()
|
||||
|
@ -767,32 +777,32 @@ class TestDialect(Validator):
|
|||
"duckdb": "x + INTERVAL 1 DAY",
|
||||
"hive": "DATE_ADD(x, 1)",
|
||||
"mysql": "DATE_ADD(x, INTERVAL 1 DAY)",
|
||||
"presto": "DATE_ADD('day', 1, x)",
|
||||
"presto": "DATE_ADD('DAY', 1, x)",
|
||||
"spark": "DATE_ADD(x, 1)",
|
||||
"starrocks": "DATE_ADD(x, INTERVAL 1 DAY)",
|
||||
"doris": "DATE_ADD(x, INTERVAL 1 DAY)",
|
||||
},
|
||||
)
|
||||
self.validate_all(
|
||||
"DATE_TRUNC('day', x)",
|
||||
"DATE_TRUNC('DAY', x)",
|
||||
read={
|
||||
"bigquery": "DATE_TRUNC(x, day)",
|
||||
"spark": "TRUNC(x, 'day')",
|
||||
},
|
||||
write={
|
||||
"bigquery": "DATE_TRUNC(x, day)",
|
||||
"duckdb": "DATE_TRUNC('day', x)",
|
||||
"bigquery": "DATE_TRUNC(x, DAY)",
|
||||
"duckdb": "DATE_TRUNC('DAY', x)",
|
||||
"mysql": "DATE(x)",
|
||||
"presto": "DATE_TRUNC('day', x)",
|
||||
"postgres": "DATE_TRUNC('day', x)",
|
||||
"snowflake": "DATE_TRUNC('day', x)",
|
||||
"starrocks": "DATE_TRUNC('day', x)",
|
||||
"spark": "TRUNC(x, 'day')",
|
||||
"doris": "DATE_TRUNC(x, 'day')",
|
||||
"presto": "DATE_TRUNC('DAY', x)",
|
||||
"postgres": "DATE_TRUNC('DAY', x)",
|
||||
"snowflake": "DATE_TRUNC('DAY', x)",
|
||||
"starrocks": "DATE_TRUNC('DAY', x)",
|
||||
"spark": "TRUNC(x, 'DAY')",
|
||||
"doris": "DATE_TRUNC(x, 'DAY')",
|
||||
},
|
||||
)
|
||||
self.validate_all(
|
||||
"TIMESTAMP_TRUNC(x, day)",
|
||||
"TIMESTAMP_TRUNC(x, DAY)",
|
||||
read={
|
||||
"bigquery": "TIMESTAMP_TRUNC(x, day)",
|
||||
"duckdb": "DATE_TRUNC('day', x)",
|
||||
|
@ -805,18 +815,18 @@ class TestDialect(Validator):
|
|||
},
|
||||
)
|
||||
self.validate_all(
|
||||
"DATE_TRUNC('day', CAST(x AS DATE))",
|
||||
"DATE_TRUNC('DAY', CAST(x AS DATE))",
|
||||
read={
|
||||
"presto": "DATE_TRUNC('day', x::DATE)",
|
||||
"snowflake": "DATE_TRUNC('day', x::DATE)",
|
||||
"presto": "DATE_TRUNC('DAY', x::DATE)",
|
||||
"snowflake": "DATE_TRUNC('DAY', x::DATE)",
|
||||
},
|
||||
)
|
||||
self.validate_all(
|
||||
"TIMESTAMP_TRUNC(CAST(x AS DATE), day)",
|
||||
"TIMESTAMP_TRUNC(CAST(x AS DATE), DAY)",
|
||||
read={"postgres": "DATE_TRUNC('day', x::DATE)"},
|
||||
)
|
||||
self.validate_all(
|
||||
"TIMESTAMP_TRUNC(CAST(x AS DATE), day)",
|
||||
"TIMESTAMP_TRUNC(CAST(x AS DATE), DAY)",
|
||||
read={"starrocks": "DATE_TRUNC('day', x::DATE)"},
|
||||
)
|
||||
self.validate_all(
|
||||
|
@ -850,23 +860,23 @@ class TestDialect(Validator):
|
|||
},
|
||||
)
|
||||
self.validate_all(
|
||||
"DATE_TRUNC('year', x)",
|
||||
"DATE_TRUNC('YEAR', x)",
|
||||
read={
|
||||
"bigquery": "DATE_TRUNC(x, year)",
|
||||
"spark": "TRUNC(x, 'year')",
|
||||
},
|
||||
write={
|
||||
"bigquery": "DATE_TRUNC(x, year)",
|
||||
"bigquery": "DATE_TRUNC(x, YEAR)",
|
||||
"mysql": "STR_TO_DATE(CONCAT(YEAR(x), ' 1 1'), '%Y %c %e')",
|
||||
"postgres": "DATE_TRUNC('year', x)",
|
||||
"snowflake": "DATE_TRUNC('year', x)",
|
||||
"starrocks": "DATE_TRUNC('year', x)",
|
||||
"spark": "TRUNC(x, 'year')",
|
||||
"doris": "DATE_TRUNC(x, 'year')",
|
||||
"postgres": "DATE_TRUNC('YEAR', x)",
|
||||
"snowflake": "DATE_TRUNC('YEAR', x)",
|
||||
"starrocks": "DATE_TRUNC('YEAR', x)",
|
||||
"spark": "TRUNC(x, 'YEAR')",
|
||||
"doris": "DATE_TRUNC(x, 'YEAR')",
|
||||
},
|
||||
)
|
||||
self.validate_all(
|
||||
"TIMESTAMP_TRUNC(x, year)",
|
||||
"TIMESTAMP_TRUNC(x, YEAR)",
|
||||
read={
|
||||
"bigquery": "TIMESTAMP_TRUNC(x, year)",
|
||||
"postgres": "DATE_TRUNC(year, x)",
|
||||
|
@ -875,9 +885,9 @@ class TestDialect(Validator):
|
|||
"starrocks": "DATE_TRUNC('year', x)",
|
||||
},
|
||||
write={
|
||||
"bigquery": "TIMESTAMP_TRUNC(x, year)",
|
||||
"spark": "DATE_TRUNC('year', x)",
|
||||
"doris": "DATE_TRUNC(x, 'year')",
|
||||
"bigquery": "TIMESTAMP_TRUNC(x, YEAR)",
|
||||
"spark": "DATE_TRUNC('YEAR', x)",
|
||||
"doris": "DATE_TRUNC(x, 'YEAR')",
|
||||
},
|
||||
)
|
||||
self.validate_all(
|
||||
|
@ -952,7 +962,7 @@ class TestDialect(Validator):
|
|||
"drill": "DATE_ADD(CAST('2020-01-01' AS DATE), INTERVAL 1 DAY)",
|
||||
"duckdb": "CAST('2020-01-01' AS DATE) + INTERVAL 1 DAY",
|
||||
"hive": "DATE_ADD(CAST('2020-01-01' AS DATE), 1)",
|
||||
"presto": "DATE_ADD('day', 1, CAST('2020-01-01' AS DATE))",
|
||||
"presto": "DATE_ADD('DAY', 1, CAST('2020-01-01' AS DATE))",
|
||||
"spark": "DATE_ADD(CAST('2020-01-01' AS DATE), 1)",
|
||||
},
|
||||
)
|
||||
|
@ -1003,7 +1013,7 @@ class TestDialect(Validator):
|
|||
)
|
||||
self.validate_all(
|
||||
f"{unit}(TS_OR_DS_TO_DATE(x))",
|
||||
read={
|
||||
write={
|
||||
dialect: f"{unit}(x)"
|
||||
for dialect in (
|
||||
"mysql",
|
||||
|
@ -1011,7 +1021,10 @@ class TestDialect(Validator):
|
|||
"starrocks",
|
||||
)
|
||||
},
|
||||
write={
|
||||
)
|
||||
self.validate_all(
|
||||
f"{unit}(CAST(x AS DATE))",
|
||||
read={
|
||||
dialect: f"{unit}(x)"
|
||||
for dialect in (
|
||||
"mysql",
|
||||
|
@ -1670,6 +1683,28 @@ class TestDialect(Validator):
|
|||
)
|
||||
|
||||
def test_alias(self):
|
||||
self.validate_all(
|
||||
'SELECT 1 AS "foo"',
|
||||
read={
|
||||
"mysql": "SELECT 1 'foo'",
|
||||
"sqlite": "SELECT 1 'foo'",
|
||||
"tsql": "SELECT 1 'foo'",
|
||||
},
|
||||
)
|
||||
|
||||
for dialect in (
|
||||
"presto",
|
||||
"hive",
|
||||
"postgres",
|
||||
"clickhouse",
|
||||
"bigquery",
|
||||
"snowflake",
|
||||
"duckdb",
|
||||
):
|
||||
with self.subTest(f"string alias: {dialect}"):
|
||||
with self.assertRaises(ParseError):
|
||||
parse_one("SELECT 1 'foo'", dialect=dialect)
|
||||
|
||||
self.validate_all(
|
||||
"SELECT a AS b FROM x GROUP BY b",
|
||||
write={
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue