Skip to content

Commit 5b1b5eb

Browse files
committed
avoid some clones
1 parent d638b8f commit 5b1b5eb

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

datafusion/core/src/datasource/physical_plan/parquet/access_plan.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -191,8 +191,8 @@ impl ParquetAccessPlan {
191191
/// Note there is no entry for the (entirely) skipped row group 1.
192192
///
193193
/// [`ArrowReaderBuilder::with_row_selection`]: parquet::arrow::arrow_reader::ArrowReaderBuilder::with_row_selection
194-
pub fn overall_row_selection(
195-
&self,
194+
pub fn into_overall_row_selection(
195+
self,
196196
row_group_meta_data: &[RowGroupMetaData],
197197
) -> Option<RowSelection> {
198198
assert_eq!(row_group_meta_data.len(), self.row_groups.len());
@@ -206,7 +206,7 @@ impl ParquetAccessPlan {
206206

207207
let total_selection: RowSelection = self
208208
.row_groups
209-
.iter()
209+
.into_iter()
210210
.zip(row_group_meta_data.iter())
211211
.flat_map(|(rg, rg_meta)| {
212212
match rg {
@@ -216,8 +216,7 @@ impl ParquetAccessPlan {
216216
vec![RowSelector::select(rg_meta.num_rows() as usize)]
217217
}
218218
RowGroupAccess::Selection(selection) => {
219-
// todo avoid these clones
220-
let selection: Vec<RowSelector> = selection.clone().into();
219+
let selection: Vec<RowSelector> = selection.into();
221220
selection
222221
}
223222
}
@@ -353,7 +352,7 @@ mod test {
353352
row_group_access: Vec<RowGroupAccess>,
354353
) -> Option<RowSelection> {
355354
let access_plan = ParquetAccessPlan::new(row_group_access);
356-
access_plan.overall_row_selection(row_group_metadata())
355+
access_plan.into_overall_row_selection(row_group_metadata())
357356
}
358357

359358
static ROW_GROUP_METADATA: OnceLock<Vec<RowGroupMetaData>> = OnceLock::new();

datafusion/core/src/datasource/physical_plan/parquet/opener.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,10 @@ impl FileOpener for ParquetOpener {
184184
}
185185
}
186186

187-
if let Some(row_selection) = access_plan.overall_row_selection(rg_metadata) {
187+
let row_group_indexes = access_plan.row_group_indexes();
188+
if let Some(row_selection) =
189+
access_plan.into_overall_row_selection(rg_metadata)
190+
{
188191
builder = builder.with_row_selection(row_selection);
189192
}
190193

@@ -195,7 +198,7 @@ impl FileOpener for ParquetOpener {
195198
let stream = builder
196199
.with_projection(mask)
197200
.with_batch_size(batch_size)
198-
.with_row_groups(access_plan.row_group_indexes())
201+
.with_row_groups(row_group_indexes)
199202
.build()?;
200203

201204
let adapted = stream

0 commit comments

Comments
 (0)