chore: update lance-namespace-reqwest-client to 0.11.0 - #8548
Conversation
Picks up the namespace spec computed column surface (AddColumnsEntry.computed, backfill_column) for downstream SDKs. Every response model gained an optional context map, so the directory namespace initializers fill remaining fields with Default::default(); the new num_inserted_rows and version on InsertIntoTableResponse stay unpopulated there for now.
There was a problem hiding this comment.
❌ Gate recommendation: request changes.
The 0.11.0 bump is the right way to expose the upstream generated models, but its full request contract must be integrated safely: DescribeTableRequest.tag cannot be accepted while silently resolving to the latest table version. Either implement tag resolution and selector validation in directory-backed namespaces, or reject unsupported tagged requests before returning data.
Please mark this PR with the breaking-change label.
| lance-namespace = { version = "=11.0.0-beta.11", path = "./rust/lance-namespace" } | ||
| lance-namespace-impls = { version = "=11.0.0-beta.11", path = "./rust/lance-namespace-impls" } | ||
| lance-namespace-reqwest-client = "0.8.6" | ||
| lance-namespace-reqwest-client = "0.11.0" |
There was a problem hiding this comment.
Version 0.11.0 also adds DescribeTableRequest.tag, but both directory-backed describe_table paths only inspect request.version. A tagged request therefore succeeds while returning the latest snapshot, so callers can silently get the wrong schema or data. Resolve the tag through the existing tag metadata (and reject combinations with version or branch) before checkout, or reject tag explicitly until the backend supports it.
Reproducer
I ran this temporary regression test against the observed head:
let (namespace, _tmp, table_id) = create_tagged_test_table(3).await;
let mut tag = CreateTableTagRequest::new("v1".into(), 1);
tag.id = Some(table_id.clone());
namespace.create_table_tag(tag).await.unwrap();
let mut describe = DescribeTableRequest::new();
describe.id = Some(table_id);
describe.tag = Some("v1".into());
describe.load_detailed_metadata = Some(true);
let response = namespace.describe_table(describe).await.unwrap();
assert_eq!(response.version, Some(1));cargo test --locked -p lance-namespace-impls gate_repro_describe_table_honors_tag --all-features -- --nocapture
It failed with left: Some(3), right: Some(1): the latest version was returned instead of the tagged version.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Picks up the namespace spec computed column surface (AddColumnsEntry.computed,
backfill_column) for downstream SDKs. Every response model gained an optional
context map, so the directory namespace initializers fill remaining fields with
Default::default(); the new num_inserted_rows and version on
InsertIntoTableResponse stay unpopulated there for now.