Skip to content
This repository was archived by the owner on Apr 1, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
6a1107e
refactor: Add cte factoring to new compiler
TrevorBergeron Feb 12, 2026
97a5a7f
Merge remote-tracking branch 'github/main' into cte_extract2
TrevorBergeron Feb 27, 2026
2d9dad5
Merge remote-tracking branch 'github/main' into cte_extract2
TrevorBergeron Mar 5, 2026
10a9798
separate logical cte nodes from concrete sql ones
TrevorBergeron Mar 6, 2026
a5283f1
move extract_ctes later in compiler
TrevorBergeron Mar 6, 2026
49ddfdf
fix _as_from_item helper
TrevorBergeron Mar 6, 2026
accf797
fix test issues and update snapshots
TrevorBergeron Mar 6, 2026
1e62fd3
fix cte emitter
TrevorBergeron Mar 6, 2026
e60f3ed
dont create with expression without ctes
TrevorBergeron Mar 6, 2026
ce9fbb9
amend selection compilation
TrevorBergeron Mar 6, 2026
74b2470
fix as_select star logic
TrevorBergeron Mar 6, 2026
069dd09
fix isin join logic
TrevorBergeron Mar 6, 2026
5f2ed0d
redo id remapper
TrevorBergeron Mar 6, 2026
75e02cc
fix id issues preventing cte factoring
TrevorBergeron Mar 7, 2026
2d382c6
refactor ir internals to reduce select count
TrevorBergeron Mar 7, 2026
5717cfc
avoid more select stars
TrevorBergeron Mar 7, 2026
b7d360a
fix identifier tests
TrevorBergeron Mar 7, 2026
10cf398
wrap more nodes in ctes
TrevorBergeron Mar 8, 2026
28865fa
enable experimental compiler for tests
TrevorBergeron Mar 8, 2026
e6043dd
avoid rewrapping nodes, wrapping root
TrevorBergeron Mar 8, 2026
8a5a96e
dont extract union all children as ctes
TrevorBergeron Mar 8, 2026
64d5ce9
fix type, tmp test change
TrevorBergeron Mar 8, 2026
cd5579b
fix isin logic
TrevorBergeron Mar 9, 2026
47a8af3
fix isin struct ics
TrevorBergeron Mar 9, 2026
dd39c51
fix isin w nulls
TrevorBergeron Mar 9, 2026
fecc37a
avoid TypedExpr warpping
TrevorBergeron Mar 9, 2026
1a3d311
reset compiler to stable
TrevorBergeron Mar 9, 2026
e601d1b
appease mypy
TrevorBergeron Mar 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions bigframes/core/compile/sqlglot/compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ def compile_sql(request: configs.CompileRequest) -> configs.CompileResult:
if request.sort_rows:
result_node = typing.cast(nodes.ResultNode, rewrite.column_pruning(result_node))
encoded_type_refs = data_type_logger.encode_type_refs(result_node)
# TODO: Extract CTEs earlier
result_node = typing.cast(nodes.ResultNode, rewrite.extract_ctes(result_node))
sql = _compile_result_node(result_node)
return configs.CompileResult(
sql,
Expand All @@ -74,6 +76,8 @@ def compile_sql(request: configs.CompileRequest) -> configs.CompileResult:
result_node = dataclasses.replace(result_node, order_by=None)
result_node = typing.cast(nodes.ResultNode, rewrite.column_pruning(result_node))
encoded_type_refs = data_type_logger.encode_type_refs(result_node)
# TODO: Extract CTEs earlier
result_node = typing.cast(nodes.ResultNode, rewrite.extract_ctes(result_node))
sql = _compile_result_node(result_node)
# Return the ordering iff no extra columns are needed to define the row order
if ordering is not None:
Expand Down Expand Up @@ -256,6 +260,23 @@ def compile_isin_join(
)


@_compile_node.register
def compile_cte_ref_node(node: sql_nodes.SqlCteRefNode, child: sqlglot_ir.SQLGlotIR):
return sqlglot_ir.SQLGlotIR.from_cte_ref(
node.cte_name,
uid_gen=child.uid_gen,
)


@_compile_node.register
def compile_with_ctes_node(
node: sql_nodes.SqlWithCtesNode,
child: sqlglot_ir.SQLGlotIR,
*ctes: sqlglot_ir.SQLGlotIR,
):
return child.with_ctes(tuple(zip(node.cte_names, ctes)))


@_compile_node.register
def compile_concat(
node: nodes.ConcatNode, *children: sqlglot_ir.SQLGlotIR
Expand Down
Loading
Loading