Skip to content

Commit de1f896

Browse files
committed
refactor: fix test_series_int_int_operators_scalar on numeric and comparison ops
1 parent 82e8b30 commit de1f896

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

bigframes/core/compile/sqlglot/expressions/comparison_ops.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,27 +89,39 @@ def _(left: TypedExpr, right: TypedExpr) -> sge.Expression:
8989

9090
@register_binary_op(ops.ge_op)
9191
def _(left: TypedExpr, right: TypedExpr) -> sge.Expression:
92+
if left.expr == sge.null() or right.expr == sge.null():
93+
return sge.null()
94+
9295
left_expr = _coerce_bool_to_int(left)
9396
right_expr = _coerce_bool_to_int(right)
9497
return sge.GTE(this=left_expr, expression=right_expr)
9598

9699

97100
@register_binary_op(ops.gt_op)
98101
def _(left: TypedExpr, right: TypedExpr) -> sge.Expression:
102+
if left.expr == sge.null() or right.expr == sge.null():
103+
return sge.null()
104+
99105
left_expr = _coerce_bool_to_int(left)
100106
right_expr = _coerce_bool_to_int(right)
101107
return sge.GT(this=left_expr, expression=right_expr)
102108

103109

104110
@register_binary_op(ops.lt_op)
105111
def _(left: TypedExpr, right: TypedExpr) -> sge.Expression:
112+
if left.expr == sge.null() or right.expr == sge.null():
113+
return sge.null()
114+
106115
left_expr = _coerce_bool_to_int(left)
107116
right_expr = _coerce_bool_to_int(right)
108117
return sge.LT(this=left_expr, expression=right_expr)
109118

110119

111120
@register_binary_op(ops.le_op)
112121
def _(left: TypedExpr, right: TypedExpr) -> sge.Expression:
122+
if left.expr == sge.null() or right.expr == sge.null():
123+
return sge.null()
124+
113125
left_expr = _coerce_bool_to_int(left)
114126
right_expr = _coerce_bool_to_int(right)
115127
return sge.LTE(this=left_expr, expression=right_expr)

bigframes/core/compile/sqlglot/expressions/numeric_ops.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,9 @@ def _(expr: TypedExpr) -> sge.Expression:
388388

389389
@register_binary_op(ops.add_op)
390390
def _(left: TypedExpr, right: TypedExpr) -> sge.Expression:
391+
if left.expr == sge.null() or right.expr == sge.null():
392+
return sge.null()
393+
391394
if left.dtype == dtypes.STRING_DTYPE and right.dtype == dtypes.STRING_DTYPE:
392395
# String addition
393396
return sge.Concat(expressions=[left.expr, right.expr])
@@ -442,6 +445,9 @@ def _(left: TypedExpr, right: TypedExpr) -> sge.Expression:
442445

443446
@register_binary_op(ops.floordiv_op)
444447
def _(left: TypedExpr, right: TypedExpr) -> sge.Expression:
448+
if left.expr == sge.null() or right.expr == sge.null():
449+
return sge.null()
450+
445451
left_expr = _coerce_bool_to_int(left)
446452
right_expr = _coerce_bool_to_int(right)
447453

@@ -525,6 +531,9 @@ def _(left: TypedExpr, right: TypedExpr) -> sge.Expression:
525531

526532
@register_binary_op(ops.mul_op)
527533
def _(left: TypedExpr, right: TypedExpr) -> sge.Expression:
534+
if left.expr == sge.null() or right.expr == sge.null():
535+
return sge.null()
536+
528537
left_expr = _coerce_bool_to_int(left)
529538
right_expr = _coerce_bool_to_int(right)
530539

@@ -548,6 +557,9 @@ def _(expr: TypedExpr, n_digits: TypedExpr) -> sge.Expression:
548557

549558
@register_binary_op(ops.sub_op)
550559
def _(left: TypedExpr, right: TypedExpr) -> sge.Expression:
560+
if left.expr == sge.null() or right.expr == sge.null():
561+
return sge.null()
562+
551563
if dtypes.is_numeric(left.dtype) and dtypes.is_numeric(right.dtype):
552564
left_expr = _coerce_bool_to_int(left)
553565
right_expr = _coerce_bool_to_int(right)

0 commit comments

Comments
 (0)