Skip to content

Commit 7ef116e

Browse files
shift to engine tests, fix issues
1 parent 84f2dc2 commit 7ef116e

6 files changed

Lines changed: 43 additions & 4537 deletions

File tree

packages/bigframes/bigframes/core/compile/polars/lowering.py renamed to packages/bigframes/bigframes/core/compile/lowering.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,11 +492,19 @@ def _lower_cast(cast_op: ops.AsTypeOp, arg: expression.Expression):
492492
LowerFloorOp(),
493493
)
494494

495+
SUBSTRAIT_LOWERING_RULES = (*LOWER_COMPARISONS,)
496+
495497

496498
def lower_ops_to_polars(root: bigframe_node.BigFrameNode) -> bigframe_node.BigFrameNode:
497499
return op_lowering.lower_ops(root, rules=POLARS_LOWERING_RULES)
498500

499501

502+
def lower_ops_to_substrait(
503+
root: bigframe_node.BigFrameNode,
504+
) -> bigframe_node.BigFrameNode:
505+
return op_lowering.lower_ops(root, rules=SUBSTRAIT_LOWERING_RULES)
506+
507+
500508
def _numeric_to_timedelta(expr: expression.Expression) -> expression.Expression:
501509
"""rounding logic used for emulating timedelta ops"""
502510
rounded_value = ops.where_op.as_expr(

packages/bigframes/bigframes/core/compile/substrait/compiler.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import bigframes.operations.numeric_ops as numeric_ops
3232
import bigframes.operations.struct_ops as struct_ops
3333
from bigframes.core import bigframe_node, nodes
34+
from bigframes.core.compile import lowering
3435

3536

3637
class SubstraitCompiler:
@@ -53,6 +54,7 @@ def compile(self, plan: bigframe_node.BigFrameNode) -> Optional[bytes]:
5354
if not self.can_compile(plan):
5455
return None
5556

57+
plan = lowering.lower_ops_to_substrait(plan)
5658
pb_rel = self._compile_node(plan)
5759

5860
pb_plan = plan_pb2.Plan()

packages/bigframes/tests/system/small/engines/test_bool_ops.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,17 @@ def apply_op_pairwise(
4646
return new_arr
4747

4848

49-
@pytest.mark.parametrize("engine", ["polars", "bq", "bq-sqlglot"], indirect=True)
49+
@pytest.mark.parametrize(
50+
"engine",
51+
[
52+
"polars",
53+
"bq",
54+
"bq-sqlglot",
55+
"substrait-datafusion",
56+
"substrait-acero",
57+
],
58+
indirect=True,
59+
)
5060
@pytest.mark.parametrize(
5161
"op",
5262
[

packages/bigframes/tests/system/small/engines/test_comparison_ops.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,17 @@ def apply_op_pairwise(
4848
return new_arr
4949

5050

51-
@pytest.mark.parametrize("engine", ["polars", "bq", "bq-sqlglot"], indirect=True)
51+
@pytest.mark.parametrize(
52+
"engine",
53+
[
54+
"polars",
55+
"bq",
56+
"bq-sqlglot",
57+
"substrait-datafusion",
58+
"substrait-acero",
59+
],
60+
indirect=True,
61+
)
5262
@pytest.mark.parametrize(
5363
"op",
5464
[

packages/bigframes/tests/system/small/engines/test_slicing.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,17 @@
2424
REFERENCE_ENGINE = polars_executor.PolarsExecutor()
2525

2626

27-
@pytest.mark.parametrize("engine", ["polars", "bq", "bq-sqlglot"], indirect=True)
27+
@pytest.mark.parametrize(
28+
"engine",
29+
[
30+
"polars",
31+
"bq",
32+
"bq-sqlglot",
33+
"substrait-datafusion",
34+
"substrait-acero",
35+
],
36+
indirect=True,
37+
)
2838
@pytest.mark.parametrize(
2939
("start", "stop", "step"),
3040
[

0 commit comments

Comments
 (0)