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;