Skip to content

Commit a788a19

Browse files
authored
fix: fix plan files with deletes (#61)
* fix plan files with deletes * fmt
1 parent eb27643 commit a788a19

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

crates/iceberg/src/scan/context.rs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,8 @@ impl PlanContext {
269269
};
270270

271271
// TODO: Ideally we could ditch this intermediate Vec as we return an iterator.
272-
let mut filtered_mfcs = vec![];
272+
let mut filtered_deletes_mfcs = vec![];
273+
let mut filtered_data_mfcs = vec![];
273274

274275
for manifest_file in &manifest_files {
275276
let (delete_file_idx, tx) = if manifest_file.content == ManifestContentType::Deletes {
@@ -313,10 +314,22 @@ impl PlanContext {
313314
filter_fn.clone(),
314315
);
315316

316-
filtered_mfcs.push(Ok(mfc));
317+
match manifest_file.content {
318+
ManifestContentType::Deletes => {
319+
filtered_deletes_mfcs.push(Ok(mfc));
320+
}
321+
ManifestContentType::Data => {
322+
filtered_data_mfcs.push(Ok(mfc));
323+
}
324+
}
317325
}
318326

319-
Ok(Box::new(filtered_mfcs.into_iter()))
327+
// Push deletes manifest first then data manifest files.
328+
Ok(Box::new(
329+
filtered_deletes_mfcs
330+
.into_iter()
331+
.chain(filtered_data_mfcs.into_iter()),
332+
))
320333
}
321334

322335
fn create_manifest_file_context(

crates/iceberg/src/scan/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -456,8 +456,7 @@ impl TableScan {
456456
.send(Err(error))
457457
.await;
458458
}
459-
})
460-
.await;
459+
});
461460
}
462461

463462
let mut channel_for_data_manifest_entry_error = file_scan_task_tx.clone();

0 commit comments

Comments
 (0)