apache / apache/iceberg-rust

refactor(rest): derive catalog configuration from properties

Open
#3,100 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
1.4k
Forks
567
Avg merge
2d 2h
Merged PRs (30d)
93

Description

Part of [apache/iceberg-rust#3094](https://github.com/apache/iceberg-rust/issues/3094).

## Is your feature request related to a problem or challenge?

The REST catalog manually parses URI and warehouse properties at initial load and while merging server defaults and overrides, alongside OAuth, headers, storage, and injected runtime state.

## Describe the solution you would like

Use the `Properties` derive macro for the REST catalog property projection while preserving client and server precedence, injected clients, arbitrary REST and storage properties, and secret-redacting debug output.

Acceptance criteria:
- Public REST catalog builder APIs remain unchanged.
- Server defaults, client configuration, and server overrides retain their current precedence.
- OAuth, header, FileIO, and KMS properties remain available downstream.
- Injected clients and redacted `Debug` output remain unchanged.
- Focused unit tests cover parsing, merge precedence, retention, and redaction.

## Willingness to contribute

I can contribute to this feature independently.

Contributor guide

Open the contributing guide

Research direction

Start by locating the REST catalog implementation and its current URI, warehouse, server-default, client, and override property handling. Compare that flow with the Properties derive macro, then use focused unit tests for parsing, merge precedence, property retention, injected clients, and redacted Debug output to verify that the public builder APIs and behavior remain unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api, backend
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.