Add support for Apache Iceberg REST Catalog specification#198
Open
HJLebbink wants to merge 2 commits intominio:masterfrom
Open
Add support for Apache Iceberg REST Catalog specification#198HJLebbink wants to merge 2 commits intominio:masterfrom
HJLebbink wants to merge 2 commits intominio:masterfrom
Conversation
Contributor
There was a problem hiding this comment.
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
53221cb to
781b702
Compare
9a77319 to
10dcc20
Compare
341190e to
b6721d2
Compare
e0f8714 to
cb66a97
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 196 out of 313 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
src/s3tables/advanced/response/commit_multi_table_transaction.rs:1
- This
CommitMultiTableTransactionResponsedefinition is effectively a duplicate of the one insrc/s3tables/response/commit_multi_table_transaction.rs, which increases maintenance burden and risk of the two versions diverging. Consider reusing a single definition (e.g., via apub useor a type alias from the advanced module to the base response) instead of maintaining two separate but identical structs.
This PR implements the MinIO S3 Tables API based on the Apache Iceberg REST Catalog specification, providing a complete Rust SDK for Iceberg table operations on MinIO.
cb66a97 to
9d64ff6
Compare
Member
Author
|
Apache Iceberg support in MinIO-rs. If someone needs it, here it is. |
Contributor
|
Why would I use this over iceberg-rust? |
fc5dfae to
5e218a1
Compare
For Iceberg Ecosystem Integration this PR introduces a standalone SigV4 authentication crate (iceberg-sigv4) and adds optional iceberg-rust type compatibility, enabling better integration with the Apache Iceberg ecosystem while keeping iceberg-rust as an internal implementation detail invisible to SDK users. It uses iceberg-rust as base for building this echo system. Signed-off-by: Shubhendu Ram Tripathi <shubhendu@minio.io>
5e218a1 to
32fe3da
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR implements the MinIO S3 Tables API based on the Apache Iceberg REST Catalog specification, providing a complete Rust SDK for Iceberg table operations on MinIO.
Features
Core Iceberg REST Catalog API
Warehouse Management:
Namespace Management:
Table Management:
View Management:
Scan Planning:
Advanced Operations: