Files
lancedb/docs/src/js/interfaces/MaterializedViewDefinition.md
T
Wyatt Alt b40fbcb543 feat: define a materialized view by its query, with Functions in FROM position
A view definition was a structured record under a `kind` tag, one kind
per query shape, and a Function returning `list<struct>` was about to
add a third. That names shapes instead of describing a relation.

A materialized view is now a relation defined by a query, stored as one
canonical SQL string under a format number:

    SELECT columns FROM [ns.]table [, function(args) AS alias | , UNNEST(column) AS alias]
      [WHERE predicate] [LIMIT n]

Any other clause is refused at parse time. Older readers report the view
as unrefreshable, the pre-format layouts still read, and a legacy view is
rewritten on its next refresh that commits, rebuilt only where its raw
text meant something else under lance's parser.

A Function in FROM position yields one row per element it returns, as a
table function does in any dialect. The server stages its list output in
a hidden table and records that binding beside the query, which stays as
the user wrote it; refresh scans the staging and unnests the column, the
same operator as UNNEST over a list column the table already holds. Row
ids repeat per element, so eviction and incremental append are
unchanged. A local database refuses a Function in FROM position, since
it has no executor.
2026-09-17 17:51:59 +00:00

521 B

@lancedb/lancedb • Docs


@lancedb/lancedb / MaterializedViewDefinition

Interface: MaterializedViewDefinition

The query that defines a materialized view, as stored: SELECT columns FROM [ns.]table [, function(args) AS alias | , UNNEST(column) AS alias] [WHERE predicate] [LIMIT n]. A Function in FROM position yields one row per element it returns.

Properties

query

query: string;

The defining query, in the canonical spelling the server stores.