mirror of
https://github.com/lancedb/lancedb.git
synced 2026-10-29 14:56:51 +00:00
fix: use SQL for all remote materialized view APIs (#4673)
Remote materialized-view APIs now use SQL for the full lifecycle. Create and refresh already submit SQL; this change moves describe, paginated listing, and drop onto `DESCRIBE MATERIALIZED VIEW`, `SHOW MATERIALIZED VIEWS`, and `DROP MATERIALIZED VIEW`. Async create, refresh, and drop return the existing Job handle with `job_type = "query"`. The handle has one `id`: the connection-scoped SQL query ID, also accepted by `describe_query`. Submission starts the query, the job drains its result once, and repeated waits reuse the completed result. Synchronous drop waits for catalog removal; physical cleanup proceeds in the background. Listing uses namespace-scoped keyset pagination with opaque resume tokens. Streamed and deferred SQL responses share the same path. Adds transport coverage and updates Python/TypeScript documentation for query-backed drop jobs. --------- Co-authored-by: Xuanwo <github@xuanwo.io>
This commit is contained in:
@@ -436,8 +436,8 @@ abstract dropMaterializedView(name, namespacePath?): Promise<void>
|
||||
|
||||
Drop the materialized view named `name`.
|
||||
|
||||
The view may become unavailable before physical cleanup finishes. Use
|
||||
[dropMaterializedViewAsync](Connection.md#dropmaterializedviewasync) to retain and wait for the cleanup job.
|
||||
Remote drops wait for the SQL command to remove the catalog binding.
|
||||
Physical cleanup continues in the background.
|
||||
|
||||
Rejects a table that exists but is not a materialized view.
|
||||
|
||||
@@ -459,8 +459,9 @@ Rejects a table that exists but is not a materialized view.
|
||||
abstract dropMaterializedViewAsync(name, namespacePath?): Promise<Job>
|
||||
```
|
||||
|
||||
Start dropping the materialized view named `name` and return its cleanup
|
||||
job without waiting for completion.
|
||||
Start dropping the materialized view named `name` and return its job.
|
||||
Remote jobs have type `query` and use the SQL query ID as `id`. Waiting
|
||||
confirms catalog removal; physical cleanup continues in the background.
|
||||
|
||||
Rejects a table that exists but is not a materialized view.
|
||||
|
||||
|
||||
@@ -72,10 +72,12 @@ SQL-backed job handles follow the query lifecycle described below.
|
||||
|
||||
### SQL-backed job handles
|
||||
|
||||
Remote materialized-view CREATE and REFRESH use the SQL query backend. Python's
|
||||
`create_materialized_view_async()` and `mv.refresh_async()` still return job
|
||||
handles with `status()`, `wait()` and `cancel()`. Synchronous creation and refresh
|
||||
wait on the same SQL execution before returning.
|
||||
Remote materialized-view CREATE, REFRESH, and DROP use the SQL query backend.
|
||||
Python's `create_materialized_view_async()`, `mv.refresh_async()`, and
|
||||
`drop_materialized_view_async()` return job handles with `status()`, `wait()`,
|
||||
and `cancel()`. Synchronous creation, refresh, and drop wait on the same SQL
|
||||
execution before returning. A completed DROP means the catalog binding has been
|
||||
removed; physical cleanup continues in the background.
|
||||
|
||||
The existing `job.job_type` identifies query-backed handles as `"query"` from
|
||||
submission, and `job.id` contains the connection-scoped SQL query UUID string.
|
||||
|
||||
Reference in New Issue
Block a user