From c790602986a1a514e12caaa812b45677c54d0ca2 Mon Sep 17 00:00:00 2001 From: fivetran-amrutabhimsenayachit Date: Thu, 9 Oct 2025 13:20:01 -0400 Subject: [PATCH] feat(optimizer)! : annotate type for snowflake PI function --- sqlglot/dialects/dialect.py | 1 + sqlglot/expressions.py | 4 ++++ tests/dialects/test_snowflake.py | 1 + tests/fixtures/optimizer/annotate_functions.sql | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/sqlglot/dialects/dialect.py b/sqlglot/dialects/dialect.py index a117c3f610..7f5765c359 100644 --- a/sqlglot/dialects/dialect.py +++ b/sqlglot/dialects/dialect.py @@ -721,6 +721,7 @@ class Dialect(metaclass=_Dialect): exp.Exp, exp.Ln, exp.Log, + exp.Pi, exp.Pow, exp.Quantile, exp.Round, diff --git a/sqlglot/expressions.py b/sqlglot/expressions.py index 256804f870..e18cc376cc 100644 --- a/sqlglot/expressions.py +++ b/sqlglot/expressions.py @@ -7201,6 +7201,10 @@ class VectorSearch(Func): } +class Pi(Func): + arg_types = {} + + class Pow(Binary, Func): _sql_names = ["POWER", "POW"] diff --git a/tests/dialects/test_snowflake.py b/tests/dialects/test_snowflake.py index b6afb16609..79a7fc5afd 100644 --- a/tests/dialects/test_snowflake.py +++ b/tests/dialects/test_snowflake.py @@ -73,6 +73,7 @@ def test_snowflake(self): self.validate_identity("SELECT TRANSLATE(column_name, 'abc', '123')") self.validate_identity("SELECT UNICODE(column_name)") self.validate_identity("SELECT SPLIT_PART('11.22.33', '.', 1)") + self.validate_identity("SELECT PI()") self.validate_identity("SELECT DEGREES(PI() / 3)") self.validate_identity("SELECT DEGREES(1)") self.validate_identity("PARSE_URL('https://example.com/path')") diff --git a/tests/fixtures/optimizer/annotate_functions.sql b/tests/fixtures/optimizer/annotate_functions.sql index 372974b6e6..e89d56a8d8 100644 --- a/tests/fixtures/optimizer/annotate_functions.sql +++ b/tests/fixtures/optimizer/annotate_functions.sql @@ -1927,6 +1927,10 @@ INT; POSITION('abc', 'abcdef', 1); INT; +# dialect: snowflake +PI(); +DOUBLE; + # dialect: snowflake POW(tbl.double_col, 2); DOUBLE;