Skip to content

Commit 24ae747

Browse files
committed
Rename to preserve_order
1 parent cb5711d commit 24ae747

12 files changed

Lines changed: 51 additions & 61 deletions

File tree

datafusion/catalog-listing/src/table.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ impl TableProvider for ListingTable {
506506
.with_statistics(statistics)
507507
.with_projection_indices(projection)
508508
.with_limit(limit)
509-
.with_limit_order_sensitive(args.limit_order_sensitive())
509+
.with_preserve_order(args.preserve_order())
510510
.with_output_ordering(output_ordering)
511511
.with_expr_adapter(self.expr_adapter_factory.clone())
512512
.build(),

datafusion/catalog/src/table.rs

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ pub struct ScanArgs<'a> {
336336
filters: Option<&'a [Expr]>,
337337
projection: Option<&'a [usize]>,
338338
limit: Option<usize>,
339-
limit_order_sensitive: bool,
339+
preserve_order: bool,
340340
}
341341

342342
impl<'a> ScanArgs<'a> {
@@ -399,23 +399,15 @@ impl<'a> ScanArgs<'a> {
399399
self.limit
400400
}
401401

402-
/// Set whether the scan's limit should be order-sensitive.
403-
///
404-
/// If specified, the scan should return the limited rows in a specific order.
405-
/// Or we can leverage limit pruning to optimize the scan.
406-
///
407-
/// # Arguments
408-
/// * `order_sensitive` - Whether the scan's limit should be order-sensitive
409-
pub fn with_limit_order_sensitive(mut self, order_sensitive: bool) -> Self {
410-
self.limit_order_sensitive = order_sensitive;
402+
/// Set whether should keep the output rows in order
403+
pub fn with_preserve_order(mut self, order_sensitive: bool) -> Self {
404+
self.preserve_order = order_sensitive;
411405
self
412406
}
413407

414-
/// Get whether the scan's limit should be order-sensitive.
415-
///
416-
/// Returns `true` if the scan's limit should be order-sensitive, or `false` if not.
417-
pub fn limit_order_sensitive(&self) -> bool {
418-
self.limit_order_sensitive
408+
/// Get whether should keep the output rows in order
409+
pub fn preserve_order(&self) -> bool {
410+
self.preserve_order
419411
}
420412
}
421413

datafusion/core/src/physical_planner.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ impl DefaultPhysicalPlanner {
457457
projection,
458458
filters,
459459
fetch,
460-
fetch_order_sensitive,
460+
preserve_order,
461461
..
462462
}) => {
463463
let source = source_as_provider(source)?;
@@ -470,7 +470,7 @@ impl DefaultPhysicalPlanner {
470470
.with_projection(projection.as_deref())
471471
.with_filters(Some(&filters_vec))
472472
.with_limit(*fetch)
473-
.with_limit_order_sensitive(*fetch_order_sensitive);
473+
.with_preserve_order(*preserve_order);
474474
let res = source.scan_with_args(session_state, opts).await?;
475475
Arc::clone(res.plan())
476476
}

datafusion/datasource-parquet/src/opener.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ pub(super) struct ParquetOpener {
6868
pub batch_size: usize,
6969
/// Optional limit on the number of rows to read
7070
pub limit: Option<usize>,
71-
/// limit order sensitivity
72-
pub limit_order_sensitive: bool,
71+
/// If should keep the output rows in order
72+
pub preserve_order: bool,
7373
/// Optional predicate to apply during the scan
7474
pub predicate: Option<Arc<dyn PhysicalExpr>>,
7575
/// Schema of the output table without partition columns.
@@ -165,7 +165,7 @@ impl FileOpener for ParquetOpener {
165165
let encryption_context = self.get_encryption_context();
166166
let max_predicate_cache_size = self.max_predicate_cache_size;
167167

168-
let limit_order_sensitive = self.limit_order_sensitive;
168+
let preserve_order = self.preserve_order;
169169

170170
Ok(Box::pin(async move {
171171
#[cfg(feature = "parquet_encryption")]
@@ -412,7 +412,7 @@ impl FileOpener for ParquetOpener {
412412
}
413413

414414
// Prune by limit if limit is set and limit order is not sensitive
415-
if let (Some(limit), false) = (limit, limit_order_sensitive) {
415+
if let (Some(limit), false) = (limit, preserve_order) {
416416
row_groups.prune_by_limit(limit, rg_metadata, &file_metrics);
417417
}
418418

@@ -885,7 +885,7 @@ mod test {
885885
projection: Arc::new([0, 1]),
886886
batch_size: 1024,
887887
limit: None,
888-
limit_order_sensitive: false,
888+
preserve_order: false,
889889
predicate: Some(predicate),
890890
logical_file_schema: schema.clone(),
891891
metadata_size_hint: None,
@@ -955,7 +955,7 @@ mod test {
955955
projection: Arc::new([0]),
956956
batch_size: 1024,
957957
limit: None,
958-
limit_order_sensitive: false,
958+
preserve_order: false,
959959
predicate: Some(predicate),
960960
logical_file_schema: file_schema.clone(),
961961
metadata_size_hint: None,
@@ -1045,7 +1045,7 @@ mod test {
10451045
projection: Arc::new([0]),
10461046
batch_size: 1024,
10471047
limit: None,
1048-
limit_order_sensitive: false,
1048+
preserve_order: false,
10491049
predicate: Some(predicate),
10501050
logical_file_schema: file_schema.clone(),
10511051
metadata_size_hint: None,
@@ -1138,7 +1138,7 @@ mod test {
11381138
projection: Arc::new([0]),
11391139
batch_size: 1024,
11401140
limit: None,
1141-
limit_order_sensitive: false,
1141+
preserve_order: false,
11421142
predicate: Some(predicate),
11431143
logical_file_schema: file_schema.clone(),
11441144
metadata_size_hint: None,
@@ -1231,7 +1231,7 @@ mod test {
12311231
projection: Arc::new([0]),
12321232
batch_size: 1024,
12331233
limit: None,
1234-
limit_order_sensitive: false,
1234+
preserve_order: false,
12351235
predicate: Some(predicate),
12361236
logical_file_schema: file_schema.clone(),
12371237
metadata_size_hint: None,
@@ -1386,7 +1386,7 @@ mod test {
13861386
projection: Arc::new([0, 1]),
13871387
batch_size: 1024,
13881388
limit: None,
1389-
limit_order_sensitive: false,
1389+
preserve_order: false,
13901390
predicate: Some(predicate),
13911391
logical_file_schema: Arc::clone(&table_schema),
13921392
metadata_size_hint: None,

datafusion/datasource-parquet/src/source.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ impl FileSource for ParquetSource {
583583
.batch_size
584584
.expect("Batch size must set before creating ParquetOpener"),
585585
limit: base_config.limit,
586-
limit_order_sensitive: base_config.limit_order_sensitive,
586+
preserve_order: base_config.preserve_order,
587587
predicate: self.predicate.clone(),
588588
logical_file_schema: Arc::clone(base_config.file_schema()),
589589
partition_fields: base_config.table_partition_cols().clone(),

datafusion/datasource/src/file_scan_config.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ pub struct FileScanConfig {
176176
/// all records after filtering are returned.
177177
pub limit: Option<usize>,
178178
/// Whether the scan's limit is order sensitive
179-
pub limit_order_sensitive: bool,
179+
pub preserve_order: bool,
180180
/// All equivalent lexicographical orderings that describe the schema.
181181
pub output_ordering: Vec<LexOrdering>,
182182
/// File compression type
@@ -258,7 +258,7 @@ pub struct FileScanConfigBuilder {
258258
object_store_url: ObjectStoreUrl,
259259
file_source: Arc<dyn FileSource>,
260260
limit: Option<usize>,
261-
limit_order_sensitive: bool,
261+
preserve_order: bool,
262262
projection_indices: Option<Vec<usize>>,
263263
constraints: Option<Constraints>,
264264
file_groups: Vec<FileGroup>,
@@ -290,7 +290,7 @@ impl FileScanConfigBuilder {
290290
file_compression_type: None,
291291
new_lines_in_values: None,
292292
limit: None,
293-
limit_order_sensitive: false,
293+
preserve_order: false,
294294
projection_indices: None,
295295
constraints: None,
296296
batch_size: None,
@@ -306,8 +306,8 @@ impl FileScanConfigBuilder {
306306
}
307307

308308
/// Set whether the limit should be order-sensitive.
309-
pub fn with_limit_order_sensitive(mut self, order_sensitive: bool) -> Self {
310-
self.limit_order_sensitive = order_sensitive;
309+
pub fn with_preserve_order(mut self, order_sensitive: bool) -> Self {
310+
self.preserve_order = order_sensitive;
311311
self
312312
}
313313

@@ -438,7 +438,7 @@ impl FileScanConfigBuilder {
438438
object_store_url,
439439
file_source,
440440
limit,
441-
limit_order_sensitive,
441+
preserve_order,
442442
projection_indices,
443443
constraints,
444444
file_groups,
@@ -472,7 +472,7 @@ impl FileScanConfigBuilder {
472472
object_store_url,
473473
file_source,
474474
limit,
475-
limit_order_sensitive,
475+
preserve_order,
476476
projection_exprs,
477477
constraints,
478478
file_groups,
@@ -497,7 +497,7 @@ impl From<FileScanConfig> for FileScanConfigBuilder {
497497
file_compression_type: Some(config.file_compression_type),
498498
new_lines_in_values: Some(config.new_lines_in_values),
499499
limit: config.limit,
500-
limit_order_sensitive: config.limit_order_sensitive,
500+
preserve_order: config.preserve_order,
501501
projection_indices: config
502502
.projection_exprs
503503
.map(|p| p.ordered_column_indices()),

datafusion/expr/src/logical_plan/plan.rs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2652,9 +2652,8 @@ pub struct TableScan {
26522652
pub filters: Vec<Expr>,
26532653
/// Optional number of rows to read
26542654
pub fetch: Option<usize>,
2655-
/// If the fetch is order-sensitive, it'll be true.
2656-
/// And the limit pruning will be enabled.
2657-
pub fetch_order_sensitive: bool,
2655+
/// If should keep the output rows in order
2656+
pub preserve_order: bool,
26582657
}
26592658

26602659
impl Debug for TableScan {
@@ -2677,7 +2676,7 @@ impl PartialEq for TableScan {
26772676
&& self.projected_schema == other.projected_schema
26782677
&& self.filters == other.filters
26792678
&& self.fetch == other.fetch
2680-
&& self.fetch_order_sensitive == other.fetch_order_sensitive
2679+
&& self.preserve_order == other.preserve_order
26812680
}
26822681
}
26832682

@@ -2698,21 +2697,21 @@ impl PartialOrd for TableScan {
26982697
/// Optional number of rows to read
26992698
pub fetch: &'a Option<usize>,
27002699
/// Whether the fetch is order-sensitive
2701-
pub fetch_order_sensitive: bool,
2700+
pub preserve_order: bool,
27022701
}
27032702
let comparable_self = ComparableTableScan {
27042703
table_name: &self.table_name,
27052704
projection: &self.projection,
27062705
filters: &self.filters,
27072706
fetch: &self.fetch,
2708-
fetch_order_sensitive: self.fetch_order_sensitive,
2707+
preserve_order: self.preserve_order,
27092708
};
27102709
let comparable_other = ComparableTableScan {
27112710
table_name: &other.table_name,
27122711
projection: &other.projection,
27132712
filters: &other.filters,
27142713
fetch: &other.fetch,
2715-
fetch_order_sensitive: other.fetch_order_sensitive,
2714+
preserve_order: other.preserve_order,
27162715
};
27172716
comparable_self
27182717
.partial_cmp(&comparable_other)
@@ -2728,7 +2727,7 @@ impl Hash for TableScan {
27282727
self.projected_schema.hash(state);
27292728
self.filters.hash(state);
27302729
self.fetch.hash(state);
2731-
self.fetch_order_sensitive.hash(state);
2730+
self.preserve_order.hash(state);
27322731
}
27332732
}
27342733

@@ -2782,7 +2781,7 @@ impl TableScan {
27822781
projected_schema,
27832782
filters,
27842783
fetch,
2785-
fetch_order_sensitive: false,
2784+
preserve_order: false,
27862785
})
27872786
}
27882787
}
@@ -4942,7 +4941,7 @@ mod tests {
49424941
projected_schema: Arc::clone(&schema),
49434942
filters: vec![],
49444943
fetch: None,
4945-
fetch_order_sensitive: false,
4944+
preserve_order: false,
49464945
}));
49474946
let col = schema.field_names()[0].clone();
49484947

@@ -4973,7 +4972,7 @@ mod tests {
49734972
projected_schema: Arc::clone(&unique_schema),
49744973
filters: vec![],
49754974
fetch: None,
4976-
fetch_order_sensitive: false,
4975+
preserve_order: false,
49774976
}));
49784977
let col = schema.field_names()[0].clone();
49794978

datafusion/expr/src/logical_plan/tree_node.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,7 @@ impl LogicalPlan {
599599
projected_schema,
600600
filters,
601601
fetch,
602-
fetch_order_sensitive,
602+
preserve_order,
603603
}) => filters.map_elements(f)?.update_data(|filters| {
604604
LogicalPlan::TableScan(TableScan {
605605
table_name,
@@ -608,7 +608,7 @@ impl LogicalPlan {
608608
projected_schema,
609609
filters,
610610
fetch,
611-
fetch_order_sensitive,
611+
preserve_order,
612612
})
613613
}),
614614
LogicalPlan::Distinct(Distinct::On(DistinctOn {

datafusion/optimizer/src/optimize_projections/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ fn optimize_projections(
260260
projection,
261261
filters,
262262
fetch,
263-
fetch_order_sensitive,
263+
preserve_order,
264264
projected_schema: _,
265265
} = table_scan;
266266

@@ -272,7 +272,7 @@ fn optimize_projections(
272272
};
273273
let mut new_scan =
274274
TableScan::try_new(table_name, source, Some(projection), filters, fetch)?;
275-
new_scan.fetch_order_sensitive = fetch_order_sensitive;
275+
new_scan.preserve_order = preserve_order;
276276

277277
return Ok(Transformed::yes(LogicalPlan::TableScan(new_scan)));
278278
}

datafusion/optimizer/src/push_down_filter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3119,7 +3119,7 @@ mod tests {
31193119
projection,
31203120
source: Arc::new(test_provider),
31213121
fetch: None,
3122-
fetch_order_sensitive: false,
3122+
preserve_order: false,
31233123
});
31243124

31253125
Ok(LogicalPlanBuilder::from(table_scan))

0 commit comments

Comments
 (0)