mirror of
https://github.com/lancedb/lancedb.git
synced 2026-10-28 22:46:14 +00:00
fix: correct remote materialized view refresh results and options (#4672)
Remote materialized-view refreshes drained the SQL result and then fabricated `mode=rebuild`, `rows_written=<total view rows>`, and `source_version=0`. This made incremental refreshes report incorrect statistics. Make these three result fields optional across Rust, Python, and TypeScript, and leave them unset for remote SQL refreshes. Remove the post-refresh row count request. Local refreshes continue to populate all metrics, and `version` remains the view version observed after completion. Remote per-operation statistics remain unavailable until the SQL job adapter can retrieve them. Expose the forced-rebuild option through the Rust builder, synchronous/asynchronous Python refresh and job methods, and TypeScript refresh. Remote `full=true` sends `WITH (full = true)`; the default lets the server choose its refresh mode. Local source-version pinning and remote job cancellation are preserved. Local refresh regression tests respect the `experimental-functions` build gate, while remote refresh coverage also runs in default builds. Validation: - Rust: 20 materialized-view tests and 21 remote SQL tests passed with `remote,experimental-functions`; `cargo fmt --all` passed. - Python: rebuilt the extension in the uv-managed environment. The default build passed 23 tests with 27 feature-dependent skips. The opt-in build passed 61 tests with 3 expected default-build-only skips, covering the materialized-view suite and 14 async query-serialization cases from current main. Python Ruff lint and formatting checks passed. - TypeScript: default and opt-in native builds and TypeScript compilation passed. The default build passed 5 tests with 10 expected feature-dependent skips; the opt-in build passed all 14 materialized-view tests with the default-build-only test skipped. Lint/format checks and documentation generation passed. - Repository-wide `ruff check .` reports 48 pre-existing violations in unchanged `docs/web-tests` files; `ruff check python` passes. Fixes #4670 <!-- lance-gatekeeper-fix:v1 agent=ece43ec4b88a48d1789f60005fa3ecfc generation=1 --> Co-authored-by: Gatefixer <313497061+lancedb-gatefixer[bot]@users.noreply.github.com> Co-authored-by: Xuanwo <github@xuanwo.io>
This commit is contained in:
co-authored by
Xuanwo
parent
c167b99fa0
commit
2cd635d41c
@@ -66,14 +66,18 @@ refresh(options?): Promise<RefreshMaterializedViewResult>
|
||||
Recompute the view from its source.
|
||||
Local refresh requires a source build with `experimental-functions`.
|
||||
|
||||
Every refresh rebuilds the complete view. For local views,
|
||||
`sourceVersion` refreshes to that source version instead of the latest;
|
||||
remote SQL refreshes do not support source-version pinning.
|
||||
`full: true` forces a remote rebuild; otherwise the server chooses the
|
||||
refresh mode. Local views always rebuild, and `sourceVersion` selects a
|
||||
source version instead of the latest. Remote SQL refreshes do not support
|
||||
source-version pinning. Their results leave `mode`, `rowsWritten`, and
|
||||
`sourceVersion` absent because the SQL job adapter does not expose these metrics.
|
||||
|
||||
#### Parameters
|
||||
|
||||
* **options?**
|
||||
|
||||
* **options.full?**: `boolean`
|
||||
|
||||
* **options.sourceVersion?**: `number`
|
||||
|
||||
#### Returns
|
||||
|
||||
@@ -8,30 +8,34 @@
|
||||
|
||||
## Properties
|
||||
|
||||
### mode
|
||||
### mode?
|
||||
|
||||
```ts
|
||||
mode: string;
|
||||
optional mode: string;
|
||||
```
|
||||
|
||||
How the view was brought up to date: "rebuild".
|
||||
How the view was brought up to date: "rebuild", or absent for remote SQL refreshes.
|
||||
|
||||
***
|
||||
|
||||
### rowsWritten
|
||||
### rowsWritten?
|
||||
|
||||
```ts
|
||||
rowsWritten: number;
|
||||
optional rowsWritten: number;
|
||||
```
|
||||
|
||||
Rows written by this refresh, or absent for remote SQL refreshes.
|
||||
|
||||
***
|
||||
|
||||
### sourceVersion
|
||||
### sourceVersion?
|
||||
|
||||
```ts
|
||||
sourceVersion: number;
|
||||
optional sourceVersion: number;
|
||||
```
|
||||
|
||||
Source version refreshed to, or absent for remote SQL refreshes.
|
||||
|
||||
***
|
||||
|
||||
### version
|
||||
|
||||
Reference in New Issue
Block a user