mirror of
https://github.com/lancedb/lancedb.git
synced 2026-01-15 00:02:59 +00:00
@@ -726,6 +726,21 @@ describe("when optimizing a dataset", () => {
|
||||
expect(stats.prune.bytesRemoved).toBeGreaterThan(0);
|
||||
expect(stats.prune.oldVersionsRemoved).toBe(3);
|
||||
});
|
||||
|
||||
it("delete unverified", async () => {
|
||||
const version = await table.version();
|
||||
const versionFile = `${tmpDir.name}/${table.name}.lance/_versions/${version - 1}.manifest`;
|
||||
fs.rmSync(versionFile);
|
||||
|
||||
let stats = await table.optimize({ deleteUnverified: false });
|
||||
expect(stats.prune.oldVersionsRemoved).toBe(0);
|
||||
|
||||
stats = await table.optimize({
|
||||
cleanupOlderThan: new Date(),
|
||||
deleteUnverified: true,
|
||||
});
|
||||
expect(stats.prune.oldVersionsRemoved).toBeGreaterThan(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe.each([arrow13, arrow14, arrow15, arrow16, arrow17])(
|
||||
|
||||
@@ -84,6 +84,7 @@ export interface OptimizeOptions {
|
||||
* tbl.cleanupOlderVersions(new Date());
|
||||
*/
|
||||
cleanupOlderThan: Date;
|
||||
deleteUnverified: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -671,7 +672,10 @@ export class LocalTable extends Table {
|
||||
cleanupOlderThanMs =
|
||||
new Date().getTime() - options.cleanupOlderThan.getTime();
|
||||
}
|
||||
return await this.inner.optimize(cleanupOlderThanMs);
|
||||
return await this.inner.optimize(
|
||||
cleanupOlderThanMs,
|
||||
options?.deleteUnverified,
|
||||
);
|
||||
}
|
||||
|
||||
async listIndices(): Promise<IndexConfig[]> {
|
||||
|
||||
@@ -265,7 +265,11 @@ impl Table {
|
||||
}
|
||||
|
||||
#[napi(catch_unwind)]
|
||||
pub async fn optimize(&self, older_than_ms: Option<i64>) -> napi::Result<OptimizeStats> {
|
||||
pub async fn optimize(
|
||||
&self,
|
||||
older_than_ms: Option<i64>,
|
||||
delete_unverified: Option<bool>,
|
||||
) -> napi::Result<OptimizeStats> {
|
||||
let inner = self.inner_ref()?;
|
||||
|
||||
let older_than = if let Some(ms) = older_than_ms {
|
||||
@@ -292,7 +296,7 @@ impl Table {
|
||||
let prune_stats = inner
|
||||
.optimize(OptimizeAction::Prune {
|
||||
older_than,
|
||||
delete_unverified: None,
|
||||
delete_unverified,
|
||||
error_if_tagged_old_versions: None,
|
||||
})
|
||||
.await
|
||||
|
||||
Reference in New Issue
Block a user