@@ -97,6 +97,8 @@ pub(super) struct ParquetOpener {
9797 pub enable_row_group_stats_pruning : bool ,
9898 /// Coerce INT96 timestamps to specific TimeUnit
9999 pub coerce_int96 : Option < TimeUnit > ,
100+ /// Should limit pruning be applied
101+ pub enable_limit_pruning : bool ,
100102 /// Optional parquet FileDecryptionProperties
101103 #[ cfg( feature = "parquet_encryption" ) ]
102104 pub file_decryption_properties : Option < Arc < FileDecryptionProperties > > ,
@@ -144,6 +146,7 @@ impl FileOpener for ParquetOpener {
144146 let enable_bloom_filter = self . enable_bloom_filter ;
145147 let enable_row_group_stats_pruning = self . enable_row_group_stats_pruning ;
146148 let limit = self . limit ;
149+ let enable_limit_pruning = self . enable_limit_pruning ;
147150
148151 let predicate_creation_errors = MetricBuilder :: new ( & self . metrics )
149152 . global_counter ( "num_predicate_creation_errors" ) ;
@@ -377,8 +380,10 @@ impl FileOpener for ParquetOpener {
377380 }
378381
379382 // Prune by limit
380- if let Some ( limit) = limit {
381- row_groups. prune_by_limit ( limit, rg_metadata, & file_metrics) ;
383+ if enable_limit_pruning {
384+ if let Some ( limit) = limit {
385+ row_groups. prune_by_limit ( limit, rg_metadata, & file_metrics) ;
386+ }
382387 }
383388
384389 let mut access_plan = row_groups. build ( ) ;
@@ -826,6 +831,7 @@ mod test {
826831 reorder_filters : false ,
827832 enable_page_index : false ,
828833 enable_bloom_filter : false ,
834+ enable_limit_pruning : false ,
829835 schema_adapter_factory : Arc :: new ( DefaultSchemaAdapterFactory ) ,
830836 enable_row_group_stats_pruning : true ,
831837 coerce_int96 : None ,
@@ -914,6 +920,7 @@ mod test {
914920 reorder_filters : false ,
915921 enable_page_index : false ,
916922 enable_bloom_filter : false ,
923+ enable_limit_pruning : false ,
917924 schema_adapter_factory : Arc :: new ( DefaultSchemaAdapterFactory ) ,
918925 enable_row_group_stats_pruning : true ,
919926 coerce_int96 : None ,
@@ -1018,6 +1025,7 @@ mod test {
10181025 reorder_filters : false ,
10191026 enable_page_index : false ,
10201027 enable_bloom_filter : false ,
1028+ enable_limit_pruning : false ,
10211029 schema_adapter_factory : Arc :: new ( DefaultSchemaAdapterFactory ) ,
10221030 enable_row_group_stats_pruning : true ,
10231031 coerce_int96 : None ,
@@ -1132,6 +1140,7 @@ mod test {
11321140 reorder_filters : true ,
11331141 enable_page_index : false ,
11341142 enable_bloom_filter : false ,
1143+ enable_limit_pruning : false ,
11351144 schema_adapter_factory : Arc :: new ( DefaultSchemaAdapterFactory ) ,
11361145 enable_row_group_stats_pruning : false , // note that this is false!
11371146 coerce_int96 : None ,
@@ -1247,6 +1256,7 @@ mod test {
12471256 reorder_filters : false ,
12481257 enable_page_index : false ,
12491258 enable_bloom_filter : false ,
1259+ enable_limit_pruning : false ,
12501260 schema_adapter_factory : Arc :: new ( DefaultSchemaAdapterFactory ) ,
12511261 enable_row_group_stats_pruning : true ,
12521262 coerce_int96 : None ,
@@ -1429,6 +1439,7 @@ mod test {
14291439 reorder_filters : false ,
14301440 enable_page_index : false ,
14311441 enable_bloom_filter : false ,
1442+ enable_limit_pruning : false ,
14321443 schema_adapter_factory : Arc :: new ( CustomSchemaAdapterFactory ) ,
14331444 enable_row_group_stats_pruning : false ,
14341445 coerce_int96 : None ,
0 commit comments