pypi / lancedb
lancedb
What changed in lancedb 0.38 to 0.40, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-24.
14 breaking1 security60 new APIs and options14 behavior and defaults23 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initlancedb 0.4046 changes
Breaking changes 2
A Function binding is retired when its output columns are dropped.
.and..are no longer allowed as table names.
Security 1
Authentication headers are redacted from debug logs.
New APIs and options 31
The remote client now supports add_columns with a schema.
Node BlobFile exposes seek, tell, bounded read, readRanges, and close.
Blob reads in Node can now accept an AbortSignal for cancellation.
Adds an index builder for BloomFilter indexes.
Python CrossEncoder calls can pass batch_size and other CrossEncoder kwargs.
Clients can list a table's per-row Function errors.
Function initialization is carried in the canonical model.
Functions can be addressed by namespace path.
Registered Functions are represented by OCI image identity.
Python Functions now support initialization and shipped helper code.
Materialized views can be grouped by the IVF partition of a vector column.
The Python SDK can pause and resume jobs.
Adds a JSON field helper for Node.js.
Adds APIs for working with materialized views through remote clients.
Materialized views can now be grouped using GROUP BY.
Materialized views can be defined by a query, with Functions in FROM position.
Makes MetadataEraserExec public for Rust developers.
SQL now exposes composable native vector relations.
Adds an index builder for NGram indexes.
OAuth now uses the oauth2 crate and supports configurable client authentication.
Adds a persistent OAuth token cache and session APIs for retaining authentication state.
OIDC support now includes resource and audience.
Adds remote catalogs and Python and TypeScript bindings.
Adds an index builder for RTree indexes.
Adds named Secrets, bindings, and namespace addressing.
Node Table.add now exposes allowExternalBlobOutsideBases.
Adds a TypeSafe reranker to the Python SDK.
Adds opt-in request batching for TypeSafeReranker.
Adds native vector deduplication and partitioned materialized-view refresh in SQL.
Adds create, read, update, and delete APIs for views.
Adds a Rust zonemap index builder; zonemap index type support is also widened.
Behavior and default changes 3
drop_function now returns a cleanup job.
drop_view now returns a cleanup job.
Hybrid search deduplicates results by primary key on MemWAL tables.
Fixes and other changes 9
Keeps computed-column freshness across branches and clones.
Accepts all-null batches and plain JSON strings for JSON columns.
Node now supports LargeUtf8 and LargeBinary Arrow columns.
open_table and create_table return InvalidTableName instead of panicking for invalid table names.
Pins remote BlobFile reads to the version that was opened.
Remote materialized-view drops now accept synchronous calls.
Ranks each result list separately during RRF multivector reranking.
Sync hybrid queries now apply the default limit of 10.
Node and Python table.update write NaN and infinity as SQL literals.
lancedb 0.3924 changes
Breaking changes 6
Blob table creation no longer enables stable row IDs.
Computed column rows are recomputed when their inputs change.
A new job API replaces
get_job.The
get_jobAPI is replaced bydescribe_job.The
job_historyAPI is replaced byquery_job_events.A new job event query API replaces
job_history.
New APIs and options 7
Remote SQL queries can be run asynchronously.
Node adds blob v2 fetch and field helpers.
Client APIs are added to drop functions.
Materialized views support function columns.
Client APIs are added to list functions.
Remote table merge insert accepts multiple columns in
on.Blob function signatures can be nested.
Behavior and default changes 3
Remote Function CRUD routes are aligned.
Materialized view definitions record the source namespace.
Named function outputs can be nullable.
Fixes and other changes 8
Offsets are applied when combining async hybrid results.
Remote create index forwards the replace flag.
Nested-list data is supported by FTS indexing.
Function output list children are compared by type only.
Repeated job pagination tokens are rejected.
Namespace drop errors are preserved.
Node preserves the optimize cleanup timestamp.
Duplicate take offsets are preserved.
lancedb 0.3842 changes
Breaking changes 6
Branch merge is renamed to cherry_pick.
Node.js parsed embedding configurations are keyed by vector column.
Index catch-up must be recorded and explicitly activated.
The Node.js package now requires Node 22 or later.
The Python package now requires Pydantic v2.
Table existence is now determined by the manifest.
New APIs and options 22
Blob computed columns can be refreshed.
Writes can accept blob URIs.
Blob v2 UDF signatures are supported.
Computed columns can be declared using SQL expressions.
Computed columns are supported on remote tables.
Functions can declare conda environments.
The data loader supports remote tables.
An asynchronous drop table API is available.
Python function versions can be bound to columns.
First-class function wire contracts are available.
Functions can declare GPU resource requirements.
Function column bindings can be grouped.
Python function signatures support large_utf8.
Full-text search exposes list-element document granularity.
Node.js adds listTables and deprecates tableNames.
The synchronous Python RemoteTable exposes LSM checkpoint and stats.
Materialized view declarations are supported on local tables.
Materialized views can be refreshed.
Python supports nested Function Arrow types.
StreamingDataset adds on_transform_error fault tolerance.
Scalar function authoring and a catalog client are available.
StreamingDataset supports sequence packing.
Behavior and default changes 8
A computed-column batch can read its own earlier declarations.
Data loader reads pin the base table version.
A materialized view refresh is bound to the view incarnation.
refresh_column_async now returns a job handle.
Refresh job results are returned with typed results.
Backpressure is added to the StreamingDataset post-transform queue.
Table listings are paged using the store's own cursor.
Python update filters accept expressions.
Fixes and other changes 6
Filters now support double-quoted identifiers.
Multiple function bindings are allowed per table.
Non-null Function inputs are accepted for nullable parameters.
Hybrid search no longer silently ignores offset().
The MemWAL LSM surface is brought to parity across SDKs.
Remote table_names no longer invents a page token for a namespace.