refactor: Add RoleGrantee to provide meta-service key for RoleMgr #14752
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I hereby agree to the terms of the CLA available at: https://docs.databend.com/dev/policies/cla/
Summary
refactor: Add RoleGrantee to provide meta-service key for RoleMgr
Encapsulate the logic of encoding/decoding role-grantee key into
RoleGrantee
.RoleGrantee
is a standardkvapi::Key
implementationso that the export program could rely on the
kvapi::Key
API totraverse meta-data to fetch all data that belongs to a tenant.
Legacy issue:
For
OwnershipObject::Database{ catalog_name, db_id }
,catalog_name
is not encoded into the key, we have to be compatible with this. The
solution is to encode a
"default"
catalog withdatabase-by-id/<db-id>
prefix, and encode a non-default catalog withdatabase-by-catalog-id/<catalog>/<db-id>
prefix.The same for the
OwnershipObject::Table{ catalog_name, ... }
.For
OwnershipObject::Table{ catalog_name, db_id, table_id }
,db_id
is not encoded into the key. Thus
kvapi::Key::from_str_key()
can notbe implemented because
db_id
is absent.In this version, only
"default"
catalog is allowed. Using othercatalog will panic. This restrict will be removed if it is confirmed
there is no other catalog in our meta-data.
kvapi::Key
; #14738Changelog
Related Issues
This change is