-
Notifications
You must be signed in to change notification settings - Fork 344
Closed
Description
Problem Statem
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:
- In doc example: docs: add
Transactionexample #1436 - 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:
- It makes
icebergcrate larger. - 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.
Metadata
Metadata
Assignees
Labels
No labels