Skip to content

Conversation

@zachschuermann
Copy link
Member

What changes are proposed in this pull request?

Adds a new UCCommitter for writing to tables in UC (in uc-catalog crate for now, final resting place TBD).

Additionally, adds the following RW table features in supported writer features (to unblock our write tests but also since these are required t

  • VacuumProtocolCheck
  • V2Checkpoint
  • CatalogManaged (behind catalog-managed feature flag)
  • CatalogOwnedPreview (behind catalog-managed feature flag)

How was this change tested?

added an ignored test to write to cc tables; run with ENDPOINT=".." TABLENAME=".." TOKEN=".." cargo t write_uc_table --nocapture -- --ignored

@codecov
Copy link

codecov bot commented Oct 22, 2025

Codecov Report

❌ Patch coverage is 8.80503% with 145 lines in your changes missing coverage. Please review.
✅ Project coverage is 84.38%. Comparing base (9a9f28a) to head (2007eaf).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
uc-catalog/src/committer.rs 0.00% 73 Missing ⚠️
uc-catalog/src/lib.rs 0.00% 72 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1418      +/-   ##
==========================================
- Coverage   84.61%   84.38%   -0.23%     
==========================================
  Files         117      119       +2     
  Lines       29936    30439     +503     
  Branches    29936    30439     +503     
==========================================
+ Hits        25330    25687     +357     
- Misses       3382     3524     +142     
- Partials     1224     1228       +4     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions github-actions bot added the breaking-change Change that require a major version bump label Oct 22, 2025
Comment on lines +244 to +248
WriterFeature::VacuumProtocolCheck,
WriterFeature::VariantType,
WriterFeature::VariantTypePreview,
WriterFeature::VariantShreddingPreview,
WriterFeature::V2Checkpoint,
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since the test tables i was playing with have V2Checkpoint and VacuumProtocolCheck I went ahead and listed them here. I think this is safe (and even desirable) since (1) we don't yet write v2 checkpoint and (2) we don't vacuum and this will unblock writes to such tables

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mmm, V2Checkpoint disallows multi-part checkpoints. I guess we don't support that in kernel so we're okay?

Comment on lines +84 to +89
// Note: can't just deserialize to () directly so we make an empty struct to deserialize
// the `{}` into. Externally we still return unit type for ease of use/understanding.
#[derive(Deserialize)]
struct EmptyResponse {}
let _: EmptyResponse = self.handle_response(response).await?;
Ok(())
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed latent bug

@nicklan nicklan requested review from DrakeLin and nicklan October 23, 2025 18:44
let mut table_url = Url::parse(&table_uri)?;
// add trailing slash
if !table_url.path().ends_with('/') {
table_url.path_segments_mut().unwrap().push("");
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are we trying to push "/" ?

"{version:020}.{uuid}.json",
version = commit_metadata.version()
);
// FIXME use table path from commit_metadata?
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be a FIXME or a TODO?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

++ the ones after

Copy link
Collaborator

@nicklan nicklan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cool, mostly good just a few comments

Comment on lines +244 to +248
WriterFeature::VacuumProtocolCheck,
WriterFeature::VariantType,
WriterFeature::VariantTypePreview,
WriterFeature::VariantShreddingPreview,
WriterFeature::V2Checkpoint,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mmm, V2Checkpoint disallows multi-part checkpoints. I guess we don't support that in kernel so we're okay?

);
// FIXME use table path from commit_metadata?
let mut commit_path = Url::parse(&self.table_uri)?;
commit_path.path_segments_mut().unwrap().extend(&[
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all the unwraps should be ok_ors

.next()
.unwrap()
.unwrap();
println!("wrote commit file: {:?}", committed);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is part of a lib right? we should info!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change Change that require a major version bump

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants