You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@iceberg.apache.org by "liurenjie1024 (via GitHub)" <gi...@apache.org> on 2025/06/25 10:14:07 UTC
[I] [Discussion] Creating an `iceberg-catalog-api` crate. [iceberg-rust]
liurenjie1024 opened a new issue, #1467:
URL: https://github.com/apache/iceberg-rust/issues/1467
During development I found that some times in the core `iceberg` crate, we need some external dependencies such as `MemoryCatalog`, which is useful in following cases:
1. In doc example: https://github.com/apache/iceberg-rust/pull/1436
2. In unit tests, such as transaction api
So I want to create an `iceberg-catalog-api` crate to move `Catalog` and `CatalogLoader` trait into this module, so that we have following dependency graph:
```
iceberg-catalog-api
|
iceberg-catalog-memory
|(dev dependency)
iceberg
```
## Alternative 1: Moving `iceberg-catalog-memory` to `iceberg` crate
While this solves the problem we are currently facing, this have several disadvantages like following:
1. It makes `iceberg` crate larger.
2. It's not scalable. For example when we finished refactoring of `FileIO`, we may still facing similar issue, and we hope to adopt the proposed approach.
## Alternative 2: Creating an `iceberg-api` crate to contain all trait definition.
This is similar to current proposal, and similar to the java approach. The only problem is that it violated smaller crate principal, but I'm not 100% sure that this is worse.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org