3131from bigframes .core .compile import configs
3232import bigframes .core .compile .sqlglot .aggregate_compiler as aggregate_compiler
3333from bigframes .core .compile .sqlglot .aggregations import windows
34+ import bigframes .core .compile .sqlglot .expression_compiler as expression_compiler
3435from bigframes .core .compile .sqlglot .expressions import typed_expr
35- import bigframes .core .compile .sqlglot .scalar_compiler as scalar_compiler
3636import bigframes .core .compile .sqlglot .sqlglot_ir as ir
3737from bigframes .core .logging import data_types as data_type_logger
3838import bigframes .core .ordering as bf_ordering
@@ -143,38 +143,32 @@ def _compile_node(
143143@_compile_node .register
144144def compile_sql_select (node : sql_nodes .SqlSelectNode , child : ir .SQLGlotIR ):
145145 sqlglot_ir = child
146- if node .sorting is not None :
147- ordering_cols = tuple (
148- sge .Ordered (
149- this = scalar_compiler .scalar_op_compiler .compile_expression (
150- ordering .scalar_expression
151- ),
152- desc = ordering .direction .is_ascending is False ,
153- nulls_first = ordering .na_last is False ,
154- )
155- for ordering in node .sorting
146+ ordering_cols = tuple (
147+ sge .Ordered (
148+ this = expression_compiler .expression_compiler .compile_expression (
149+ ordering .scalar_expression
150+ ),
151+ desc = ordering .direction .is_ascending is False ,
152+ nulls_first = ordering .na_last is False ,
156153 )
157- sqlglot_ir = sqlglot_ir .order_by (ordering_cols )
154+ for ordering in node .sorting
155+ )
158156
159157 projected_cols : tuple [tuple [str , sge .Expression ], ...] = tuple (
160158 (
161159 cdef .id .sql ,
162- scalar_compiler . scalar_op_compiler .compile_expression (cdef .expression ),
160+ expression_compiler . expression_compiler .compile_expression (cdef .expression ),
163161 )
164162 for cdef in node .selections
165163 )
166164 sqlglot_ir = sqlglot_ir .select (projected_cols )
167165
168- if len (node .predicates ) > 0 :
169- sge_predicates = tuple (
170- scalar_compiler .scalar_op_compiler .compile_expression (expression )
171- for expression in node .predicates
172- )
173- sqlglot_ir = sqlglot_ir .filter (sge_predicates )
174- if node .limit is not None :
175- sqlglot_ir = sqlglot_ir .limit (node .limit )
166+ sge_predicates = tuple (
167+ expression_compiler .expression_compiler .compile_expression (expression )
168+ for expression in node .predicates
169+ )
176170
177- return sqlglot_ir
171+ return child . select ( projected_cols , sge_predicates , ordering_cols , node . limit )
178172
179173
180174@_compile_node .register
@@ -210,11 +204,11 @@ def compile_join(
210204 conditions = tuple (
211205 (
212206 typed_expr .TypedExpr (
213- scalar_compiler . scalar_op_compiler .compile_expression (left ),
207+ expression_compiler . expression_compiler .compile_expression (left ),
214208 left .output_type ,
215209 ),
216210 typed_expr .TypedExpr (
217- scalar_compiler . scalar_op_compiler .compile_expression (right ),
211+ expression_compiler . expression_compiler .compile_expression (right ),
218212 right .output_type ,
219213 ),
220214 )
@@ -236,11 +230,11 @@ def compile_isin_join(
236230 right_field = node .right_child .fields [0 ]
237231 conditions = (
238232 typed_expr .TypedExpr (
239- scalar_compiler . scalar_op_compiler .compile_expression (node .left_col ),
233+ expression_compiler . expression_compiler .compile_expression (node .left_col ),
240234 node .left_col .output_type ,
241235 ),
242236 typed_expr .TypedExpr (
243- scalar_compiler . scalar_op_compiler .compile_expression (
237+ expression_compiler . expression_compiler .compile_expression (
244238 expression .DerefOp (right_field .id )
245239 ),
246240 right_field .dtype ,
@@ -303,7 +297,7 @@ def compile_aggregate(node: nodes.AggregateNode, child: ir.SQLGlotIR) -> ir.SQLG
303297 for agg , id in node .aggregations
304298 )
305299 by_cols : tuple [sge .Expression , ...] = tuple (
306- scalar_compiler . scalar_op_compiler .compile_expression (by_col )
300+ expression_compiler . expression_compiler .compile_expression (by_col )
307301 for by_col in node .by_column_ids
308302 )
309303
0 commit comments