feat: add a cascade option to drop_database (#4697)

The remote catalog could only drop an empty database: it always asked
the server for a restricted drop.

`DropDatabaseRequest::cascade`, `drop_database(..., cascade=True)` in
Python and `dropDatabase(name, { cascade: true })` in TypeScript ask the
server to drop everything in the database first. The name stays taken
until the server finishes cleaning up the dropped objects' storage. A
restricted drop remains the default.
This commit is contained in:
Wyatt Alt
2026-10-27 21:51:10 -07:00
committed by GitHub
parent 45dbf5eff5
commit bb6aa1a147
10 changed files with 98 additions and 24 deletions
+7 -2
View File
@@ -60,16 +60,21 @@ impl Catalog {
})
}
#[pyo3(signature = (name, *, ignore_missing=false))]
#[pyo3(signature = (name, *, ignore_missing=false, cascade=false))]
fn drop_database<'py>(
self_: PyRef<'py, Self>,
name: String,
ignore_missing: bool,
cascade: bool,
) -> PyResult<Bound<'py, PyAny>> {
let inner = self_.inner.clone();
future_into_py(self_.py(), async move {
inner
.drop_database(DropDatabaseRequest::new(name).ignore_missing(ignore_missing))
.drop_database(
DropDatabaseRequest::new(name)
.ignore_missing(ignore_missing)
.cascade(cascade),
)
.await
.infer_error()
})