Skip to content

Commit 4fceebf

Browse files
committed
refactor(snowflake): remove some unnecessary checking of input in the snowflake compiler
1 parent ef6634c commit 4fceebf

File tree

1 file changed

+10
-22
lines changed

1 file changed

+10
-22
lines changed

ibis/backends/sql/compilers/snowflake.py

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ class SnowflakeCompiler(SQLGlotCompiler):
109109
)
110110

111111
SIMPLE_OPS = {
112+
# overrides booland_agg/boolor_agg because neither of those can be used
113+
# in a cumulative window frame, while min and max can
112114
ops.All: "min",
113115
ops.Any: "max",
114116
ops.ArrayDistinct: "array_distinct",
@@ -130,10 +132,17 @@ class SnowflakeCompiler(SQLGlotCompiler):
130132
ops.Hash: "hash",
131133
ops.Median: "median",
132134
ops.Mode: "mode",
135+
ops.RandomUUID: "uuid_string",
133136
ops.StringToDate: "to_date",
134137
ops.StringToTimestamp: "to_timestamp_tz",
135138
ops.TimeFromHMS: "time_from_parts",
136139
ops.TimestampFromYMDHMS: "timestamp_from_parts",
140+
ops.ToJSONMap: "as_object",
141+
ops.ToJSONArray: "as_array",
142+
ops.UnwrapJSONString: "as_varchar",
143+
ops.UnwrapJSONInt64: "as_integer",
144+
ops.UnwrapJSONFloat64: "as_double",
145+
ops.UnwrapJSONBoolean: "as_boolean",
137146
}
138147

139148
def __init__(self):
@@ -306,24 +315,6 @@ def visit_Cast(self, op, *, arg, to):
306315
return self.if_(self.f.is_array(arg), arg, NULL)
307316
return super().visit_Cast(op, arg=arg, to=to)
308317

309-
def visit_ToJSONMap(self, op, *, arg):
310-
return self.if_(self.f.is_object(arg), arg, NULL)
311-
312-
def visit_ToJSONArray(self, op, *, arg):
313-
return self.if_(self.f.is_array(arg), arg, NULL)
314-
315-
def visit_UnwrapJSONString(self, op, *, arg):
316-
return self.if_(self.f.is_varchar(arg), self.f.as_varchar(arg), NULL)
317-
318-
def visit_UnwrapJSONInt64(self, op, *, arg):
319-
return self.if_(self.f.is_integer(arg), self.f.as_integer(arg), NULL)
320-
321-
def visit_UnwrapJSONFloat64(self, op, *, arg):
322-
return self.if_(self.f.is_double(arg), self.f.as_double(arg), NULL)
323-
324-
def visit_UnwrapJSONBoolean(self, op, *, arg):
325-
return self.if_(self.f.is_boolean(arg), self.f.as_boolean(arg), NULL)
326-
327318
def visit_IsNan(self, op, *, arg):
328319
return arg.eq(self.NAN)
329320

@@ -383,14 +374,11 @@ def visit_MapLength(self, op, *, arg):
383374
def visit_Log(self, op, *, arg, base):
384375
return self.f.log(base, arg)
385376

386-
def visit_RandomScalar(self, op, **kwargs):
377+
def visit_RandomScalar(self, op, **_):
387378
return self.f.uniform(
388379
self.f.to_double(0.0), self.f.to_double(1.0), self.f.random()
389380
)
390381

391-
def visit_RandomUUID(self, op, **kwargs):
392-
return self.f.uuid_string()
393-
394382
def visit_ApproxMedian(self, op, *, arg, where):
395383
return self.agg.approx_percentile(arg, 0.5, where=where)
396384

0 commit comments

Comments
 (0)