liurenjie1024 commented on code in PR #1521:
URL: https://github.com/apache/iceberg-rust/pull/1521#discussion_r2228149031
##########
crates/catalog/rest/src/catalog.rs:
##########
@@ -745,10 +749,86 @@ impl Catalog for RestCatalog {
_table_ident: &TableIdent,
Review Comment:
And `_` prefix of parameter name means unused, we should remove them.
##########
crates/catalog/rest/src/catalog.rs:
##########
@@ -745,10 +749,86 @@ impl Catalog for RestCatalog {
_table_ident: &TableIdent,
_metadata_location: String,
) -> Result<Table> {
- Err(Error::new(
- ErrorKind::FeatureUnsupported,
- "Registering a table is not supported yet",
- ))
+ let context = self.context().await?;
+
+ let request = context
+ .client
+ .request(
+ Method::POST,
+ context
+ .config
+ .register_table_endpoint(_table_ident.namespace()),
+ )
+ .json(&RegisterTableRequest {
+ name: _table_ident.name.clone(),
+ metadata_location: _metadata_location.clone(),
+ })
+ .build()?;
+
+ let http_response = context.client.query_catalog(request).await?;
+
+ let response: LoadTableResponse = match http_response.status() {
+ StatusCode::OK => {
+
deserialize_catalog_response::<LoadTableResponse>(http_response).await?
+ }
+ StatusCode::BAD_REQUEST => {
+ return Err(Error::new(
+ ErrorKind::Unexpected,
+ "Unexpected error while registering table.",
+ ));
+ }
+ StatusCode::UNAUTHORIZED => {
+ return Err(Error::new(
+ ErrorKind::Unexpected,
+ "Authenticated user does not have the necessary
permissions.",
+ ));
+ }
+ StatusCode::FORBIDDEN => {
+ return Err(Error::new(
+ ErrorKind::Unexpected,
+ "Authenticated user does not have the necessary
permissions.",
+ ));
+ }
Review Comment:
I think it's useful to process things like 404 and 409, others are general
errors and we could use `deserialize_unexpected_catalog_error` to handle it
##########
crates/catalog/rest/src/types.rs:
##########
@@ -191,3 +191,10 @@ pub(super) struct CommitTableResponse {
pub(super) metadata_location: String,
pub(super) metadata: TableMetadata,
}
+
+#[derive(Debug, Serialize, Deserialize)]
+#[serde(rename_all = "kebab-case")]
+pub(super) struct RegisterTableRequest {
+ pub(super) name: String,
+ pub(super) metadata_location: String,
Review Comment:
Missing a field `owerwrite`, see
https://github.com/apache/iceberg/blob/cab0decbb0e32bf314039e30807eb033c50665d5/open-api/rest-catalog-open-api.yaml#L3536
--
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]