apache / apache/gravitino

[FEATURE] Implement tag assignment values

Open
#12,127 0 comments 0 reactions 0 assignees View on GitHub
2.0.0 feature
Dominant language
Java
Stars
3.2k
Forks
935
Avg merge
1d 17h
Merged PRs (30d)
339

Description

### Describe the feature
Implement assignment-level values for tags so one metadata object can assign multiple values to the same tag.

### Motivation
Current tag assignment is boolean. Users need searchable tag values such as `data_domain=finance` without creating one tag per value.

### Describe the solution
- Add `allowedValues` to tag creation and tag DTOs.
- Change `tagsToAdd` and `tagsToRemove` to tag-value pair arrays.
- Store one value per `tag_relation_meta` row with `tag_value` and `value_order`.
- Make repeated assignment idempotent and use exact value lookup through `GET /tags/{tag}/objects?value=...`.

### Additional context
Initial implementation does not support modifying `allowedValues` after tag creation.

Contributor guide

Open the contributing guide

Research direction

Trace the tag creation and tag DTOs, the tagsToAdd/tagsToRemove request paths, and the GET /tags/{tag}/objects?value=... endpoint. Read how tag_relation_meta rows are stored and queried, then verify that allowedValues, tag-value pairs, ordering, exact lookup, and repeated-assignment idempotence are covered; modifying allowedValues is out of scope.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend-api-design, databases
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.