Skip to content

feat: declare and backfill expression-computed columns - #360

Merged
wkalt merged 1 commit into
mainfrom
ticket/oss-2044/computed-columns-spec
Aug 14, 2026
Merged

wkalt merged 1 commit into
mainfrom
ticket/oss-2044/computed-columns-spec

Conversation

@wkalt

@wkalt wkalt commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

AddColumnsEntry gains a computed member for maintained SQL-expression
columns: declared all-null with the expression persisted as the binding,
type and inputs inferred server-side, filled by backfill rather than at
declaration. The backfill route description widens from UDF-backed columns
to cover expression-computed ones, matching the deployed server. Generated
clients regenerated.

AddColumnsEntry gains a computed member for maintained SQL-expression
columns: declared all-null with the expression persisted as the binding,
type and inputs inferred server-side, filled by backfill rather than at
declaration. The backfill route description widens from UDF-backed columns
to cover expression-computed ones, matching the deployed server. Generated
clients regenerated.
@github-actions github-actions Bot added enhancement New feature or request python Python features java Java features rust Rust features labels Aug 14, 2026
wkalt added a commit to lancedb/lancedb that referenced this pull request Aug 14, 2026
LanceDB Cloud and Enterprise support computed columns through the REST API,
so declaration dispatches per backend: local tables plan the expression
themselves, remote ones send {name, computed} entries for the server to
plan. A remote refresh is the server's backfill job -- refresh_column_async
submits it and returns a handle whose successful wait establishes a
read-freshness baseline on the submitting handle, unless a checkout has
pinned the handle by the time the job completes; the blocking form refuses
rather than invent a fill count the server does not report.

