This is an automated email from the ASF dual-hosted git repository.
jshao 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 62fbc73ec [#4540] fix(core): Support alter tag with null comment
(#4541)
62fbc73ec is described below
commit 62fbc73ecc5f74d9361e0890c070ee480bee0ee2
Author: Jerry Shao <[email protected]>
AuthorDate: Fri Aug 16 09:44:26 2024 +0800
[#4540] fix(core): Support alter tag with null comment (#4541)
### What changes were proposed in this pull request?
Add NULL check for tag comment
### Why are the changes needed?
Fix: #4540
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
Add IT.
---
.../storage/relational/mapper/TagMetaMapper.java | 2 +-
.../apache/gravitino/integration/test/TagIT.java | 30 ++++++++++++++++++++++
2 files changed, 31 insertions(+), 1 deletion(-)
diff --git
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/TagMetaMapper.java
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/TagMetaMapper.java
index 7b52d34a1..93bf0b5f6 100644
---
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/TagMetaMapper.java
+++
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/TagMetaMapper.java
@@ -162,7 +162,7 @@ public interface TagMetaMapper {
+ " WHERE tag_id = #{oldTagMeta.tagId}"
+ " AND metalake_id = #{oldTagMeta.metalakeId}"
+ " AND tag_name = #{oldTagMeta.tagName}"
- + " AND tag_comment = #{oldTagMeta.comment}"
+ + " AND (tag_comment IS NULL OR tag_comment = #{oldTagMeta.comment})"
+ " AND properties = #{oldTagMeta.properties}"
+ " AND audit_info = #{oldTagMeta.auditInfo}"
+ " AND current_version = #{oldTagMeta.currentVersion}"
diff --git
a/integration-test/src/test/java/org/apache/gravitino/integration/test/TagIT.java
b/integration-test/src/test/java/org/apache/gravitino/integration/test/TagIT.java
index bb650b3e7..e0cb73269 100644
---
a/integration-test/src/test/java/org/apache/gravitino/integration/test/TagIT.java
+++
b/integration-test/src/test/java/org/apache/gravitino/integration/test/TagIT.java
@@ -182,6 +182,16 @@ public class TagIT extends AbstractIT {
Set<Tag> tags = Sets.newHashSet(metalake.listTagsInfo());
Set<Tag> expectedTags = Sets.newHashSet(tag, tag1);
Assertions.assertEquals(expectedTags, tags);
+
+ // Test null comment and properties
+ String tagName2 = GravitinoITUtils.genRandomName("tag_it_tag2");
+ Tag tag2 = metalake.createTag(tagName2, null, null);
+ Assertions.assertEquals(tagName2, tag2.name());
+ Assertions.assertNull(tag2.comment());
+ Assertions.assertEquals(Collections.emptyMap(), tag2.properties());
+
+ Tag tag3 = metalake.getTag(tagName2);
+ Assertions.assertEquals(tag2, tag3);
}
@Test
@@ -228,6 +238,26 @@ public class TagIT extends AbstractIT {
// Test throw NoSuchTagException
Assertions.assertThrows(
NoSuchTagException.class, () -> metalake.alterTag("non-existed-tag",
rename));
+
+ // Test alter tag on no comment and properties
+ String tagName1 = GravitinoITUtils.genRandomName("tag_it_tag1");
+ metalake.createTag(tagName1, null, null);
+
+ // Test rename and update comment
+ String newTagName1 = GravitinoITUtils.genRandomName("tag_it_tag_new1");
+ TagChange rename1 = TagChange.rename(newTagName1);
+ TagChange updateComment1 = TagChange.updateComment("new comment1");
+ TagChange setProperty3 = TagChange.setProperty("k4", "v4");
+ TagChange setProperty4 = TagChange.setProperty("k5", "v5");
+ TagChange removeProperty3 = TagChange.removeProperty("k4");
+
+ Tag alteredTag5 =
+ metalake.alterTag(
+ tagName1, rename1, updateComment1, setProperty3, setProperty4,
removeProperty3);
+ Assertions.assertEquals(newTagName1, alteredTag5.name());
+ Assertions.assertEquals("new comment1", alteredTag5.comment());
+ Assertions.assertEquals(ImmutableMap.of("k5", "v5"),
alteredTag5.properties());
+ Assertions.assertFalse(alteredTag5.inherited().isPresent());
}
@Test