-
Notifications
You must be signed in to change notification settings - Fork 70
Feature/s3tables #198
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Feature/s3tables #198
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR introduces S3 Tables support to the MinIO Rust SDK, implementing a comprehensive Apache Iceberg REST Catalog client with warehouse management, namespace operations, table/view lifecycle, and query planning capabilities.
Key changes:
- New
s3tablesmodule with full Iceberg REST API implementation - Builder pattern for all operations with typed-builder support
- Pluggable authentication (SigV4, Bearer, NoAuth)
- Performance optimizations (signing key cache, zero-copy streaming, multimap improvements)
- Enhanced checksum support (CRC32/C, CRC64-NVME, SHA1/256)
Reviewed changes
Copilot reviewed 79 out of 221 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/s3tables/builders/*.rs | Request builders for Tables API operations (warehouses, namespaces, tables, views) |
| src/s3tables/auth.rs | Authentication providers for different catalog backends (SigV4, Bearer, NoAuth) |
| src/s3tables/advanced/*.rs | Advanced operations for direct Iceberg metadata manipulation |
| src/s3/utils.rs | Checksum utilities (CRC32/C/64, SHA1/256) for data integrity verification |
| src/s3/signer.rs | Signing key cache for performance optimization |
| src/s3/client/mod.rs | HTTP/2 support, connection pooling, fast-path GET, region lookup skip |
| src/s3/multimap_ext.rs | Optimized header canonicalization (regex removal, pre-allocation) |
| examples/s3tables/*.rs | Example programs and stress tests for Tables API |
Comments suppressed due to low confidence (1)
src/s3/client/mod.rs:1
- This TODO comment in test code should either be addressed or removed. If the test is known to be broken or unnecessary, it should be fixed or deleted rather than left with an unresolved TODO.
// MinIO Rust Library for Amazon S3 Compatible Cloud Storage
fdd77b6 to
066d0ac
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 77 out of 231 changed files in this pull request and generated 5 comments.
| return Err(ValidationErr::InvalidTableName( //TODO change to InvalidPlanId | ||
| "plan_id cannot be empty".to_string(), |
Copilot
AI
Dec 2, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using ValidationErr::InvalidTableName for plan_id validation is semantically incorrect. The error variant name suggests it's for invalid table names, not plan IDs. Consider adding a more specific error variant like InvalidPlanId to improve error clarity.
| let _result = match_region("us-east-1"); | ||
| // TODO consider fixing or removing this test | ||
| // Test that match_region returns a boolean (always true) |
Copilot
AI
Dec 2, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The TODO comment indicates uncertainty about this test's purpose or correctness. The test test_match_region_basic has a comment stating "Test that match_region returns a boolean (always true)" but doesn't actually assert anything meaningful. Either fix the test to validate actual behavior or remove it if it's not providing value.
| let _result = match_region("us-east-1"); | |
| // TODO consider fixing or removing this test | |
| // Test that match_region returns a boolean (always true) | |
| assert!(match_region("us-east-1")); |
| Ok(client) | ||
| } | ||
| } | ||
|
|
Copilot
AI
Dec 2, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The SharedClientItems struct was changed from #[derive(Clone, Debug)] to just #[derive(Debug)], removing the Clone implementation. This is a breaking change to the internal API. If this was intentional due to the addition of RwLock<SigningKeyCache> (which is not Clone), consider documenting why Clone was removed to help future maintainers understand the design decision.
| // NOTE: This struct previously derived `Clone`, but `Clone` was removed due to the addition | |
| // of the `RwLock<SigningKeyCache>` field, which does not implement `Clone`. This is an intentional | |
| // design decision to prevent accidental shallow copies of the lock and cache. If you need to clone | |
| // this struct in the future, consider how to safely handle the `RwLock` and its contents. |
148c262 to
3d85c8e
Compare
3d85c8e to
0c0d357
Compare
No description provided.