The {name, computed} member matches the deployed enterprise server contract
(lance-format/lance-namespace#360).
wkalt added a commit to lancedb/lancedb that referenced this pull request Aug 14, 2026
LanceDB Cloud and Enterprise support computed columns through the REST API,
so declaration dispatches per backend: local tables plan the expression
themselves, remote ones send {name, computed} entries for the server to
plan. A remote refresh is the server's backfill job -- refresh_column_async
submits it and returns a handle whose successful wait establishes a
read-freshness baseline on the submitting handle, unless a checkout has
pinned the handle by the time the job completes; the blocking form refuses
rather than invent a fill count the server does not report.

The {name, computed} member matches the deployed enterprise server contract
(lance-format/lance-namespace#360).
wkalt added a commit to lancedb/lancedb that referenced this pull request Aug 14, 2026
LanceDB Cloud and Enterprise support computed columns through the REST API,
so declaration dispatches per backend: local tables plan the expression
themselves, remote ones send {name, computed} entries for the server to
plan. A remote refresh is the server's backfill job -- refresh_column_async
submits it and returns a handle whose successful wait establishes a
read-freshness baseline on the submitting handle, unless a checkout has
pinned the handle by the time the job completes; the blocking form refuses
rather than invent a fill count the server does not report.

The {name, computed} member matches the deployed enterprise server contract
(lance-format/lance-namespace#360).
wkalt added a commit to lancedb/lancedb that referenced this pull request Aug 14, 2026
LanceDB Cloud and Enterprise support computed columns through the REST API,
so declaration dispatches per backend: local tables plan the expression
themselves, remote ones send {name, computed} entries for the server to
plan. A remote refresh is the server's backfill job -- refresh_column_async
submits it and returns a handle whose successful wait establishes a
read-freshness baseline on the submitting handle, unless a checkout has
pinned the handle by the time the job completes; the blocking form refuses
rather than invent a fill count the server does not report.

The {name, computed} member matches the deployed enterprise server contract
(lance-format/lance-namespace#360).
wkalt added a commit to lancedb/lancedb that referenced this pull request Aug 14, 2026
LanceDB Cloud and Enterprise support computed columns through the REST API,
so declaration dispatches per backend: local tables plan the expression
themselves, remote ones send {name, computed} entries for the server to
plan. A remote refresh is the server's backfill job -- refresh_column_async
submits it and returns a handle whose successful wait establishes a
read-freshness baseline on the submitting handle, unless a checkout has
pinned the handle by the time the job completes; the blocking form refuses
rather than invent a fill count the server does not report.

The {name, computed} member matches the deployed enterprise server contract
(lance-format/lance-namespace#360).
wkalt added a commit to lancedb/lancedb that referenced this pull request Aug 14, 2026
LanceDB Cloud and Enterprise support computed columns through the REST API,
so declaration dispatches per backend: local tables plan the expression
themselves, remote ones send {name, computed} entries for the server to
plan. A remote refresh is the server's backfill job -- refresh_column_async
submits it and returns a handle whose successful wait establishes a
read-freshness baseline on the submitting handle, unless a checkout has
pinned the handle by the time the job completes; the blocking form refuses
rather than invent a fill count the server does not report.

The {name, computed} member matches the deployed enterprise server contract
(lance-format/lance-namespace#360).
@wkalt
wkalt merged commit de7d5b9 into main Aug 14, 2026
6 checks passed
wkalt added a commit to lancedb/lancedb that referenced this pull request Aug 14, 2026
LanceDB Cloud and Enterprise support computed columns through the REST API,
so declaration dispatches per backend: local tables plan the expression
themselves, remote ones send {name, computed} entries for the server to
plan. A remote refresh is the server's backfill job -- refresh_column_async
submits it and returns a handle whose successful wait establishes a
read-freshness baseline on the submitting handle, unless a checkout has
pinned the handle by the time the job completes; the blocking form refuses
rather than invent a fill count the server does not report.

The {name, computed} member is part of the published namespace contract
(lance-format/lance-namespace#360, merged as de7d5b94e).
wkalt added a commit to lancedb/lancedb that referenced this pull request Aug 14, 2026
LanceDB Cloud and Enterprise support computed columns through the REST API,
so declaration dispatches per backend: local tables plan the expression
themselves, remote ones send {name, computed} entries for the server to
plan. A remote refresh is the server's backfill job -- refresh_column_async
submits it and returns a handle whose successful wait establishes a
read-freshness baseline on the submitting handle, unless a checkout has
pinned the handle by the time the job completes; the blocking form refuses
rather than invent a fill count the server does not report.

The {name, computed} member is part of the published namespace contract
(lance-format/lance-namespace#360, merged as de7d5b94e).
wkalt added a commit to lancedb/lancedb that referenced this pull request Aug 14, 2026
LanceDB Cloud and Enterprise support computed columns through the REST API,
so declaration dispatches per backend: local tables plan the expression
themselves, remote ones send {name, computed} entries for the server to
plan. A remote refresh is the server's backfill job -- refresh_column_async
submits it and returns a handle whose successful wait establishes a
read-freshness baseline on the submitting handle, unless a checkout has
pinned the handle by the time the job completes; the blocking form refuses
rather than invent a fill count the server does not report.

The {name, computed} member is part of the published namespace contract
(lance-format/lance-namespace#360, merged as de7d5b94e).
wkalt added a commit to lancedb/lancedb that referenced this pull request Aug 14, 2026
LanceDB Cloud and Enterprise support computed columns through the REST API,
so declaration dispatches per backend: local tables plan the expression
themselves, remote ones send {name, computed} entries for the server to
plan. A remote refresh is the server's backfill job -- refresh_column_async
submits it and returns a handle whose successful wait establishes a
read-freshness baseline on the submitting handle, unless a checkout has
pinned the handle by the time the job completes; the blocking form refuses
rather than invent a fill count the server does not report.

The {name, computed} member is part of the published namespace contract
(lance-format/lance-namespace#360, merged as de7d5b94e).
wkalt added a commit to lancedb/lancedb that referenced this pull request Aug 14, 2026
LanceDB Cloud and Enterprise support computed columns through the REST API,
so declaration dispatches per backend: local tables plan the expression
themselves, remote ones send {name, computed} entries for the server to
plan. A remote refresh is the server's backfill job -- refresh_column_async
submits it and returns a handle whose successful wait establishes a
read-freshness baseline on the submitting handle, unless a checkout has
pinned the handle by the time the job completes; the blocking form refuses
rather than invent a fill count the server does not report.

The {name, computed} member is part of the published namespace contract
(lance-format/lance-namespace#360, merged as de7d5b94e).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request java Java features python Python features rust Rust features

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants