This is an automated email from the ASF dual-hosted git repository.
yuqi4733 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/main by this push:
new 55a5028a34 [#9166] fix(core): fix update comment from null (#9301)
55a5028a34 is described below
commit 55a5028a348e8bf5c2a5c885d0b063d1b9d9b4e7
Author: mchades <[email protected]>
AuthorDate: Tue Dec 2 11:23:38 2025 +0800
[#9166] fix(core): fix update comment from null (#9301)
### What changes were proposed in this pull request?
fix update comment from null
### Why are the changes needed?
Fix: #9166
### Does this PR introduce _any_ user-facing change?
no
### How was this patch tested?
CI pass
---------
Co-authored-by: Mini Yu <[email protected]>
---
.../provider/base/ModelMetaBaseSQLProvider.java | 3 +-
.../base/ModelVersionMetaBaseSQLProvider.java | 3 +-
.../provider/base/SchemaMetaBaseSQLProvider.java | 3 +-
.../provider/base/TagMetaBaseSQLProvider.java | 3 +-
.../provider/base/TopicMetaBaseSQLProvider.java | 3 +-
.../postgresql/ModelMetaPostgreSQLProvider.java | 28 +++++++++++++++++
.../ModelVersionMetaPostgreSQLProvider.java | 31 +++++++++++++++++++
.../postgresql/SchemaMetaPostgreSQLProvider.java | 28 +++++++++++++++++
.../postgresql/TopicMetaPostgreSQLProvider.java | 30 +++++++++++++++++++
.../relational/service/TestModelMetaService.java | 31 +++++++++++++++++++
.../service/TestModelVersionMetaService.java | 2 +-
.../relational/service/TestSchemaMetaService.java | 35 ++++++++++++++++++++++
.../relational/service/TestTagMetaService.java | 32 ++++++++++++++++++++
.../relational/service/TestTopicMetaService.java | 30 ++++++++++++++++++-
14 files changed, 255 insertions(+), 7 deletions(-)
diff --git
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/ModelMetaBaseSQLProvider.java
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/ModelMetaBaseSQLProvider.java
index 29c2bfde5a..ec8e20de21 100644
---
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/ModelMetaBaseSQLProvider.java
+++
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/ModelMetaBaseSQLProvider.java
@@ -178,7 +178,8 @@ public class ModelMetaBaseSQLProvider {
+ " AND metalake_id = #{oldModelMeta.metalakeId}"
+ " AND catalog_id = #{oldModelMeta.catalogId}"
+ " AND schema_id = #{oldModelMeta.schemaId}"
- + " AND model_comment = #{oldModelMeta.modelComment}"
+ + " AND (model_comment = #{oldModelMeta.modelComment}"
+ + " OR (model_comment IS NULL and #{oldModelMeta.modelComment} IS
NULL))"
+ " AND model_properties = #{oldModelMeta.modelProperties}"
+ " AND model_latest_version = #{oldModelMeta.modelLatestVersion}"
+ " AND audit_info = #{oldModelMeta.auditInfo}"
diff --git
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/ModelVersionMetaBaseSQLProvider.java
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/ModelVersionMetaBaseSQLProvider.java
index ec48d1da05..858d1f043a 100644
---
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/ModelVersionMetaBaseSQLProvider.java
+++
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/ModelVersionMetaBaseSQLProvider.java
@@ -206,7 +206,8 @@ public class ModelVersionMetaBaseSQLProvider {
+ " AND catalog_id = #{oldModelVersionMeta.catalogId}"
+ " AND schema_id = #{oldModelVersionMeta.schemaId}"
+ " AND version = #{oldModelVersionMeta.modelVersion}"
- + " AND model_version_comment =
#{oldModelVersionMeta.modelVersionComment}"
+ + " AND (model_version_comment =
#{oldModelVersionMeta.modelVersionComment}"
+ + " OR (model_version_comment IS NULL and
#{oldModelVersionMeta.modelVersionComment} IS NULL))"
+ " AND model_version_properties =
#{oldModelVersionMeta.modelVersionProperties}"
+ " AND audit_info = #{oldModelVersionMeta.auditInfo}"
+ " AND deleted_at = 0";
diff --git
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/SchemaMetaBaseSQLProvider.java
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/SchemaMetaBaseSQLProvider.java
index 5d3248174e..437c94ce15 100644
---
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/SchemaMetaBaseSQLProvider.java
+++
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/SchemaMetaBaseSQLProvider.java
@@ -152,7 +152,8 @@ public class SchemaMetaBaseSQLProvider {
+ " AND schema_name = #{oldSchemaMeta.schemaName}"
+ " AND metalake_id = #{oldSchemaMeta.metalakeId}"
+ " AND catalog_id = #{oldSchemaMeta.catalogId}"
- + " AND (schema_comment IS NULL OR schema_comment =
#{oldSchemaMeta.schemaComment})"
+ + " AND (schema_comment = #{oldSchemaMeta.schemaComment}"
+ + " OR (schema_comment IS NULL and #{oldSchemaMeta.schemaComment} IS
NULL))"
+ " AND properties = #{oldSchemaMeta.properties}"
+ " AND audit_info = #{oldSchemaMeta.auditInfo}"
+ " AND current_version = #{oldSchemaMeta.currentVersion}"
diff --git
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/TagMetaBaseSQLProvider.java
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/TagMetaBaseSQLProvider.java
index 330b25d179..8872c379f4 100644
---
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/TagMetaBaseSQLProvider.java
+++
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/TagMetaBaseSQLProvider.java
@@ -160,7 +160,8 @@ public class TagMetaBaseSQLProvider {
+ " WHERE tag_id = #{oldTagMeta.tagId}"
+ " AND metalake_id = #{oldTagMeta.metalakeId}"
+ " AND tag_name = #{oldTagMeta.tagName}"
- + " AND (tag_comment IS NULL OR tag_comment = #{oldTagMeta.comment})"
+ + " AND (tag_comment = #{oldTagMeta.comment}"
+ + " OR (tag_comment IS NULL and #{oldTagMeta.comment} IS NULL))"
+ " AND properties = #{oldTagMeta.properties}"
+ " AND audit_info = #{oldTagMeta.auditInfo}"
+ " AND current_version = #{oldTagMeta.currentVersion}"
diff --git
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/TopicMetaBaseSQLProvider.java
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/TopicMetaBaseSQLProvider.java
index 797ab4ba1d..2f609f7370 100644
---
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/TopicMetaBaseSQLProvider.java
+++
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/TopicMetaBaseSQLProvider.java
@@ -151,7 +151,8 @@ public class TopicMetaBaseSQLProvider {
+ " AND metalake_id = #{oldTopicMeta.metalakeId}"
+ " AND catalog_id = #{oldTopicMeta.catalogId}"
+ " AND schema_id = #{oldTopicMeta.schemaId}"
- + " AND comment = #{oldTopicMeta.comment}"
+ + " AND (comment = #{oldTopicMeta.comment}"
+ + " OR (comment IS NULL and #{oldTopicMeta.comment} IS NULL))"
+ " AND properties = #{oldTopicMeta.properties}"
+ " AND audit_info = #{oldTopicMeta.auditInfo}"
+ " AND current_version = #{oldTopicMeta.currentVersion}"
diff --git
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/ModelMetaPostgreSQLProvider.java
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/ModelMetaPostgreSQLProvider.java
index 1ea7afd880..ea106d5d05 100644
---
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/ModelMetaPostgreSQLProvider.java
+++
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/ModelMetaPostgreSQLProvider.java
@@ -89,4 +89,32 @@ public class ModelMetaPostgreSQLProvider extends
ModelMetaBaseSQLProvider {
+ ModelMetaMapper.TABLE_NAME
+ " WHERE deleted_at > 0 AND deleted_at < #{legacyTimeline} LIMIT
#{limit})";
}
+
+ @Override
+ public String updateModelMeta(
+ @Param("newModelMeta") ModelPO newModelPO, @Param("oldModelMeta")
ModelPO oldModelPO) {
+ return "UPDATE "
+ + ModelMetaMapper.TABLE_NAME
+ + " SET model_name = #{newModelMeta.modelName},"
+ + " metalake_id = #{newModelMeta.metalakeId},"
+ + " catalog_id = #{newModelMeta.catalogId},"
+ + " schema_id = #{newModelMeta.schemaId},"
+ + " model_comment = #{newModelMeta.modelComment},"
+ + " model_properties = #{newModelMeta.modelProperties},"
+ + " model_latest_version = #{newModelMeta.modelLatestVersion},"
+ + " audit_info = #{newModelMeta.auditInfo},"
+ + " deleted_at = #{newModelMeta.deletedAt}"
+ + " WHERE model_id = #{oldModelMeta.modelId}"
+ + " AND model_name = #{oldModelMeta.modelName}"
+ + " AND metalake_id = #{oldModelMeta.metalakeId}"
+ + " AND catalog_id = #{oldModelMeta.catalogId}"
+ + " AND schema_id = #{oldModelMeta.schemaId}"
+ + " AND (model_comment = #{oldModelMeta.modelComment}"
+ + " OR (CAST(model_comment AS VARCHAR) IS NULL"
+ + " AND CAST(#{oldModelMeta.modelComment} AS VARCHAR) IS NULL))"
+ + " AND model_properties = #{oldModelMeta.modelProperties}"
+ + " AND model_latest_version = #{oldModelMeta.modelLatestVersion}"
+ + " AND audit_info = #{oldModelMeta.auditInfo}"
+ + " AND deleted_at = 0";
+ }
}
diff --git
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/ModelVersionMetaPostgreSQLProvider.java
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/ModelVersionMetaPostgreSQLProvider.java
index 00ae16c503..d67767ed8e 100644
---
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/ModelVersionMetaPostgreSQLProvider.java
+++
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/ModelVersionMetaPostgreSQLProvider.java
@@ -22,6 +22,7 @@ import
org.apache.gravitino.storage.relational.mapper.ModelMetaMapper;
import
org.apache.gravitino.storage.relational.mapper.ModelVersionAliasRelMapper;
import org.apache.gravitino.storage.relational.mapper.ModelVersionMetaMapper;
import
org.apache.gravitino.storage.relational.mapper.provider.base.ModelVersionMetaBaseSQLProvider;
+import org.apache.gravitino.storage.relational.po.ModelVersionPO;
import org.apache.ibatis.annotations.Param;
public class ModelVersionMetaPostgreSQLProvider extends
ModelVersionMetaBaseSQLProvider {
@@ -94,4 +95,34 @@ public class ModelVersionMetaPostgreSQLProvider extends
ModelVersionMetaBaseSQLP
+ ModelMetaMapper.TABLE_NAME
+ " WHERE deleted_at > 0 AND deleted_at < #{legacyTimeline} LIMIT
#{limit})";
}
+
+ @Override
+ public String updateModelVersionMeta(
+ @Param("newModelVersionMeta") ModelVersionPO newModelVersionPO,
+ @Param("oldModelVersionMeta") ModelVersionPO oldModelVersionPO) {
+
+ return "UPDATE "
+ + ModelVersionMetaMapper.TABLE_NAME
+ + " SET"
+ + " metalake_id = #{newModelVersionMeta.metalakeId},"
+ + " catalog_id = #{newModelVersionMeta.catalogId},"
+ + " schema_id = #{newModelVersionMeta.schemaId},"
+ + " model_id = #{newModelVersionMeta.modelId},"
+ + " version = #{newModelVersionMeta.modelVersion},"
+ + " model_version_comment =
#{newModelVersionMeta.modelVersionComment},"
+ + " model_version_properties =
#{newModelVersionMeta.modelVersionProperties},"
+ + " audit_info = #{newModelVersionMeta.auditInfo},"
+ + " deleted_at = #{newModelVersionMeta.deletedAt}"
+ + " WHERE model_id = #{oldModelVersionMeta.modelId}"
+ + " AND metalake_id = #{oldModelVersionMeta.metalakeId}"
+ + " AND catalog_id = #{oldModelVersionMeta.catalogId}"
+ + " AND schema_id = #{oldModelVersionMeta.schemaId}"
+ + " AND version = #{oldModelVersionMeta.modelVersion}"
+ + " AND (model_version_comment =
#{oldModelVersionMeta.modelVersionComment}"
+ + " OR (CAST(model_version_comment AS VARCHAR) IS NULL"
+ + " AND CAST(#{oldModelVersionMeta.modelVersionComment} AS VARCHAR)
IS NULL))"
+ + " AND model_version_properties =
#{oldModelVersionMeta.modelVersionProperties}"
+ + " AND audit_info = #{oldModelVersionMeta.auditInfo}"
+ + " AND deleted_at = 0";
+ }
}
diff --git
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/SchemaMetaPostgreSQLProvider.java
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/SchemaMetaPostgreSQLProvider.java
index 7cd6bf3903..1e23111c3f 100644
---
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/SchemaMetaPostgreSQLProvider.java
+++
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/SchemaMetaPostgreSQLProvider.java
@@ -56,6 +56,34 @@ public class SchemaMetaPostgreSQLProvider extends
SchemaMetaBaseSQLProvider {
+ " deleted_at = #{schemaMeta.deletedAt}";
}
+ @Override
+ public String updateSchemaMeta(
+ @Param("newSchemaMeta") SchemaPO newSchemaPO, @Param("oldSchemaMeta")
SchemaPO oldSchemaPO) {
+ return "UPDATE "
+ + TABLE_NAME
+ + " SET schema_name = #{newSchemaMeta.schemaName},"
+ + " metalake_id = #{newSchemaMeta.metalakeId},"
+ + " catalog_id = #{newSchemaMeta.catalogId},"
+ + " schema_comment = #{newSchemaMeta.schemaComment},"
+ + " properties = #{newSchemaMeta.properties},"
+ + " audit_info = #{newSchemaMeta.auditInfo},"
+ + " current_version = #{newSchemaMeta.currentVersion},"
+ + " last_version = #{newSchemaMeta.lastVersion},"
+ + " deleted_at = #{newSchemaMeta.deletedAt}"
+ + " WHERE schema_id = #{oldSchemaMeta.schemaId}"
+ + " AND schema_name = #{oldSchemaMeta.schemaName}"
+ + " AND metalake_id = #{oldSchemaMeta.metalakeId}"
+ + " AND catalog_id = #{oldSchemaMeta.catalogId}"
+ + " AND (schema_comment = #{oldSchemaMeta.schemaComment}"
+ + " OR (CAST(schema_comment AS VARCHAR) IS NULL"
+ + " AND CAST(#{oldSchemaMeta.schemaComment} AS VARCHAR) IS NULL))"
+ + " AND properties = #{oldSchemaMeta.properties}"
+ + " AND audit_info = #{oldSchemaMeta.auditInfo}"
+ + " AND current_version = #{oldSchemaMeta.currentVersion}"
+ + " AND last_version = #{oldSchemaMeta.lastVersion}"
+ + " AND deleted_at = 0";
+ }
+
@Override
public String softDeleteSchemaMetasBySchemaId(Long schemaId) {
return "UPDATE "
diff --git
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/TopicMetaPostgreSQLProvider.java
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/TopicMetaPostgreSQLProvider.java
index 970b2d1b2f..fb78114c4f 100644
---
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/TopicMetaPostgreSQLProvider.java
+++
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/TopicMetaPostgreSQLProvider.java
@@ -26,6 +26,36 @@ import org.apache.ibatis.annotations.Param;
public class TopicMetaPostgreSQLProvider extends TopicMetaBaseSQLProvider {
+ @Override
+ public String updateTopicMeta(
+ @Param("newTopicMeta") TopicPO newTopicPO, @Param("oldTopicMeta")
TopicPO oldTopicPO) {
+ return "UPDATE "
+ + TABLE_NAME
+ + " SET topic_name = #{newTopicMeta.topicName},"
+ + " metalake_id = #{newTopicMeta.metalakeId},"
+ + " catalog_id = #{newTopicMeta.catalogId},"
+ + " schema_id = #{newTopicMeta.schemaId},"
+ + " comment = #{newTopicMeta.comment},"
+ + " properties = #{newTopicMeta.properties},"
+ + " audit_info = #{newTopicMeta.auditInfo},"
+ + " current_version = #{newTopicMeta.currentVersion},"
+ + " last_version = #{newTopicMeta.lastVersion},"
+ + " deleted_at = #{newTopicMeta.deletedAt}"
+ + " WHERE topic_id = #{oldTopicMeta.topicId}"
+ + " AND topic_name = #{oldTopicMeta.topicName}"
+ + " AND metalake_id = #{oldTopicMeta.metalakeId}"
+ + " AND catalog_id = #{oldTopicMeta.catalogId}"
+ + " AND schema_id = #{oldTopicMeta.schemaId}"
+ + " AND (comment = #{oldTopicMeta.comment}"
+ + " OR (CAST(comment AS VARCHAR) IS NULL"
+ + " AND CAST(#{oldTopicMeta.comment} AS VARCHAR) IS NULL))"
+ + " AND properties = #{oldTopicMeta.properties}"
+ + " AND audit_info = #{oldTopicMeta.auditInfo}"
+ + " AND current_version = #{oldTopicMeta.currentVersion}"
+ + " AND last_version = #{oldTopicMeta.lastVersion}"
+ + " AND deleted_at = 0";
+ }
+
@Override
public String softDeleteTopicMetasByTopicId(Long topicId) {
return "UPDATE "
diff --git
a/core/src/test/java/org/apache/gravitino/storage/relational/service/TestModelMetaService.java
b/core/src/test/java/org/apache/gravitino/storage/relational/service/TestModelMetaService.java
index cfc9eb1549..c1b85ccfe2 100644
---
a/core/src/test/java/org/apache/gravitino/storage/relational/service/TestModelMetaService.java
+++
b/core/src/test/java/org/apache/gravitino/storage/relational/service/TestModelMetaService.java
@@ -322,6 +322,37 @@ public class TestModelMetaService extends TestJDBCBackend {
() ->
ModelMetaService.getInstance()
.updateModel(NameIdentifier.of(MODEL_NS, "model3"),
renameUpdater));
+
+ // test update model comment from null
+ ModelEntity modelEntity4 =
+ createModelEntity(
+ RandomIdGenerator.INSTANCE.nextId(),
+ MODEL_NS,
+ "model4",
+ "model4 comment",
+ 0,
+ properties,
+ AUDIT_INFO);
+ ModelMetaService.getInstance().insertModel(modelEntity4, false);
+
+ ModelMetaService.getInstance()
+ .updateModel(
+ modelEntity4.nameIdentifier(),
+ entity -> {
+ ModelEntity model = (ModelEntity) entity;
+ return ModelEntity.builder()
+ .withId(model.id())
+ .withName(model.name())
+ .withNamespace(model.namespace())
+ .withComment("model comment updated")
+ .withLatestVersion(model.latestVersion())
+ .withProperties(model.properties())
+ .withAuditInfo(model.auditInfo())
+ .build();
+ });
+ ModelEntity updatedModel4 =
+
ModelMetaService.getInstance().getModelByIdentifier(modelEntity4.nameIdentifier());
+ Assertions.assertEquals("model comment updated", updatedModel4.comment());
}
@TestTemplate
diff --git
a/core/src/test/java/org/apache/gravitino/storage/relational/service/TestModelVersionMetaService.java
b/core/src/test/java/org/apache/gravitino/storage/relational/service/TestModelVersionMetaService.java
index 14aebe26fd..c3fe11c98c 100644
---
a/core/src/test/java/org/apache/gravitino/storage/relational/service/TestModelVersionMetaService.java
+++
b/core/src/test/java/org/apache/gravitino/storage/relational/service/TestModelVersionMetaService.java
@@ -586,7 +586,7 @@ public class TestModelVersionMetaService extends
TestJDBCBackend {
Map<String, String> properties = ImmutableMap.of("k1", "v1");
String modelName = randomModelName();
- String modelComment = "model1 comment";
+ String modelComment = null;
String modelVersionUri = "S3://test/path/to/model/version";
List<String> modelVersionAliases = ImmutableList.of("alias1", "alias2");
String modelVersionComment = "test comment";
diff --git
a/core/src/test/java/org/apache/gravitino/storage/relational/service/TestSchemaMetaService.java
b/core/src/test/java/org/apache/gravitino/storage/relational/service/TestSchemaMetaService.java
index 5525962c52..799a21432f 100644
---
a/core/src/test/java/org/apache/gravitino/storage/relational/service/TestSchemaMetaService.java
+++
b/core/src/test/java/org/apache/gravitino/storage/relational/service/TestSchemaMetaService.java
@@ -32,6 +32,7 @@ import org.apache.gravitino.storage.RandomIdGenerator;
import org.apache.gravitino.storage.relational.TestJDBCBackend;
import org.apache.gravitino.utils.NameIdentifierUtil;
import org.apache.gravitino.utils.NamespaceUtil;
+import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.TestTemplate;
public class TestSchemaMetaService extends TestJDBCBackend {
@@ -89,6 +90,40 @@ public class TestSchemaMetaService extends TestJDBCBackend {
schemaCopy.id(), schemaCopy.namespace(), "schema",
AUDIT_INFO)));
}
+ @TestTemplate
+ public void testUpdateSchemaCommentFromNull() throws IOException {
+ createAndInsertMakeLake(metalakeName);
+ createAndInsertCatalog(metalakeName, catalogName);
+
+ SchemaMetaService schemaMetaService = SchemaMetaService.getInstance();
+ SchemaEntity schemaEntity =
+ SchemaEntity.builder()
+ .withId(RandomIdGenerator.INSTANCE.nextId())
+ .withName("schema_null_comment")
+ .withNamespace(NamespaceUtil.ofSchema(metalakeName, catalogName))
+ .withAuditInfo(AUDIT_INFO)
+ .build();
+ schemaMetaService.insertSchema(schemaEntity, false);
+
+ schemaMetaService.updateSchema(
+ schemaEntity.nameIdentifier(),
+ entity -> {
+ SchemaEntity schema = (SchemaEntity) entity;
+ return SchemaEntity.builder()
+ .withId(schema.id())
+ .withName(schema.name())
+ .withNamespace(schema.namespace())
+ .withComment("schema comment updated")
+ .withProperties(schema.properties())
+ .withAuditInfo(schema.auditInfo())
+ .build();
+ });
+
+ SchemaEntity updatedSchema =
+ schemaMetaService.getSchemaByIdentifier(schemaEntity.nameIdentifier());
+ Assertions.assertEquals("schema comment updated", updatedSchema.comment());
+ }
+
@TestTemplate
public void testMetaLifeCycleFromCreationToDeletion() throws IOException {
createAndInsertMakeLake(metalakeName);
diff --git
a/core/src/test/java/org/apache/gravitino/storage/relational/service/TestTagMetaService.java
b/core/src/test/java/org/apache/gravitino/storage/relational/service/TestTagMetaService.java
index 0642af1ce5..365d7081bf 100644
---
a/core/src/test/java/org/apache/gravitino/storage/relational/service/TestTagMetaService.java
+++
b/core/src/test/java/org/apache/gravitino/storage/relational/service/TestTagMetaService.java
@@ -174,6 +174,38 @@ public class TestTagMetaService extends TestJDBCBackend {
Assertions.assertEquals(tagEntity2, resultTagEntity2);
}
+ @TestTemplate
+ public void testUpdateTagCommentFromNull() throws IOException {
+ createAndInsertMakeLake(METALAKE_NAME);
+
+ TagMetaService tagMetaService = TagMetaService.getInstance();
+ TagEntity tagEntity =
+ TagEntity.builder()
+ .withId(RandomIdGenerator.INSTANCE.nextId())
+ .withName("tag_null_comment")
+ .withNamespace(NamespaceUtil.ofTag(METALAKE_NAME))
+ .withAuditInfo(AUDIT_INFO)
+ .build();
+ tagMetaService.insertTag(tagEntity, false);
+
+ tagMetaService.updateTag(
+ tagEntity.nameIdentifier(),
+ entity -> {
+ TagEntity tag = (TagEntity) entity;
+ return TagEntity.builder()
+ .withId(tag.id())
+ .withName(tag.name())
+ .withNamespace(tag.namespace())
+ .withComment("updated tag comment")
+ .withProperties(tag.properties())
+ .withAuditInfo(tag.auditInfo())
+ .build();
+ });
+
+ TagEntity updatedTag =
tagMetaService.getTagByIdentifier(tagEntity.nameIdentifier());
+ Assertions.assertEquals("updated tag comment", updatedTag.comment());
+ }
+
@TestTemplate
public void testCreateAndListTags() throws IOException {
createAndInsertMakeLake(METALAKE_NAME);
diff --git
a/core/src/test/java/org/apache/gravitino/storage/relational/service/TestTopicMetaService.java
b/core/src/test/java/org/apache/gravitino/storage/relational/service/TestTopicMetaService.java
index 7f4a263e8c..14a1cdcf80 100644
---
a/core/src/test/java/org/apache/gravitino/storage/relational/service/TestTopicMetaService.java
+++
b/core/src/test/java/org/apache/gravitino/storage/relational/service/TestTopicMetaService.java
@@ -32,6 +32,7 @@ import org.apache.gravitino.storage.RandomIdGenerator;
import org.apache.gravitino.storage.relational.TestJDBCBackend;
import org.apache.gravitino.utils.NameIdentifierUtil;
import org.apache.gravitino.utils.NamespaceUtil;
+import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.TestTemplate;
@@ -93,7 +94,34 @@ public class TestTopicMetaService extends TestJDBCBackend {
}
@TestTemplate
- public void testUpdateAlreadyExistsException() throws IOException {
+ public void testUpdateTopic() throws IOException {
+ TopicEntity topicWithNullComment =
+ TopicEntity.builder()
+ .withId(RandomIdGenerator.INSTANCE.nextId())
+ .withName("test_null")
+ .withNamespace(NamespaceUtil.ofFileset(metalakeName, catalogName,
schemaName))
+ .withComment(null)
+ .withProperties(null)
+ .withAuditInfo(AUDIT_INFO)
+ .build();
+ backend.insert(topicWithNullComment, false);
+ backend.update(
+ topicWithNullComment.nameIdentifier(),
+ Entity.EntityType.TOPIC,
+ e ->
+ TopicEntity.builder()
+ .withId(topicWithNullComment.id())
+ .withName(topicWithNullComment.name())
+ .withNamespace(topicWithNullComment.namespace())
+ .withComment("now has comment")
+ .withProperties(topicWithNullComment.properties())
+ .withAuditInfo(AUDIT_INFO)
+ .build());
+ TopicEntity updatedTopic =
+ backend.get(topicWithNullComment.nameIdentifier(),
Entity.EntityType.TOPIC);
+ Assertions.assertEquals("now has comment", updatedTopic.comment());
+
+ // test topic already exists exception
TopicEntity topic =
createTopicEntity(
RandomIdGenerator.INSTANCE.nextId(),