diff --git a/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/TestHiveCatalogOperations.java b/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/TestHiveCatalogOperations.java index bc488e20be8..0acb4a345a1 100644 --- a/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/TestHiveCatalogOperations.java +++ b/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/TestHiveCatalogOperations.java @@ -103,7 +103,9 @@ void testPropertyMeta() { Assertions.assertFalse(propertyEntryMap.get(CHECK_INTERVAL_SEC).isRequired()); Assertions.assertFalse(propertyEntryMap.get(FETCH_TIMEOUT_SEC).isRequired()); Assertions.assertFalse(propertyEntryMap.get(CLOUD_NAME).isRequired()); + Assertions.assertFalse(propertyEntryMap.get(CLOUD_NAME).isImmutable()); Assertions.assertFalse(propertyEntryMap.get(CLOUD_REGION_CODE).isRequired()); + Assertions.assertFalse(propertyEntryMap.get(CLOUD_REGION_CODE).isImmutable()); } @Test diff --git a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/CatalogIT.java b/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/CatalogIT.java index 94b9eea68e9..5458ea2b1a1 100644 --- a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/CatalogIT.java +++ b/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/CatalogIT.java @@ -300,4 +300,34 @@ void testUpdateCatalogWithNullableComment() { metalake.dropCatalog(catalogName); } + + @Test + public void testAlterCatalogProperties() { + String cloudName = "aws"; + String alterCloudName = "azure"; + String regionCode = "us-east-1"; + String alterRegionCode = "us-west-2"; + + String catalogName = GravitinoITUtils.genRandomName("test_catalog"); + ImmutableMap props = + ImmutableMap.of(Catalog.CLOUD_NAME, cloudName, Catalog.CLOUD_REGION_CODE, regionCode); + Catalog catalog = + metalake.createCatalog( + catalogName, Catalog.Type.FILESET, "hadoop", "catalog comment", props); + Assertions.assertTrue(metalake.catalogExists(catalogName)); + Assertions.assertFalse(catalog.properties().isEmpty()); + Assertions.assertEquals(cloudName, catalog.properties().get(Catalog.CLOUD_NAME)); + Assertions.assertEquals(regionCode, catalog.properties().get(Catalog.CLOUD_REGION_CODE)); + + Catalog alteredCatalog = + metalake.alterCatalog( + catalogName, + CatalogChange.setProperty(Catalog.CLOUD_NAME, alterCloudName), + CatalogChange.setProperty(Catalog.CLOUD_REGION_CODE, alterRegionCode)); + + Assertions.assertEquals(alterCloudName, alteredCatalog.properties().get(Catalog.CLOUD_NAME)); + Assertions.assertEquals( + alterRegionCode, alteredCatalog.properties().get(Catalog.CLOUD_REGION_CODE)); + metalake.dropCatalog(catalogName); + } } diff --git a/core/src/main/java/org/apache/gravitino/connector/BaseCatalogPropertiesMetadata.java b/core/src/main/java/org/apache/gravitino/connector/BaseCatalogPropertiesMetadata.java index b667b6dc795..1ba3e560640 100644 --- a/core/src/main/java/org/apache/gravitino/connector/BaseCatalogPropertiesMetadata.java +++ b/core/src/main/java/org/apache/gravitino/connector/BaseCatalogPropertiesMetadata.java @@ -63,7 +63,7 @@ public abstract class BaseCatalogPropertiesMetadata extends BasePropertiesMetada CLOUD_NAME, "The cloud that the catalog is running on", false /* required */, - true /* immutable */, + false /* immutable */, Catalog.CloudName.class, null /* The default value does not work because if the user does not set it, this property will not be displayed */, false /* hidden */, @@ -71,7 +71,7 @@ public abstract class BaseCatalogPropertiesMetadata extends BasePropertiesMetada PropertyEntry.stringOptionalPropertyEntry( CLOUD_REGION_CODE, "The region code of the cloud that the catalog is running on", - false /* required */, + false /* immutable */, null /* The default value does not work because if the user does not set it, this property will not be displayed */, false /* hidden */)), PropertyEntry::getName);