From 5563dbba3e5d7faa1115bb0d3ed8c1229cd40a4e Mon Sep 17 00:00:00 2001 From: Piers Karsenbarg Date: Mon, 10 Nov 2025 10:51:40 +0000 Subject: [PATCH 1/2] Fix catalog name update using NewName field The catalog Update operation was using the Name field to identify the catalog to be updated, but when the catalog name should be changed, the API requires using the NewName field instead. This fixes the bug where attempting to rename a catalog would silently fail because the old name was always used. Also adds a unit test (TestUpdateCatalogName) that reproduces and verifies the fix for this issue. --- catalog/resource_catalog.go | 10 ++++++--- catalog/resource_catalog_test.go | 38 ++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/catalog/resource_catalog.go b/catalog/resource_catalog.go index eaf705fa8e..722c3dacb8 100644 --- a/catalog/resource_catalog.go +++ b/catalog/resource_catalog.go @@ -136,10 +136,15 @@ func ResourceCatalog() common.Resource { common.DataToStructPointer(d, catalogSchema, &updateCatalogRequest) updateCatalogRequest.Name = d.Id() + if d.HasChange("name") { + updateCatalogRequest.NewName = d.Get("name").(string) + } + if d.HasChange("owner") { _, err = w.Catalogs.Update(ctx, catalog.UpdateCatalog{ - Name: updateCatalogRequest.Name, - Owner: updateCatalogRequest.Owner, + Name: updateCatalogRequest.Name, + NewName: updateCatalogRequest.NewName, + Owner: updateCatalogRequest.Owner, }) if err != nil { return err @@ -164,7 +169,6 @@ func ResourceCatalog() common.Resource { } } ci, err := w.Catalogs.Update(ctx, updateCatalogRequest) - if err != nil { if d.HasChange("owner") { // Rollback diff --git a/catalog/resource_catalog_test.go b/catalog/resource_catalog_test.go index b82f394465..808a7c2ee8 100644 --- a/catalog/resource_catalog_test.go +++ b/catalog/resource_catalog_test.go @@ -842,3 +842,41 @@ func TestCatalogSuppressCaseSensitivity(t *testing.T) { `, }.ApplyNoError(t) } + +func TestUpdateCatalogName(t *testing.T) { + qa.ResourceFixture{ + MockWorkspaceClientFunc: func(w *mocks.MockWorkspaceClient) { + w.GetMockMetastoresAPI().EXPECT().Current(mock.Anything).Return(&catalog.MetastoreAssignment{ + MetastoreId: "d", + }, nil) + e := w.GetMockCatalogsAPI().EXPECT() + e.Update(mock.Anything, catalog.UpdateCatalog{ + Name: "old_catalog_name", + NewName: "new_catalog_name", + Comment: "c", + }).Return(&catalog.CatalogInfo{ + Name: "new_catalog_name", + Comment: "c", + }, nil) + e.GetByName(mock.Anything, "new_catalog_name").Return(&catalog.CatalogInfo{ + Name: "new_catalog_name", + Comment: "c", + }, nil) + }, + Resource: ResourceCatalog(), + Update: true, + ID: "old_catalog_name", + InstanceState: map[string]string{ + "metastore_id": "d", + "name": "old_catalog_name", + "comment": "c", + }, + HCL: ` + name = "new_catalog_name" + comment = "c" + `, + }.ApplyAndExpectData(t, map[string]any{ + "name": "new_catalog_name", + "comment": "c", + }) +} From 4842d8c1e9daa4a952d8c20c26a68e36510caef5 Mon Sep 17 00:00:00 2001 From: Piers Karsenbarg Date: Mon, 10 Nov 2025 11:00:31 +0000 Subject: [PATCH 2/2] Updated NEXT_CHANGELOG --- NEXT_CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index 8dda24d61d..035a43823d 100644 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -11,6 +11,8 @@ ### Bug Fixes +* Fix `databricks_catalog` name update using NewName field ([#5205](https://github.com/databricks/terraform-provider-databricks/pull/5205)) + ### Documentation ### Exporter