Skip to content

Commit 0911276

Browse files
feat(optimizer)!: annotate type for Snowflake EXP function (#6007)
1 parent 8b48f7b commit 0911276

File tree

9 files changed

+16
-0
lines changed

9 files changed

+16
-0
lines changed

sqlglot/dialects/snowflake.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,7 @@ class Snowflake(Dialect):
566566
exp.DataType.Type.DOUBLE: {
567567
*Dialect.TYPE_TO_EXPRESSIONS[exp.DataType.Type.DOUBLE],
568568
exp.Cot,
569+
exp.Exp,
569570
exp.Sin,
570571
exp.Tan,
571572
},

tests/dialects/test_bigquery.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def test_bigquery(self):
5656
select_with_quoted_udf = self.validate_identity("SELECT `p.d.UdF`(data) FROM `p.d.t`")
5757
self.assertEqual(select_with_quoted_udf.selects[0].name, "p.d.UdF")
5858

59+
self.validate_identity("SELECT EXP(1)")
5960
self.validate_identity("DATE_TRUNC(x, @foo)").unit.assert_is(exp.Parameter)
6061
self.validate_identity("ARRAY_CONCAT_AGG(x ORDER BY ARRAY_LENGTH(x) LIMIT 2)")
6162
self.validate_identity("ARRAY_CONCAT_AGG(x LIMIT 2)")

tests/dialects/test_databricks.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ def test_databricks(self):
1111
self.assertEqual(null_type.sql(), "NULL")
1212
self.assertEqual(null_type.sql("databricks"), "VOID")
1313

14+
self.validate_identity("SELECT EXP(1)")
1415
self.validate_identity("REGEXP_LIKE(x, y)")
1516
self.validate_identity("SELECT CAST(NULL AS VOID)")
1617
self.validate_identity("SELECT void FROM t")

tests/dialects/test_duckdb.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ def test_duckdb(self):
193193
},
194194
)
195195

196+
self.validate_identity("SELECT EXP(1)")
196197
self.validate_identity("""SELECT '{"duck": [1, 2, 3]}' -> '$.duck[#-1]'""")
197198
self.validate_all(
198199
"""SELECT JSON_EXTRACT('{"duck": [1, 2, 3]}', '/duck/0')""",

tests/dialects/test_postgres.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class TestPostgres(Validator):
88
dialect = "postgres"
99

1010
def test_postgres(self):
11+
self.validate_identity("SELECT EXP(1)")
1112
self.validate_identity(
1213
"select count() OVER(partition by a order by a range offset preceding exclude current row)",
1314
"SELECT COUNT() OVER (PARTITION BY a ORDER BY a range BETWEEN offset preceding AND CURRENT ROW EXCLUDE CURRENT ROW)",

tests/dialects/test_redshift.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@ def test_redshift(self):
326326
)
327327

328328
def test_identity(self):
329+
self.validate_identity("SELECT EXP(1)")
329330
self.validate_identity("ALTER TABLE table_name ALTER COLUMN bla TYPE VARCHAR")
330331
self.validate_identity("SELECT CAST(value AS FLOAT(8))")
331332
self.validate_identity("1 div", "1 AS div")

tests/dialects/test_snowflake.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ def test_snowflake(self):
3030
expr.selects[0].assert_is(exp.AggFunc)
3131
self.assertEqual(expr.sql(dialect="snowflake"), "SELECT APPROX_TOP_K(C4, 3, 5) FROM t")
3232

33+
self.validate_identity("SELECT EXP(1)")
3334
self.validate_identity("SELECT BIT_LENGTH('abc')")
3435
self.validate_identity("SELECT BIT_LENGTH(x'A1B2')")
3536
self.validate_identity("SELECT RTRIMMED_LENGTH(' ABCD ')")

tests/dialects/test_tsql.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ def test_tsql(self):
1919
# tsql allows .. which means use the default schema
2020
self.validate_identity("SELECT * FROM a..b")
2121

22+
self.validate_identity("SELECT EXP(1)")
2223
self.validate_identity("SELECT SYSDATETIMEOFFSET()")
2324
self.validate_identity("SELECT COMPRESS('Hello World')")
2425
self.validate_identity("GO").assert_is(exp.Command)

tests/fixtures/optimizer/annotate_functions.sql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1743,6 +1743,14 @@ INT;
17431743
EDITDISTANCE('hello', 'world', 3);
17441744
INT;
17451745

1746+
# dialect: snowflake
1747+
EXP(1);
1748+
DOUBLE;
1749+
1750+
# dialect: snowflake
1751+
EXP(5.5);
1752+
DOUBLE;
1753+
17461754
# dialect: snowflake
17471755
ENDSWITH('hello world', 'world');
17481756
BOOLEAN;

0 commit comments

Comments
 (0)