@@ -22,7 +22,6 @@ use crate::expr::analysis::descendent_annotations;
2222use crate :: expr:: exprs:: get_item:: get_item;
2323use crate :: expr:: exprs:: pack:: pack;
2424use crate :: expr:: exprs:: root:: root;
25- use crate :: expr:: transform:: ExprOptimizer ;
2625use crate :: expr:: traversal:: NodeExt ;
2726use crate :: expr:: traversal:: NodeRewriter ;
2827use crate :: expr:: traversal:: Transformed ;
@@ -43,7 +42,6 @@ pub fn partition<A: AnnotationFn>(
4342 expr : Expression ,
4443 scope : & DType ,
4544 annotate_fn : A ,
46- optimizer : & ExprOptimizer ,
4745) -> VortexResult < PartitionedExpr < A :: Annotation > >
4846where
4947 A :: Annotation : Display ,
7371 Nullability :: NonNullable ,
7472 ) ;
7573
76- let expr = optimizer . optimize_typed ( expr. clone ( ) , scope) ?;
74+ let expr = expr. simplify ( scope) ?;
7775 let expr_dtype = expr. return_dtype ( scope) ?;
7876
7977 partitions. push ( expr) ;
9189 ) ;
9290
9391 Ok ( PartitionedExpr {
94- root : optimizer . optimize_typed ( root , & root_scope) ?,
92+ root : root . simplify ( & root_scope) ?,
9593 partitions : partitions. into_boxed_slice ( ) ,
9694 partition_names,
9795 partition_dtypes : partition_dtypes. into_boxed_slice ( ) ,
@@ -222,9 +220,7 @@ mod tests {
222220 use crate :: expr:: exprs:: pack:: pack;
223221 use crate :: expr:: exprs:: root:: root;
224222 use crate :: expr:: exprs:: select:: select;
225- use crate :: expr:: session:: ExprSession ;
226223 use crate :: expr:: transform:: replace:: replace_root_fields;
227- use crate :: expr:: transform:: simplify_typed:: simplify_typed;
228224
229225 #[ fixture]
230226 fn dtype ( ) -> DType {
@@ -247,48 +243,34 @@ mod tests {
247243 #[ rstest]
248244 fn test_expr_top_level_ref ( dtype : DType ) {
249245 let fields = dtype. as_struct_fields_opt ( ) . unwrap ( ) ;
250- let session = ExprSession :: default ( ) ;
251- let optimizer = ExprOptimizer :: new ( & session) ;
252246
253247 let expr = root ( ) ;
254- let partitioned = partition (
255- expr. clone ( ) ,
256- & dtype,
257- annotate_scope_access ( fields) ,
258- & optimizer,
259- )
260- . unwrap ( ) ;
248+ let partitioned = partition ( expr. clone ( ) , & dtype, annotate_scope_access ( fields) ) . unwrap ( ) ;
261249
262250 // An un-expanded root expression is annotated by all fields, but since it is a single node
263251 assert_eq ! ( partitioned. partitions. len( ) , 0 ) ;
264252 assert_eq ! ( & partitioned. root, & root( ) ) ;
265253
266254 // Instead, callers must expand the root expression themselves.
267255 let expr = replace_root_fields ( expr, fields) ;
268- let partitioned =
269- partition ( expr, & dtype, annotate_scope_access ( fields) , & optimizer) . unwrap ( ) ;
256+ let partitioned = partition ( expr, & dtype, annotate_scope_access ( fields) ) . unwrap ( ) ;
270257
271258 assert_eq ! ( partitioned. partitions. len( ) , fields. names( ) . len( ) ) ;
272259 }
273260
274261 #[ rstest]
275262 fn test_expr_top_level_ref_get_item_and_split ( dtype : DType ) {
276263 let fields = dtype. as_struct_fields_opt ( ) . unwrap ( ) ;
277- let session = ExprSession :: default ( ) ;
278- let optimizer = ExprOptimizer :: new ( & session) ;
279264
280265 let expr = get_item ( "y" , get_item ( "a" , root ( ) ) ) ;
281266
282- let partitioned =
283- partition ( expr, & dtype, annotate_scope_access ( fields) , & optimizer) . unwrap ( ) ;
267+ let partitioned = partition ( expr, & dtype, annotate_scope_access ( fields) ) . unwrap ( ) ;
284268 assert_eq ! ( & partitioned. root, & get_item( "a_0" , get_item( "a" , root( ) ) ) ) ;
285269 }
286270
287271 #[ rstest]
288272 fn test_expr_top_level_ref_get_item_and_split_pack ( dtype : DType ) {
289273 let fields = dtype. as_struct_fields_opt ( ) . unwrap ( ) ;
290- let session = ExprSession :: default ( ) ;
291- let optimizer = ExprOptimizer :: new ( & session) ;
292274
293275 let expr = pack (
294276 [
@@ -298,17 +280,11 @@ mod tests {
298280 ] ,
299281 NonNullable ,
300282 ) ;
301- let partitioned =
302- partition ( expr, & dtype, annotate_scope_access ( fields) , & optimizer) . unwrap ( ) ;
283+ let partitioned = partition ( expr, & dtype, annotate_scope_access ( fields) ) . unwrap ( ) ;
303284
304285 let split_a = partitioned. find_partition ( & "a" . into ( ) ) . unwrap ( ) ;
305286 assert_eq ! (
306- & simplify_typed(
307- split_a. clone( ) ,
308- & dtype,
309- ExprSession :: default ( ) . rewrite_rules( )
310- )
311- . unwrap( ) ,
287+ & split_a. simplify( & dtype) . unwrap( ) ,
312288 & pack(
313289 [
314290 ( "a_0" , get_item( "x" , get_item( "a" , root( ) ) ) ) ,
@@ -322,12 +298,9 @@ mod tests {
322298 #[ rstest]
323299 fn test_expr_top_level_ref_get_item_add ( dtype : DType ) {
324300 let fields = dtype. as_struct_fields_opt ( ) . unwrap ( ) ;
325- let session = ExprSession :: default ( ) ;
326- let optimizer = ExprOptimizer :: new ( & session) ;
327301
328302 let expr = and ( get_item ( "y" , get_item ( "a" , root ( ) ) ) , lit ( 1 ) ) ;
329- let partitioned =
330- partition ( expr, & dtype, annotate_scope_access ( fields) , & optimizer) . unwrap ( ) ;
303+ let partitioned = partition ( expr, & dtype, annotate_scope_access ( fields) ) . unwrap ( ) ;
331304
332305 // Whole expr is a single split
333306 assert_eq ! ( partitioned. partitions. len( ) , 1 ) ;
@@ -336,12 +309,9 @@ mod tests {
336309 #[ rstest]
337310 fn test_expr_top_level_ref_get_item_add_cannot_split ( dtype : DType ) {
338311 let fields = dtype. as_struct_fields_opt ( ) . unwrap ( ) ;
339- let session = ExprSession :: default ( ) ;
340- let optimizer = ExprOptimizer :: new ( & session) ;
341312
342313 let expr = and ( get_item ( "y" , get_item ( "a" , root ( ) ) ) , get_item ( "b" , root ( ) ) ) ;
343- let partitioned =
344- partition ( expr, & dtype, annotate_scope_access ( fields) , & optimizer) . unwrap ( ) ;
314+ let partitioned = partition ( expr, & dtype, annotate_scope_access ( fields) ) . unwrap ( ) ;
345315
346316 // One for id.a and id.b
347317 assert_eq ! ( partitioned. partitions. len( ) , 2 ) ;
@@ -351,16 +321,13 @@ mod tests {
351321 #[ rstest]
352322 fn test_expr_partition_many_occurrences_of_field ( dtype : DType ) {
353323 let fields = dtype. as_struct_fields_opt ( ) . unwrap ( ) ;
354- let session = ExprSession :: default ( ) ;
355- let optimizer = ExprOptimizer :: new ( & session) ;
356324
357325 let expr = and (
358326 get_item ( "y" , get_item ( "a" , root ( ) ) ) ,
359327 select ( [ "a" , "b" ] , root ( ) ) ,
360328 ) ;
361- let expr = simplify_typed ( expr, & dtype, ExprSession :: default ( ) . rewrite_rules ( ) ) . unwrap ( ) ;
362- let partitioned =
363- partition ( expr, & dtype, annotate_scope_access ( fields) , & optimizer) . unwrap ( ) ;
329+ let expr = expr. simplify ( & dtype) . unwrap ( ) ;
330+ let partitioned = partition ( expr, & dtype, annotate_scope_access ( fields) ) . unwrap ( ) ;
364331
365332 // One for id.a and id.b
366333 assert_eq ! ( partitioned. partitions. len( ) , 2 ) ;
@@ -394,13 +361,10 @@ mod tests {
394361 #[ rstest]
395362 fn test_expr_merge ( dtype : DType ) {
396363 let fields = dtype. as_struct_fields_opt ( ) . unwrap ( ) ;
397- let session = ExprSession :: default ( ) ;
398- let optimizer = ExprOptimizer :: new ( & session) ;
399364
400365 let expr = merge ( [ col ( "a" ) , pack ( [ ( "b" , col ( "b" ) ) ] , NonNullable ) ] ) ;
401366
402- let partitioned =
403- partition ( expr, & dtype, annotate_scope_access ( fields) , & optimizer) . unwrap ( ) ;
367+ let partitioned = partition ( expr, & dtype, annotate_scope_access ( fields) ) . unwrap ( ) ;
404368 let expected = pack (
405369 [
406370 ( "x" , get_item ( "x" , get_item ( "a_0" , col ( "a" ) ) ) ) ,
0 commit comments