@@ -1406,7 +1406,7 @@ mod test {
14061406
14071407 // A filter on "a" should not exclude any rows even if it matches the data
14081408 let expr = col ( "a" ) . eq ( lit ( 1 ) ) ;
1409- let predicate = logical2physical ( & expr, & schema) ;
1409+ let predicate = logical2physical ( & expr, Arc :: clone ( & schema) ) ;
14101410 let opener = make_opener ( predicate) ;
14111411 let stream = opener. open ( file. clone ( ) ) . unwrap ( ) . await . unwrap ( ) ;
14121412 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1415,7 +1415,7 @@ mod test {
14151415
14161416 // A filter on `b = 5.0` should exclude all rows
14171417 let expr = col ( "b" ) . eq ( lit ( ScalarValue :: Float32 ( Some ( 5.0 ) ) ) ) ;
1418- let predicate = logical2physical ( & expr, & schema) ;
1418+ let predicate = logical2physical ( & expr, Arc :: clone ( & schema) ) ;
14191419 let opener = make_opener ( predicate) ;
14201420 let stream = opener. open ( file) . unwrap ( ) . await . unwrap ( ) ;
14211421 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1461,7 +1461,8 @@ mod test {
14611461 let expr = col ( "part" ) . eq ( lit ( 1 ) ) ;
14621462 // Mark the expression as dynamic even if it's not to force partition pruning to happen
14631463 // Otherwise we assume it already happened at the planning stage and won't re-do the work here
1464- let predicate = make_dynamic_expr ( logical2physical ( & expr, & table_schema) ) ;
1464+ let predicate =
1465+ make_dynamic_expr ( logical2physical ( & expr, Arc :: clone ( & table_schema) ) ) ;
14651466 let opener = make_opener ( predicate) ;
14661467 let stream = opener. open ( file. clone ( ) ) . unwrap ( ) . await . unwrap ( ) ;
14671468 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1472,7 +1473,7 @@ mod test {
14721473 let expr = col ( "part" ) . eq ( lit ( 2 ) ) ;
14731474 // Mark the expression as dynamic even if it's not to force partition pruning to happen
14741475 // Otherwise we assume it already happened at the planning stage and won't re-do the work here
1475- let predicate = make_dynamic_expr ( logical2physical ( & expr, & table_schema) ) ;
1476+ let predicate = make_dynamic_expr ( logical2physical ( & expr, table_schema) ) ;
14761477 let opener = make_opener ( predicate) ;
14771478 let stream = opener. open ( file) . unwrap ( ) . await . unwrap ( ) ;
14781479 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1528,7 +1529,7 @@ mod test {
15281529
15291530 // Filter should match the partition value and file statistics
15301531 let expr = col ( "part" ) . eq ( lit ( 1 ) ) . and ( col ( "b" ) . eq ( lit ( 1.0 ) ) ) ;
1531- let predicate = logical2physical ( & expr, & table_schema) ;
1532+ let predicate = logical2physical ( & expr, Arc :: clone ( & table_schema) ) ;
15321533 let opener = make_opener ( predicate) ;
15331534 let stream = opener. open ( file. clone ( ) ) . unwrap ( ) . await . unwrap ( ) ;
15341535 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1537,7 +1538,7 @@ mod test {
15371538
15381539 // Should prune based on partition value but not file statistics
15391540 let expr = col ( "part" ) . eq ( lit ( 2 ) ) . and ( col ( "b" ) . eq ( lit ( 1.0 ) ) ) ;
1540- let predicate = logical2physical ( & expr, & table_schema) ;
1541+ let predicate = logical2physical ( & expr, Arc :: clone ( & table_schema) ) ;
15411542 let opener = make_opener ( predicate) ;
15421543 let stream = opener. open ( file. clone ( ) ) . unwrap ( ) . await . unwrap ( ) ;
15431544 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1546,7 +1547,7 @@ mod test {
15461547
15471548 // Should prune based on file statistics but not partition value
15481549 let expr = col ( "part" ) . eq ( lit ( 1 ) ) . and ( col ( "b" ) . eq ( lit ( 7.0 ) ) ) ;
1549- let predicate = logical2physical ( & expr, & table_schema) ;
1550+ let predicate = logical2physical ( & expr, Arc :: clone ( & table_schema) ) ;
15501551 let opener = make_opener ( predicate) ;
15511552 let stream = opener. open ( file. clone ( ) ) . unwrap ( ) . await . unwrap ( ) ;
15521553 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1555,7 +1556,7 @@ mod test {
15551556
15561557 // Should prune based on both partition value and file statistics
15571558 let expr = col ( "part" ) . eq ( lit ( 2 ) ) . and ( col ( "b" ) . eq ( lit ( 7.0 ) ) ) ;
1558- let predicate = logical2physical ( & expr, & table_schema) ;
1559+ let predicate = logical2physical ( & expr, table_schema) ;
15591560 let opener = make_opener ( predicate) ;
15601561 let stream = opener. open ( file) . unwrap ( ) . await . unwrap ( ) ;
15611562 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1601,7 +1602,7 @@ mod test {
16011602
16021603 // Filter should match the partition value and data value
16031604 let expr = col ( "part" ) . eq ( lit ( 1 ) ) . or ( col ( "a" ) . eq ( lit ( 1 ) ) ) ;
1604- let predicate = logical2physical ( & expr, & table_schema) ;
1605+ let predicate = logical2physical ( & expr, Arc :: clone ( & table_schema) ) ;
16051606 let opener = make_opener ( predicate) ;
16061607 let stream = opener. open ( file. clone ( ) ) . unwrap ( ) . await . unwrap ( ) ;
16071608 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1610,7 +1611,7 @@ mod test {
16101611
16111612 // Filter should match the partition value but not the data value
16121613 let expr = col ( "part" ) . eq ( lit ( 1 ) ) . or ( col ( "a" ) . eq ( lit ( 3 ) ) ) ;
1613- let predicate = logical2physical ( & expr, & table_schema) ;
1614+ let predicate = logical2physical ( & expr, Arc :: clone ( & table_schema) ) ;
16141615 let opener = make_opener ( predicate) ;
16151616 let stream = opener. open ( file. clone ( ) ) . unwrap ( ) . await . unwrap ( ) ;
16161617 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1619,7 +1620,7 @@ mod test {
16191620
16201621 // Filter should not match the partition value but match the data value
16211622 let expr = col ( "part" ) . eq ( lit ( 2 ) ) . or ( col ( "a" ) . eq ( lit ( 1 ) ) ) ;
1622- let predicate = logical2physical ( & expr, & table_schema) ;
1623+ let predicate = logical2physical ( & expr, Arc :: clone ( & table_schema) ) ;
16231624 let opener = make_opener ( predicate) ;
16241625 let stream = opener. open ( file. clone ( ) ) . unwrap ( ) . await . unwrap ( ) ;
16251626 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1628,7 +1629,7 @@ mod test {
16281629
16291630 // Filter should not match the partition value or the data value
16301631 let expr = col ( "part" ) . eq ( lit ( 2 ) ) . or ( col ( "a" ) . eq ( lit ( 3 ) ) ) ;
1631- let predicate = logical2physical ( & expr, & table_schema) ;
1632+ let predicate = logical2physical ( & expr, table_schema) ;
16321633 let opener = make_opener ( predicate) ;
16331634 let stream = opener. open ( file) . unwrap ( ) . await . unwrap ( ) ;
16341635 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1681,7 +1682,7 @@ mod test {
16811682 // This filter could prune based on statistics, but since it's not dynamic it's not applied for pruning
16821683 // (the assumption is this happened already at planning time)
16831684 let expr = col ( "a" ) . eq ( lit ( 42 ) ) ;
1684- let predicate = logical2physical ( & expr, & table_schema) ;
1685+ let predicate = logical2physical ( & expr, Arc :: clone ( & table_schema) ) ;
16851686 let opener = make_opener ( predicate) ;
16861687 let stream = opener. open ( file. clone ( ) ) . unwrap ( ) . await . unwrap ( ) ;
16871688 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1690,7 +1691,8 @@ mod test {
16901691
16911692 // If we make the filter dynamic, it should prune.
16921693 // This allows dynamic filters to prune partitions/files even if they are populated late into execution.
1693- let predicate = make_dynamic_expr ( logical2physical ( & expr, & table_schema) ) ;
1694+ let predicate =
1695+ make_dynamic_expr ( logical2physical ( & expr, Arc :: clone ( & table_schema) ) ) ;
16941696 let opener = make_opener ( predicate) ;
16951697 let stream = opener. open ( file. clone ( ) ) . unwrap ( ) . await . unwrap ( ) ;
16961698 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1700,7 +1702,8 @@ mod test {
17001702 // If we have a filter that touches partition columns only and is dynamic, it should prune even if there are no stats.
17011703 file. statistics = Some ( Arc :: new ( Statistics :: new_unknown ( & file_schema) ) ) ;
17021704 let expr = col ( "part" ) . eq ( lit ( 2 ) ) ;
1703- let predicate = make_dynamic_expr ( logical2physical ( & expr, & table_schema) ) ;
1705+ let predicate =
1706+ make_dynamic_expr ( logical2physical ( & expr, Arc :: clone ( & table_schema) ) ) ;
17041707 let opener = make_opener ( predicate) ;
17051708 let stream = opener. open ( file. clone ( ) ) . unwrap ( ) . await . unwrap ( ) ;
17061709 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
@@ -1709,7 +1712,8 @@ mod test {
17091712
17101713 // Similarly a filter that combines partition and data columns should prune even if there are no stats.
17111714 let expr = col ( "part" ) . eq ( lit ( 2 ) ) . and ( col ( "a" ) . eq ( lit ( 42 ) ) ) ;
1712- let predicate = make_dynamic_expr ( logical2physical ( & expr, & table_schema) ) ;
1715+ let predicate =
1716+ make_dynamic_expr ( logical2physical ( & expr, Arc :: clone ( & table_schema) ) ) ;
17131717 let opener = make_opener ( predicate) ;
17141718 let stream = opener. open ( file. clone ( ) ) . unwrap ( ) . await . unwrap ( ) ;
17151719 let ( num_batches, num_rows) = count_batches_and_rows ( stream) . await ;
0 commit comments