1
0
Fork 0

Merging upstream version 23.7.0.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-13 21:30:28 +01:00
parent ebba7c6a18
commit d26905e4af
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
187 changed files with 86502 additions and 71397 deletions

View file

@ -62,10 +62,28 @@ class TestTranspile(unittest.TestCase):
def test_some(self):
self.validate(
"SELECT * FROM x WHERE a = SOME (SELECT 1)",
"SELECT * FROM x WHERE a = ANY (SELECT 1)",
"SELECT * FROM x WHERE a = ANY(SELECT 1)",
)
def test_leading_comma(self):
self.validate(
"SELECT a, b, c FROM (SELECT a, b, c FROM t)",
"SELECT\n"
" a\n"
" , b\n"
" , c\n"
"FROM (\n"
" SELECT\n"
" a\n"
" , b\n"
" , c\n"
" FROM t\n"
")",
leading_comma=True,
pretty=True,
pad=4,
indent=4,
)
self.validate(
"SELECT FOO, BAR, BAZ",
"SELECT\n FOO\n , BAR\n , BAZ",
@ -275,7 +293,7 @@ FROM bar /* comment 5 */, tbl /* comment 6 */""",
FROM b
/* where */
WHERE
foo /* comment 1 */ AND bar AND bla /* comment 2 */""",
foo AND /* comment 1 */ bar AND /* comment 2 */ bla""",
pretty=True,
)
self.validate(
@ -428,7 +446,8 @@ FROM dw_1_dw_1_1.exactonline_2.transactionlines""",
"""SELECT
'hotel1' AS hotel,
*
FROM dw_1_dw_1_1.exactonline_1.transactionlines /*
FROM dw_1_dw_1_1.exactonline_1.transactionlines
/*
UNION ALL
SELECT
'Thon Partner Hotel Jølster' AS hotel,
@ -479,6 +498,32 @@ SELECT
FROM base""",
pretty=True,
)
self.validate(
"""-- comment
SOME_FUNC(arg IGNORE NULLS)
OVER (PARTITION BY foo ORDER BY bla) AS col""",
"SOME_FUNC(arg IGNORE NULLS) OVER (PARTITION BY foo ORDER BY bla) AS col /* comment */",
pretty=True,
)
self.validate(
"""
SELECT *
FROM x
INNER JOIN y
-- inner join z
LEFT JOIN z using (id)
using (id)
""",
"""SELECT
*
FROM x
INNER JOIN y
/* inner join z */
LEFT JOIN z
USING (id)
USING (id)""",
pretty=True,
)
def test_types(self):
self.validate("INT 1", "CAST(1 AS INT)")
@ -676,7 +721,11 @@ FROM base""",
)
self.validate("STR_TO_TIME('x', 'y')", "DATE_PARSE('x', 'y')", write="presto")
self.validate("STR_TO_UNIX('x', 'y')", "TO_UNIXTIME(DATE_PARSE('x', 'y'))", write="presto")
self.validate(
"STR_TO_UNIX('x', 'y')",
"TO_UNIXTIME(COALESCE(TRY(DATE_PARSE(CAST('x' AS VARCHAR), 'y')), PARSE_DATETIME(CAST('x' AS VARCHAR), 'y')))",
write="presto",
)
self.validate("TIME_TO_STR(x, 'y')", "DATE_FORMAT(x, 'y')", write="presto")
self.validate("TIME_TO_UNIX(x)", "TO_UNIXTIME(x)", write="presto")
self.validate(
@ -714,7 +763,10 @@ FROM base""",
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
"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)
@ -758,7 +810,6 @@ FROM base""",
"CALL catalog.system.iceberg_procedure_name(named_arg_1 => 'arg_1', named_arg_2 => 'arg_2')",
"COMMENT ON ACCESS METHOD gin IS 'GIN index access method'",
"CREATE OR REPLACE STAGE",
"CREATE SET GLOBAL TEMPORARY TABLE a, NO BEFORE JOURNAL, NO AFTER JOURNAL, MINIMUM DATABLOCKSIZE, BLOCKCOMPRESSION=NEVER (a INT)",
"EXECUTE statement",
"EXPLAIN SELECT * FROM x",
"GRANT INSERT ON foo TO bla",
@ -904,3 +955,8 @@ FROM base""",
with self.assertRaises(UnsupportedError) as ctx:
unsupported(ErrorLevel.IMMEDIATE)
self.assertEqual(str(ctx.exception).count(error), 1)
def test_recursion(self):
sql = "1 AND 2 OR 3 AND " * 1000
sql += "4"
self.assertEqual(len(parse_one(sql).sql()), 17001)