Skip to content

Commit 2f8ffcf

Browse files
Chore(snowflake): Adding type annotation tests for Snowflake's STDDEV / STDDEV_SAMP, STDDEV_POP (#6641)
* Add STDDEV/STDDEV_POP/STDDEV_SAMP support with Snowflake mapping STDDEV → STDDEV_SAMP, window function arg_types, and corresponding tests. * added partition tests * fixed arguments * removed redundant definition * made STDDEV and STDDEV_SAMP parse as the same
1 parent 235fc14 commit 2f8ffcf

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

sqlglot/dialects/snowflake.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -804,6 +804,7 @@ class Parser(parser.Parser):
804804
"SHA2_BINARY": exp.SHA2Digest.from_arg_list,
805805
"SHA2_HEX": exp.SHA2.from_arg_list,
806806
"SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
807+
"STDDEV_SAMP": exp.Stddev.from_arg_list,
807808
"STRTOK": _build_strtok,
808809
"SYSDATE": lambda args: exp.CurrentTimestamp(this=seq_get(args, 0), sysdate=True),
809810
"TABLE": lambda args: exp.TableFromRows(this=seq_get(args, 0)),

tests/dialects/test_snowflake.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,14 @@ def test_snowflake(self):
474474
self.validate_identity("WEEKOFYEAR(tstamp)", "WEEK(tstamp)")
475475
self.validate_identity("SELECT QUARTER(CURRENT_TIMESTAMP())")
476476
self.validate_identity("SELECT SUM(amount) FROM mytable GROUP BY ALL")
477+
self.validate_identity("SELECT STDDEV(x)")
478+
self.validate_identity("SELECT STDDEV(x) OVER (PARTITION BY 1)")
479+
self.validate_identity("SELECT STDDEV_POP(x)")
480+
self.validate_identity("SELECT STDDEV_POP(x) OVER (PARTITION BY 1)")
481+
self.validate_identity("SELECT STDDEV_SAMP(x)", "SELECT STDDEV(x)")
482+
self.validate_identity(
483+
"SELECT STDDEV_SAMP(x) OVER (PARTITION BY 1)", "SELECT STDDEV(x) OVER (PARTITION BY 1)"
484+
)
477485
self.validate_identity("WITH x AS (SELECT 1 AS foo) SELECT foo FROM IDENTIFIER('x')")
478486
self.validate_identity("WITH x AS (SELECT 1 AS foo) SELECT IDENTIFIER('foo') FROM x")
479487
self.validate_identity("INITCAP('iqamqinterestedqinqthisqtopic', 'q')")

tests/fixtures/optimizer/annotate_functions.sql

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4092,6 +4092,30 @@ BOOLEAN;
40924092
SEARCH_IP(col, '192.168.0.0');
40934093
BOOLEAN;
40944094

4095+
# dialect: snowflake
4096+
STDDEV(tbl.double_col);
4097+
DOUBLE;
4098+
4099+
# dialect: snowflake
4100+
STDDEV(tbl.double_col) OVER (PARTITION BY 1);
4101+
DOUBLE;
4102+
4103+
# dialect: snowflake
4104+
STDDEV_POP(tbl.double_col);
4105+
DOUBLE;
4106+
4107+
# dialect: snowflake
4108+
STDDEV_POP(tbl.double_col) OVER (PARTITION BY 1);
4109+
DOUBLE;
4110+
4111+
# dialect: snowflake
4112+
STDDEV_SAMP(tbl.double_col);
4113+
DOUBLE;
4114+
4115+
# dialect: snowflake
4116+
STDDEV_SAMP(tbl.double_col) OVER (PARTITION BY 1);
4117+
DOUBLE;
4118+
40954119
# dialect: snowflake
40964120
STRTOK_TO_ARRAY('a,b,c', ',');
40974121
ARRAY;

0 commit comments

Comments
 (0)