1
0
Fork 0

Adding upstream version 20.3.0.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-13 21:17:33 +01:00
parent 5bd573dda1
commit fd9de5e4cb
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
132 changed files with 55125 additions and 51576 deletions

View file

@ -379,6 +379,16 @@ class TestPresto(Validator):
"presto": "TIMESTAMP(x, '12:00:00')",
},
)
self.validate_all(
"DATE_ADD('DAY', CAST(x AS BIGINT), y)",
write={
"presto": "DATE_ADD('DAY', CAST(x AS BIGINT), y)",
},
read={
"presto": "DATE_ADD('DAY', x, y)",
},
)
self.validate_identity("DATE_ADD('DAY', 1, y)")
def test_ddl(self):
self.validate_all(
@ -462,10 +472,10 @@ class TestPresto(Validator):
)
self.validate_all(
'CREATE TABLE IF NOT EXISTS x ("cola" INTEGER, "ds" TEXT) WITH (PARTITIONED BY=("ds"))',
"""CREATE TABLE IF NOT EXISTS x ("cola" INTEGER, "ds" TEXT) COMMENT 'comment' WITH (PARTITIONED BY=("ds"))""",
write={
"spark": "CREATE TABLE IF NOT EXISTS x (`cola` INT, `ds` STRING) PARTITIONED BY (`ds`)",
"presto": """CREATE TABLE IF NOT EXISTS x ("cola" INTEGER, "ds" VARCHAR) WITH (PARTITIONED_BY=ARRAY['ds'])""",
"spark": "CREATE TABLE IF NOT EXISTS x (`cola` INT, `ds` STRING) COMMENT 'comment' PARTITIONED BY (`ds`)",
"presto": """CREATE TABLE IF NOT EXISTS x ("cola" INTEGER, "ds" VARCHAR) COMMENT 'comment' WITH (PARTITIONED_BY=ARRAY['ds'])""",
},
)
@ -534,26 +544,18 @@ class TestPresto(Validator):
},
)
def test_unicode_string(self):
for prefix in ("u&", "U&"):
self.validate_identity(
f"{prefix}'Hello winter \\2603 !'",
"U&'Hello winter \\2603 !'",
)
self.validate_identity(
f"{prefix}'Hello winter #2603 !' UESCAPE '#'",
"U&'Hello winter #2603 !' UESCAPE '#'",
)
def test_presto(self):
self.validate_identity("string_agg(x, ',')", "ARRAY_JOIN(ARRAY_AGG(x), ',')")
self.validate_identity(
"SELECT * FROM example.testdb.customer_orders FOR VERSION AS OF 8954597067493422955"
)
self.validate_identity(
"SELECT * FROM example.testdb.customer_orders FOR TIMESTAMP AS OF CAST('2022-03-23 09:59:29.803 Europe/Vienna' AS TIMESTAMP)"
)
self.validate_identity("SELECT * FROM x OFFSET 1 LIMIT 1")
self.validate_identity("SELECT * FROM x OFFSET 1 FETCH FIRST 1 ROWS ONLY")
self.validate_identity("SELECT BOOL_OR(a > 10) FROM asd AS T(a)")
self.validate_identity("SELECT * FROM (VALUES (1))")
self.validate_identity("START TRANSACTION READ WRITE, ISOLATION LEVEL SERIALIZABLE")
self.validate_identity("START TRANSACTION ISOLATION LEVEL REPEATABLE READ")
self.validate_identity("APPROX_PERCENTILE(a, b, c, d)")
self.validate_identity(
"SELECT SPLIT_TO_MAP('a:1;b:2;a:3', ';', ':', (k, v1, v2) -> CONCAT(v1, v2))"
)
with self.assertLogs(helper_logger) as cm:
self.validate_all(
"SELECT COALESCE(ELEMENT_AT(MAP_FROM_ENTRIES(ARRAY[(51, '1')]), id), quantity) FROM my_table",
@ -572,6 +574,24 @@ class TestPresto(Validator):
},
)
self.validate_identity("string_agg(x, ',')", "ARRAY_JOIN(ARRAY_AGG(x), ',')")
self.validate_identity("SELECT * FROM x OFFSET 1 LIMIT 1")
self.validate_identity("SELECT * FROM x OFFSET 1 FETCH FIRST 1 ROWS ONLY")
self.validate_identity("SELECT BOOL_OR(a > 10) FROM asd AS T(a)")
self.validate_identity("SELECT * FROM (VALUES (1))")
self.validate_identity("START TRANSACTION READ WRITE, ISOLATION LEVEL SERIALIZABLE")
self.validate_identity("START TRANSACTION ISOLATION LEVEL REPEATABLE READ")
self.validate_identity("APPROX_PERCENTILE(a, b, c, d)")
self.validate_identity(
"SELECT SPLIT_TO_MAP('a:1;b:2;a:3', ';', ':', (k, v1, v2) -> CONCAT(v1, v2))"
)
self.validate_identity(
"SELECT * FROM example.testdb.customer_orders FOR VERSION AS OF 8954597067493422955"
)
self.validate_identity(
"SELECT * FROM example.testdb.customer_orders FOR TIMESTAMP AS OF CAST('2022-03-23 09:59:29.803 Europe/Vienna' AS TIMESTAMP)"
)
self.validate_all(
"SELECT MAX_BY(a.id, a.timestamp) FROM a",
read={
@ -1044,3 +1064,61 @@ MATCH_RECOGNIZE (
)""",
pretty=True,
)
def test_to_char(self):
self.validate_all(
"TO_CHAR(ts, 'dd')",
write={
"bigquery": "FORMAT_DATE('%d', ts)",
"presto": "DATE_FORMAT(ts, '%d')",
},
)
self.validate_all(
"TO_CHAR(ts, 'hh')",
write={
"bigquery": "FORMAT_DATE('%H', ts)",
"presto": "DATE_FORMAT(ts, '%H')",
},
)
self.validate_all(
"TO_CHAR(ts, 'hh24')",
write={
"bigquery": "FORMAT_DATE('%H', ts)",
"presto": "DATE_FORMAT(ts, '%H')",
},
)
self.validate_all(
"TO_CHAR(ts, 'mi')",
write={
"bigquery": "FORMAT_DATE('%M', ts)",
"presto": "DATE_FORMAT(ts, '%i')",
},
)
self.validate_all(
"TO_CHAR(ts, 'mm')",
write={
"bigquery": "FORMAT_DATE('%m', ts)",
"presto": "DATE_FORMAT(ts, '%m')",
},
)
self.validate_all(
"TO_CHAR(ts, 'ss')",
write={
"bigquery": "FORMAT_DATE('%S', ts)",
"presto": "DATE_FORMAT(ts, '%s')",
},
)
self.validate_all(
"TO_CHAR(ts, 'yyyy')",
write={
"bigquery": "FORMAT_DATE('%Y', ts)",
"presto": "DATE_FORMAT(ts, '%Y')",
},
)
self.validate_all(
"TO_CHAR(ts, 'yy')",
write={
"bigquery": "FORMAT_DATE('%y', ts)",
"presto": "DATE_FORMAT(ts, '%y')",
},
)