Change8

v0.30.0

Breaking Changes
📦 lancedbView on GitHub →
1 breaking13 features🐛 14 fixes🔧 8 symbols

Summary

This release introduces significant feature enhancements across Python and Node.js, including better support for nested fields in indexing and new connection management utilities. It also resolves several bugs related to namespace handling, indexing, and data appending.

⚠️ Breaking Changes

  • Native index creation now supports nested field paths. This may affect how indices are defined if you were relying on previous implicit path handling.

Migration Steps

  1. Review index creation logic if relying on implicit path handling, as native index creation now explicitly supports nested field paths.

✨ New Features

  • Added namespace management methods on the Node.js Connection object.
  • Exposed `connectNamespace` for namespace-backed connections in Node.js.
  • Added `Scannable` primitive for streaming ingestion in Node.js.
  • Python now supports `bytes` in `lit()` expressions.
  • Added `order_by` method to the Query object in Node.js.
  • Support for setting an unenforced primary key.
  • Support for setting LSM write spec for a table.
  • Added public `take_offsets` method on Permutation in Python.
  • Python's `to_pandas` now aligns with pandas kwargs.
  • Added progress reporting to `Table.add` in Node.js.
  • Added `renameTable` method on Connection in Node.js.
  • Support for DataFusion Expr for table row deletions in Rust.
  • Remote operations now send read freshness headers for table consistency.

🐛 Bug Fixes

  • Invalid namespace mode/behavior in Python, which was silently ignored, now correctly raises a ValueError.
  • Mapped lance-namespace errors to `TableNotFound` / `TableAlreadyExists` in Rust.
  • Fixed matching of embedding scannable columns by name in Rust.
  • Fixed support for nested field paths in native index creation.
  • Fixed returning canonical nested index paths.
  • Fixed checking all table pages for database membership in Python.
  • Dropped version from `Table.__repr__` in Python.
  • Fixed default discovery of nested vector columns.
  • Fixed routing sync `BaseQueryBuilder.to_batches` through the async path in Python.
  • Fixed canonicalization of remote nested field paths.
  • Fixed use of releases API in `check_lance_release.py`.
  • Fixed inverted scores and incorrect missing-FTS penalty in `LinearCombinationReranker`.
  • Removed primary key constraint from MemWAL bucket sharding.
  • Fixed allowing appending arrow.json data into lance.json tables.

Affected Symbols