added capability to pass WriteParams to delete

This commit is contained in:
albertlockett
2024-07-18 15:36:33 -03:00
parent 1c229a90ea
commit 1415d1a23a
5 changed files with 10 additions and 9 deletions

View File

@@ -124,7 +124,7 @@ impl Table {
#[napi(catch_unwind)]
pub async fn delete(&self, predicate: String) -> napi::Result<()> {
self.inner_ref()?.delete(&predicate).await.map_err(|e| {
self.inner_ref()?.delete(&predicate, None).await.map_err(|e| {
napi::Error::from_reason(format!(
"Failed to delete rows in table {}: predicate={}",
self.name, e

View File

@@ -119,7 +119,7 @@ impl Table {
pub fn delete(self_: PyRef<'_, Self>, condition: String) -> PyResult<&PyAny> {
let inner = self_.inner_ref()?.clone();
future_into_py(self_.py(), async move {
inner.delete(&condition).await.infer_error()
inner.delete(&condition, None).await.infer_error()
})
}

View File

@@ -168,7 +168,7 @@ impl JsTable {
let table = js_table.table.clone();
rt.spawn(async move {
let delete_result = table.delete(&predicate).await;
let delete_result = table.delete(&predicate, None).await;
deferred.settle_with(&channel, move |mut cx| {
delete_result.or_throw(&mut cx)?;

View File

@@ -50,7 +50,7 @@ async fn main() -> Result<()> {
create_empty_table(&db).await.unwrap();
// --8<-- [start:delete]
tbl.delete("id > 24").await.unwrap();
tbl.delete("id > 24", None).await.unwrap();
// --8<-- [end:delete]
// --8<-- [start:drop_table]

View File

@@ -399,7 +399,7 @@ pub(crate) trait TableInternal: std::fmt::Display + std::fmt::Debug + Send + Syn
add: AddDataBuilder<NoData>,
data: Box<dyn arrow_array::RecordBatchReader + Send>,
) -> Result<()>;
async fn delete(&self, predicate: &str) -> Result<()>;
async fn delete(&self, predicate: &str, write_options: Option<WriteOptions>) -> Result<()>;
async fn update(&self, update: UpdateBuilder) -> Result<()>;
async fn create_index(&self, index: IndexBuilder) -> Result<()>;
async fn list_indices(&self) -> Result<Vec<IndexConfig>>;
@@ -566,8 +566,8 @@ impl Table {
/// tbl.delete("id > 5").await.unwrap();
/// # });
/// ```
pub async fn delete(&self, predicate: &str) -> Result<()> {
self.inner.delete(predicate).await
pub async fn delete(&self, predicate: &str, write_options: Option<WriteOptions>) -> Result<()> {
self.inner.delete(predicate, write_options).await
}
/// Create an index on the provided column(s).
@@ -1861,8 +1861,9 @@ impl TableInternal for NativeTable {
}
/// Delete rows from the table
async fn delete(&self, predicate: &str) -> Result<()> {
self.dataset.get_mut().await?.delete(predicate).await?;
async fn delete(&self, predicate: &str, write_options: Option<WriteOptions>) -> Result<()> {
let write_params = write_options.and_then(|e| e.lance_write_params);
self.dataset.get_mut().await?.delete(predicate, write_params).await?;
Ok(())
}