feat: support remote compaction tuning and table inheritance (#4886)

This commit is contained in:
Bruno Ramirez
2026-11-09 11:19:47 -08:00
committed by GitHub
parent 94f366a11a
commit 546a28ad2c
19 changed files with 830 additions and 75 deletions
+20 -4
View File
@@ -1838,6 +1838,10 @@ impl Table {
compaction_options: Option<&Bound<'py, PyDict>>,
) -> PyResult<Bound<'py, PyAny>> {
let inner = self_.inner_ref()?.clone();
let target_specified = compaction_options
.map(|options| options.contains("target_rows_per_fragment"))
.transpose()?
.unwrap_or(false);
let compaction_options = parse_compaction_options(compaction_options)?;
let older_than = if let Some(ms) = cleanup_since_ms {
if ms > i64::MAX as u64 {
@@ -1852,10 +1856,22 @@ impl Table {
None
};
future_into_py(self_.py(), async move {
let stats = inner
.optimize_full(compaction_options, older_than, None, delete_unverified)
.await
.infer_error()?;
let stats = if inner.as_native().is_some() {
inner
.optimize_full(compaction_options, older_than, None, delete_unverified)
.await
} else {
let mut overrides =
lancedb::table::optimize::CompactionOverrides::try_from(compaction_options)
.infer_error()?;
if !target_specified {
overrides.target_rows_per_fragment = None;
}
inner
.optimize_full_with_overrides(overrides, older_than, None, delete_unverified)
.await
}
.infer_error()?;
let compaction_stats = stats.compaction.unwrap();
let prune_stats = stats.prune.unwrap();
Ok(OptimizeStats {