Merging upstream version 25.8.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
1d73cb497c
commit
50df8dea29
61 changed files with 50550 additions and 50354 deletions
|
@ -289,6 +289,10 @@ LANGUAGE js AS
|
|||
r"REGEXP_EXTRACT(svc_plugin_output, r'\\\((.*)')",
|
||||
r"REGEXP_EXTRACT(svc_plugin_output, '\\\\\\((.*)')",
|
||||
)
|
||||
self.validate_identity(
|
||||
"SELECT CAST(1 AS BYTEINT)",
|
||||
"SELECT CAST(1 AS INT64)",
|
||||
)
|
||||
|
||||
self.validate_all(
|
||||
"SAFE_CAST(some_date AS DATE FORMAT 'DD MONTH YYYY')",
|
||||
|
|
|
@ -28,6 +28,8 @@ class TestClickhouse(Validator):
|
|||
self.assertEqual(expr.sql(dialect="clickhouse"), "COUNT(x)")
|
||||
self.assertIsNone(expr._meta)
|
||||
|
||||
self.validate_identity("SELECT STR_TO_DATE(str, fmt, tz)")
|
||||
self.validate_identity("SELECT STR_TO_DATE('05 12 2000', '%d %m %Y')")
|
||||
self.validate_identity("SELECT EXTRACT(YEAR FROM toDateTime('2023-02-01'))")
|
||||
self.validate_identity("extract(haystack, pattern)")
|
||||
self.validate_identity("SELECT * FROM x LIMIT 1 UNION ALL SELECT * FROM y")
|
||||
|
@ -153,6 +155,17 @@ class TestClickhouse(Validator):
|
|||
"SELECT SUM(1) AS impressions FROM (SELECT ['Istanbul', 'Berlin', 'Bobruisk'] AS cities) WHERE arrayJoin(cities) IN ('Istanbul', 'Berlin')",
|
||||
)
|
||||
|
||||
self.validate_all(
|
||||
"SELECT CAST(STR_TO_DATE('05 12 2000', '%d %m %Y') AS DATE)",
|
||||
read={
|
||||
"clickhouse": "SELECT CAST(STR_TO_DATE('05 12 2000', '%d %m %Y') AS DATE)",
|
||||
"postgres": "SELECT TO_DATE('05 12 2000', 'DD MM YYYY')",
|
||||
},
|
||||
write={
|
||||
"clickhouse": "SELECT CAST(STR_TO_DATE('05 12 2000', '%d %m %Y') AS DATE)",
|
||||
"postgres": "SELECT CAST(CAST(TO_DATE('05 12 2000', 'DD MM YYYY') AS TIMESTAMP) AS DATE)",
|
||||
},
|
||||
)
|
||||
self.validate_all(
|
||||
"SELECT * FROM x PREWHERE y = 1 WHERE z = 2",
|
||||
write={
|
||||
|
|
|
@ -8,6 +8,8 @@ class TestDuckDB(Validator):
|
|||
dialect = "duckdb"
|
||||
|
||||
def test_duckdb(self):
|
||||
self.validate_identity("x::int[3]", "CAST(x AS INT[3])")
|
||||
|
||||
with self.assertRaises(ParseError):
|
||||
parse_one("1 //", read="duckdb")
|
||||
|
||||
|
@ -293,9 +295,19 @@ class TestDuckDB(Validator):
|
|||
self.validate_identity("x -> '$.family'")
|
||||
self.validate_identity("CREATE TABLE color (name ENUM('RED', 'GREEN', 'BLUE'))")
|
||||
self.validate_identity("SELECT * FROM foo WHERE bar > $baz AND bla = $bob")
|
||||
self.validate_identity("SUMMARIZE tbl").assert_is(exp.Summarize)
|
||||
self.validate_identity("SUMMARIZE SELECT * FROM tbl").assert_is(exp.Summarize)
|
||||
self.validate_identity("CREATE TABLE tbl_summary AS SELECT * FROM (SUMMARIZE tbl)")
|
||||
self.validate_identity(
|
||||
"SUMMARIZE TABLE 'https://blobs.duckdb.org/data/Star_Trek-Season_1.csv'"
|
||||
).assert_is(exp.Summarize)
|
||||
self.validate_identity(
|
||||
"SELECT * FROM x LEFT JOIN UNNEST(y)", "SELECT * FROM x LEFT JOIN UNNEST(y) ON TRUE"
|
||||
)
|
||||
self.validate_identity(
|
||||
"SELECT col FROM t WHERE JSON_EXTRACT_STRING(col, '$.id') NOT IN ('b')",
|
||||
"SELECT col FROM t WHERE NOT (col ->> '$.id') IN ('b')",
|
||||
)
|
||||
self.validate_identity(
|
||||
"SELECT a, LOGICAL_OR(b) FROM foo GROUP BY a",
|
||||
"SELECT a, BOOL_OR(b) FROM foo GROUP BY a",
|
||||
|
@ -839,10 +851,10 @@ class TestDuckDB(Validator):
|
|||
self.assertEqual(
|
||||
cm.output,
|
||||
[
|
||||
"WARNING:sqlglot:Applying array index offset (-1)",
|
||||
"WARNING:sqlglot:Applying array index offset (1)",
|
||||
"WARNING:sqlglot:Applying array index offset (1)",
|
||||
"WARNING:sqlglot:Applying array index offset (1)",
|
||||
"INFO:sqlglot:Applying array index offset (-1)",
|
||||
"INFO:sqlglot:Applying array index offset (1)",
|
||||
"INFO:sqlglot:Applying array index offset (1)",
|
||||
"INFO:sqlglot:Applying array index offset (1)",
|
||||
],
|
||||
)
|
||||
|
||||
|
|
|
@ -1071,10 +1071,10 @@ class TestPostgres(Validator):
|
|||
self.assertEqual(
|
||||
cm.output,
|
||||
[
|
||||
"WARNING:sqlglot:Applying array index offset (-1)",
|
||||
"WARNING:sqlglot:Applying array index offset (1)",
|
||||
"WARNING:sqlglot:Applying array index offset (1)",
|
||||
"WARNING:sqlglot:Applying array index offset (1)",
|
||||
"INFO:sqlglot:Applying array index offset (-1)",
|
||||
"INFO:sqlglot:Applying array index offset (1)",
|
||||
"INFO:sqlglot:Applying array index offset (1)",
|
||||
"INFO:sqlglot:Applying array index offset (1)",
|
||||
],
|
||||
)
|
||||
|
||||
|
|
|
@ -48,6 +48,16 @@ class TestTSQL(Validator):
|
|||
"SELECT 1 WHERE EXISTS(SELECT 1)",
|
||||
)
|
||||
|
||||
self.validate_all(
|
||||
"WITH A AS (SELECT 2 AS value), C AS (SELECT * FROM A) SELECT * INTO TEMP_NESTED_WITH FROM (SELECT * FROM C) AS temp",
|
||||
read={
|
||||
"snowflake": "CREATE TABLE TEMP_NESTED_WITH AS WITH C AS (WITH A AS (SELECT 2 AS value) SELECT * FROM A) SELECT * FROM C",
|
||||
"tsql": "WITH A AS (SELECT 2 AS value), C AS (SELECT * FROM A) SELECT * INTO TEMP_NESTED_WITH FROM (SELECT * FROM C) AS temp",
|
||||
},
|
||||
write={
|
||||
"snowflake": "CREATE TABLE TEMP_NESTED_WITH AS WITH A AS (SELECT 2 AS value), C AS (SELECT * FROM A) SELECT * FROM (SELECT * FROM C) AS temp",
|
||||
},
|
||||
)
|
||||
self.validate_all(
|
||||
"SELECT IIF(cond <> 0, 'True', 'False')",
|
||||
read={
|
||||
|
@ -797,6 +807,7 @@ class TestTSQL(Validator):
|
|||
f"UNIQUE {clustered_keyword} ([internal_id] ASC))",
|
||||
)
|
||||
|
||||
self.validate_identity("CREATE VIEW t AS WITH cte AS (SELECT 1 AS c) SELECT c FROM cte")
|
||||
self.validate_identity(
|
||||
"ALTER TABLE tbl SET SYSTEM_VERSIONING=ON(HISTORY_TABLE=db.tbl, DATA_CONSISTENCY_CHECK=OFF, HISTORY_RETENTION_PERIOD=5 DAYS)"
|
||||
)
|
||||
|
@ -1135,6 +1146,11 @@ WHERE
|
|||
self.validate_all("ISNULL(x, y)", write={"spark": "COALESCE(x, y)"})
|
||||
|
||||
def test_json(self):
|
||||
self.validate_identity(
|
||||
"""JSON_QUERY(REPLACE(REPLACE(x , '''', '"'), '""', '"'))""",
|
||||
"""ISNULL(JSON_QUERY(REPLACE(REPLACE(x, '''', '"'), '""', '"'), '$'), JSON_VALUE(REPLACE(REPLACE(x, '''', '"'), '""', '"'), '$'))""",
|
||||
)
|
||||
|
||||
self.validate_all(
|
||||
"JSON_QUERY(r.JSON, '$.Attr_INT')",
|
||||
write={
|
||||
|
|
1
tests/fixtures/identity.sql
vendored
1
tests/fixtures/identity.sql
vendored
|
@ -868,6 +868,7 @@ SELECT name
|
|||
SELECT copy
|
||||
SELECT rollup
|
||||
SELECT unnest
|
||||
SELECT cube, cube.x FROM cube
|
||||
SELECT * FROM a STRAIGHT_JOIN b
|
||||
SELECT COUNT(DISTINCT "foo bar") FROM (SELECT 1 AS "foo bar") AS t
|
||||
SELECT vector
|
||||
|
|
10
tests/fixtures/pretty.sql
vendored
10
tests/fixtures/pretty.sql
vendored
|
@ -395,3 +395,13 @@ JOIN b
|
|||
JOIN d
|
||||
USING (f)
|
||||
USING (g);
|
||||
|
||||
('aaaaaaaaaaa', 'bbbbbbbbbbbbbbbb', 'ccccccccccccc', 'ddddddddddd', 'eeeeeeeeeeeeeeeeeeeee');
|
||||
(
|
||||
'aaaaaaaaaaa',
|
||||
'bbbbbbbbbbbbbbbb',
|
||||
'ccccccccccccc',
|
||||
'ddddddddddd',
|
||||
'eeeeeeeeeeeeeeeeeeeee'
|
||||
);
|
||||
|
||||
|
|
|
@ -1001,6 +1001,8 @@ FROM foo""",
|
|||
self.assertEqual(exp.DataType.build("ARRAY<UNKNOWN>").sql(), "ARRAY<UNKNOWN>")
|
||||
self.assertEqual(exp.DataType.build("ARRAY<NULL>").sql(), "ARRAY<NULL>")
|
||||
self.assertEqual(exp.DataType.build("varchar(100) collate 'en-ci'").sql(), "VARCHAR(100)")
|
||||
self.assertEqual(exp.DataType.build("int[3]").sql(dialect="duckdb"), "INT[3]")
|
||||
self.assertEqual(exp.DataType.build("int[3][3]").sql(dialect="duckdb"), "INT[3][3]")
|
||||
|
||||
with self.assertRaises(ParseError):
|
||||
exp.DataType.build("varchar(")
|
||||
|
|
|
@ -815,10 +815,10 @@ FROM x""",
|
|||
self.assertEqual(
|
||||
cm.output,
|
||||
[
|
||||
"WARNING:sqlglot:Applying array index offset (1)",
|
||||
"WARNING:sqlglot:Applying array index offset (-1)",
|
||||
"WARNING:sqlglot:Applying array index offset (1)",
|
||||
"WARNING:sqlglot:Applying array index offset (1)",
|
||||
"INFO:sqlglot:Applying array index offset (1)",
|
||||
"INFO:sqlglot:Applying array index offset (-1)",
|
||||
"INFO:sqlglot:Applying array index offset (1)",
|
||||
"INFO:sqlglot:Applying array index offset (1)",
|
||||
],
|
||||
)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue