123digits opened a new issue, #3339:
URL: https://github.com/apache/iceberg-rust/issues/3339
### Is your feature request related to a problem or challenge?
`RestCatalog::update_namespace` is a stub. In
`crates/catalog/rest/src/catalog.rs` (0.10.1 and `main`) it returns:
```rust
Err(Error::new(ErrorKind::FeatureUnsupported, "Updating namespace not
supported yet!"))
So a Rust client cannot set or remove namespace properties on a REST
catalog, though the SQL catalog already implements update_namespace. Every
other Iceberg client supports this against the same endpoint:
- Iceberg Java: RESTSessionCatalog.updateNamespaceMetadata (behind
SupportsNamespaces.setProperties / removeProperties)
- pyiceberg: RestCatalog.update_namespace_properties(namespace, removals,
updates)
- iceberg-go: rest.Catalog.UpdateNamespaceProperties(ctx, namespace,
removals, updates)
What the spec defines (open-api/rest-catalog-open-api.yaml):
updateProperties, POST /v1/{prefix}/namespaces/{namespace}/properties, with an
UpdateNamespacePropertiesRequest of removals (keys) and updates (key → value).
The reply is an UpdateNamespacePropertiesResponse listing updated, removed and
missing keys. A key in both lists is a 422.
Use case: any tool that manages namespaces declaratively (Kubernetes
operators, Terraform-style tools, migration scripts) needs to set owner and
location properties, record ownership markers, and remove them again. Without
this, a Rust client can create a namespace with properties but never change
them afterwards.
### Describe the solution you'd like
- Implement update_namespace on the REST catalog with POST
.../namespaces/{namespace}/properties. The Catalog trait documents properties
as "the full set of namespace", so the client can load the namespace first,
then send the keys that changed as updates and the keys that went away as
removals.
- Optionally, also expose the spec's diff form directly (for example
update_namespace_properties(namespace, removals, updates) ->
UpdateNamespacePropertiesResponse, matching Java, pyiceberg and iceberg-go). It
avoids the extra load and the race between load and update, and returns the
server's updated/removed/missing report.
- Map 404 to NamespaceNotFound and 422 to a data-invalid error, like the
other namespace calls.
### Willingness to contribute
I cannot contribute to this feature at this time
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]