mirror of
https://github.com/lancedb/lancedb.git
synced 2026-09-04 20:48:50 +00:00
This PR adds some support for `diff` / `merge` in the remote client as for local tables we stay `NotSupported` until https://github.com/lance-format/lance/issues/7263. This wires the two review-and-land calls against the remote REST API: - `POST /v1/table/{id}/branches/diff` - `POST /v1/table/{id}/branches/merge` Rust gets typed results (`BranchDiff`, `MergeBranchResult`). Python returns the wire JSON, same shape as the REST response. Merge here means promoting a branch's added columns onto `main`. ### Behavior - Remote only. Local raises `NotSupported`. - A rejected merge is not an exception. HTTP 409 still returns `Ok` / a dict with `status="rejected"` and blockers in `diff.mergeBlockers`. - Unknown blocker / status codes parse as `Unknown` so a newer server does not break older clients. - `MergePreview` tolerates missing fields for the same reason. - Merge requests are not retried. 409 is final and carries the body you need. ### Example ```python table = db.open_table("images") table.branches.create("exp") exp = table.branches.checkout("exp") exp.add_columns({"tag": "cast('draft' as string)"}) diff = table.branches.diff("exp") preview = table.branches.merge("exp", dry_run=True) result = table.branches.merge("exp", dry_run=False) if result["status"] == "merged": print("landed at", result["mainVersionAfter"]) elif result["status"] == "rejected": print(result["diff"]["mergeBlockers"]) ``` ### Testing cargo test -p lancedb --features remote diff_branch cargo test -p lancedb --features remote merge_branch --------- Co-authored-by: Cursor <cursoragent@cursor.com>
6.3 KiB
6.3 KiB
@lancedb/lancedb • Docs
@lancedb/lancedb
Namespaces
Enumerations
Classes
- BooleanQuery
- BoostQuery
- BranchContents
- Branches
- Connection
- HeaderProvider
- Index
- MakeArrowTableOptions
- MatchQuery
- MergeInsertBuilder
- MultiMatchQuery
- NativeJsHeaderProvider
- OAuthHeaderProvider
- PermutationBuilder
- PhraseQuery
- Query
- QueryBase
- Scannable
- Session
- StaticHeaderProvider
- Table
- TagContents
- Tags
- TakeQuery
- VectorColumnOptions
- VectorQuery
Interfaces
- AddColumnsResult
- AddColumnsSql
- AddDataOptions
- AddResult
- AlterColumnsResult
- BranchColumnChange
- BranchColumnSummary
- BranchDiff
- BranchIndexSummary
- BranchRowCountSummary
- ClientConfig
- ColumnAlteration
- ColumnOrdering
- CompactionStats
- ConnectNamespaceOptions
- ConnectionOptions
- CreateNamespaceOptions
- CreateNamespaceResponse
- CreateTableOptions
- DeleteResult
- DescribeNamespaceResponse
- DirNamespaceConfig
- DropColumnsResult
- DropNamespaceOptions
- DropNamespaceResponse
- ExecutableQuery
- FieldMetadataUpdate
- FragmentStatistics
- FragmentSummaryStats
- FtsOptions
- FtsToken
- FullTextQuery
- FullTextSearchOptions
- HnswPqOptions
- HnswSqOptions
- IndexConfig
- IndexOptions
- IndexStatistics
- IvfFlatOptions
- IvfPqOptions
- IvfRqOptions
- ListNamespacesOptions
- ListNamespacesResponse
- LsmWriteSpec
- MergeBlocker
- MergeBranchResult
- MergePreview
- MergeResult
- NativeOAuthConfig
- OAuthConfig
- OpenTableOptions
- OptimizeOptions
- OptimizeStats
- QueryExecutionOptions
- RemovalStats
- RenameTableOptions
- RestNamespaceConfig
- RetryConfig
- ScannableOptions
- ShuffleOptions
- SplitCalculatedOptions
- SplitHashOptions
- SplitRandomOptions
- SplitSequentialOptions
- TableNamesOptions
- TableStatistics
- TimeoutConfig
- TlsConfig
- TokenResponse
- TokenizeOptions
- UpdateFieldMetadataResult
- UpdateOptions
- UpdateResult
- Version
- WriteExecutionOptions
- WriteProgress
Type Aliases
- AnalyzePlanDistributedMetrics
- BaseTokenizer
- Data
- DataLike
- FieldLike
- IntoSql
- IntoVector
- MultiVector
- RecordBatchLike
- SchemaLike
- TableLike
- TokenizeTableOptions