Skip to content

Commit fd689a8

Browse files
committed
SNOW-2913796: Add nullifzero function support for local testing (snowflakedb#4036)
1 parent 7d70182 commit fd689a8

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

src/snowflake/snowpark/mock/_functions.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,13 @@ def mock_abs(expr):
707707
return abs(expr)
708708

709709

710+
@patch("nullifzero")
711+
def mock_nullifzero(expr: ColumnEmulator) -> ColumnEmulator:
712+
result = expr.replace(0, None)
713+
result.sf_type = ColumnType(expr.sf_type.datatype, nullable=True)
714+
return result
715+
716+
710717
@patch("to_decimal")
711718
def mock_to_decimal(
712719
e: ColumnEmulator,

tests/mock/test_functions.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
lit,
3030
max,
3131
min,
32+
nullifzero,
3233
rank,
3334
row_number,
3435
sum,
@@ -40,7 +41,6 @@
4041
from snowflake.snowpark.mock.exceptions import SnowparkLocalTestingException
4142
from snowflake.snowpark.types import IntegerType
4243
from snowflake.snowpark.window import Window
43-
4444
from tests.utils import Utils
4545

4646

@@ -161,6 +161,22 @@ def test_abs(session):
161161
assert origin_df.select(abs(col("m"))).collect() == [Row(1), Row(1), Row(2)]
162162

163163

164+
def test_nullifzero(session):
165+
origin_df: DataFrame = session.create_dataframe(
166+
[
167+
[0],
168+
[1],
169+
[100],
170+
[-5],
171+
[-0],
172+
[None]
173+
],
174+
schema=["v"],
175+
)
176+
expected = [Row(None), Row(1), Row(100), Row(-5), Row(None), Row(None)]
177+
assert origin_df.select(nullifzero(col("v"))).collect() == expected
178+
179+
164180
def test_asc_and_desc(session):
165181
origin_df: DataFrame = session.create_dataframe(
166182
[

0 commit comments

Comments
 (0)