You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@iceberg.apache.org by "tanmayrauth (via GitHub)" <gi...@apache.org> on 2026/07/13 21:20:29 UTC

Re: [PR] feat(rest): Add support for Rename View endpoint [iceberg-go]

tanmayrauth commented on code in PR #1461:
URL: https://github.com/apache/iceberg-go/pull/1461#discussion_r3574220401


##########
catalog/rest/rest.go:
##########
@@ -2045,3 +2045,44 @@ func (r *Catalog) LoadView(ctx context.Context, identifier table.Identifier) (*v
 
 	return view.New(identifier, metadata, rsp.MetadataLoc), nil
 }
+
+func (r *Catalog) RenameView(ctx context.Context, from, to table.Identifier) (*view.View, error) {
+	if err := r.endpoints.check(endpointRenameView); err != nil {
+		return nil, err
+	}
+	if err := catalog.ValidateViewIdentifier(from); err != nil {
+		return nil, err
+	}
+	if err := catalog.ValidateViewIdentifier(to); err != nil {
+		return nil, err
+	}
+
+	type payload struct {
+		Source      identifier `json:"source"`
+		Destination identifier `json:"destination"`
+	}
+	src := identifier{
+		Namespace: catalog.NamespaceFromIdent(from),
+		Name:      catalog.TableNameFromIdent(from),
+	}
+	dst := identifier{
+		Namespace: catalog.NamespaceFromIdent(to),
+		Name:      catalog.TableNameFromIdent(to),
+	}
+
+	path, err := endpointRenameView.reqPath()
+	if err != nil {
+		return nil, err
+	}
+
+	_, err = doPostAllowNoContent[payload, any](ctx, r.baseURI, path, payload{Source: src, Destination: dst}, r.cl,
+		map[int]error{
+			http.StatusNotFound: catalog.ErrNoSuchView,

Review Comment:
   The rename endpoint returns 404 for two distinct cases, a missing source view AND a missing destination namespace (NoSuchNamespaceException) — and both collapse to ErrNoSuchView here. Impact: a caller that does `errors.Is(err, catalog.ErrNoSuchNamespace)` to auto-create the destination namespace and retry will never fire, and the user gets a misleading "view does not exist" when the real problem is the target namespace. CreateView just above (line 2003) maps 404 to ErrNoSuchNamespace for exactly this reason. Since both are 404 you can't split them on status code alone (you'd need the response `type` field), so this may be an accepted limitation — RenameTable has it too.



-- 
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

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