1
0
Fork 0

Adding upstream version 11.7.1.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-13 15:51:35 +01:00
parent b4e0e3422e
commit 82a8846a46
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
144 changed files with 44104 additions and 39367 deletions

View file

@ -20,6 +20,9 @@ class TestTranspile(unittest.TestCase):
self.assertEqual(transpile(sql, **kwargs)[0], target)
def test_alias(self):
self.assertEqual(transpile("SELECT SUM(y) KEEP")[0], "SELECT SUM(y) AS KEEP")
self.assertEqual(transpile("SELECT 1 overwrite")[0], "SELECT 1 AS overwrite")
self.assertEqual(transpile("SELECT 1 is")[0], "SELECT 1 AS is")
self.assertEqual(transpile("SELECT 1 current_time")[0], "SELECT 1 AS current_time")
self.assertEqual(
transpile("SELECT 1 current_timestamp")[0], "SELECT 1 AS current_timestamp"
@ -87,6 +90,7 @@ class TestTranspile(unittest.TestCase):
self.validate("SELECT 3>=3", "SELECT 3 >= 3")
def test_comments(self):
self.validate("SELECT 1 /*/2 */", "SELECT 1 /* /2 */")
self.validate("SELECT */*comment*/", "SELECT * /* comment */")
self.validate(
"SELECT * FROM table /*comment 1*/ /*comment 2*/",
@ -200,6 +204,65 @@ FROM bar /* comment 5 */, tbl /* comment 6 */""",
read="mysql",
pretty=True,
)
self.validate(
"""
SELECT a FROM b
WHERE foo
-- comment 1
AND bar
-- comment 2
AND bla;
""",
"SELECT a FROM b WHERE foo AND /* comment 1 */ bar AND /* comment 2 */ bla",
)
self.validate(
"""
SELECT a FROM b WHERE foo
-- comment 1
""",
"SELECT a FROM b WHERE foo /* comment 1 */",
)
self.validate(
"""
select a from b
where foo
-- comment 1
and bar
-- comment 2
and bla
""",
"""SELECT
a
FROM b
WHERE
foo /* comment 1 */ AND bar AND bla /* comment 2 */""",
pretty=True,
)
self.validate(
"""
-- test
WITH v AS (
SELECT
1 AS literal
)
SELECT
*
FROM v
""",
"""/* test */
WITH v AS (
SELECT
1 AS literal
)
SELECT
*
FROM v""",
pretty=True,
)
self.validate(
"(/* 1 */ 1 ) /* 2 */",
"(1) /* 1 */ /* 2 */",
)
def test_types(self):
self.validate("INT 1", "CAST(1 AS INT)")
@ -288,7 +351,6 @@ FROM bar /* comment 5 */, tbl /* comment 6 */""",
"ALTER TABLE integers ADD k INTEGER",
"ALTER TABLE integers ADD COLUMN k INT",
)
self.validate("ALTER TABLE integers DROP k", "ALTER TABLE integers DROP COLUMN k")
self.validate(
"ALTER TABLE integers ALTER i SET DATA TYPE VARCHAR",
"ALTER TABLE integers ALTER COLUMN i TYPE VARCHAR",
@ -299,6 +361,11 @@ FROM bar /* comment 5 */, tbl /* comment 6 */""",
)
def test_time(self):
self.validate("INTERVAL '1 day'", "INTERVAL '1' day")
self.validate("INTERVAL '1 days' * 5", "INTERVAL '1' days * 5")
self.validate("5 * INTERVAL '1 day'", "5 * INTERVAL '1' day")
self.validate("INTERVAL 1 day", "INTERVAL '1' day")
self.validate("INTERVAL 2 months", "INTERVAL '2' months")
self.validate("TIMESTAMP '2020-01-01'", "CAST('2020-01-01' AS TIMESTAMP)")
self.validate("TIMESTAMP WITH TIME ZONE '2020-01-01'", "CAST('2020-01-01' AS TIMESTAMPTZ)")
self.validate(
@ -431,6 +498,13 @@ FROM bar /* comment 5 */, tbl /* comment 6 */""",
mock_logger.warning.assert_any_call("Applying array index offset (%s)", 1)
mock_logger.warning.assert_any_call("Applying array index offset (%s)", -1)
self.validate("x[x - 1]", "x[x - 1]", write="presto", identity=False)
self.validate(
"x[array_size(y) - 1]", "x[CARDINALITY(y) - 1 + 1]", write="presto", identity=False
)
self.validate("x[3 - 1]", "x[3]", write="presto", identity=False)
self.validate("MAP(a, b)[0]", "MAP(a, b)[0]", write="presto", identity=False)
def test_identify_lambda(self):
self.validate("x(y -> y)", 'X("y" -> "y")', identify=True)
@ -467,14 +541,14 @@ FROM bar /* comment 5 */, tbl /* comment 6 */""",
def test_error_level(self, logger):
invalid = "x + 1. ("
expected_messages = [
"Required keyword: 'expressions' missing for <class 'sqlglot.expressions.Aliases'>. Line 1, Col: 8.\n x + 1. \033[4m(\033[0m",
"Expecting ). Line 1, Col: 8.\n x + 1. \033[4m(\033[0m",
"Required keyword: 'expressions' missing for <class 'sqlglot.expressions.Aliases'>. Line 1, Col: 9.\n x + 1. \033[4m(\033[0m",
"Expecting ). Line 1, Col: 9.\n x + 1. \033[4m(\033[0m",
]
expected_errors = [
{
"description": "Required keyword: 'expressions' missing for <class 'sqlglot.expressions.Aliases'>",
"line": 1,
"col": 8,
"col": 9,
"start_context": "x + 1. ",
"highlight": "(",
"end_context": "",
@ -483,7 +557,7 @@ FROM bar /* comment 5 */, tbl /* comment 6 */""",
{
"description": "Expecting )",
"line": 1,
"col": 8,
"col": 9,
"start_context": "x + 1. ",
"highlight": "(",
"end_context": "",
@ -507,16 +581,16 @@ FROM bar /* comment 5 */, tbl /* comment 6 */""",
more_than_max_errors = "(((("
expected_messages = (
"Required keyword: 'this' missing for <class 'sqlglot.expressions.Paren'>. Line 1, Col: 4.\n (((\033[4m(\033[0m\n\n"
"Expecting ). Line 1, Col: 4.\n (((\033[4m(\033[0m\n\n"
"Expecting ). Line 1, Col: 4.\n (((\033[4m(\033[0m\n\n"
"Required keyword: 'this' missing for <class 'sqlglot.expressions.Paren'>. Line 1, Col: 5.\n (((\033[4m(\033[0m\n\n"
"Expecting ). Line 1, Col: 5.\n (((\033[4m(\033[0m\n\n"
"Expecting ). Line 1, Col: 5.\n (((\033[4m(\033[0m\n\n"
"... and 2 more"
)
expected_errors = [
{
"description": "Required keyword: 'this' missing for <class 'sqlglot.expressions.Paren'>",
"line": 1,
"col": 4,
"col": 5,
"start_context": "(((",
"highlight": "(",
"end_context": "",
@ -525,7 +599,7 @@ FROM bar /* comment 5 */, tbl /* comment 6 */""",
{
"description": "Expecting )",
"line": 1,
"col": 4,
"col": 5,
"start_context": "(((",
"highlight": "(",
"end_context": "",