fix: Fix unsupported object type rejson-rl in RedisInsight (#3384)

* fix: Fix unsupported object type rejson-rl in RedisInsight

Signed-off-by: Stepan Bagritsevich <bagr.stepan@gmail.com>

* fix(generic_family): fix case for the TYPE option in SCAN command

Signed-off-by: Stepan Bagritsevich <bagr.stepan@gmail.com>

* feat(generic_family_test): Add test for the Redis GUI

Signed-off-by: Stepan Bagritsevich <bagr.stepan@gmail.com>

* refactor: address comments

Signed-off-by: Stepan Bagritsevich <bagr.stepan@gmail.com>

* refactor: address comments 2

Signed-off-by: Stepan Bagritsevich <bagr.stepan@gmail.com>

* refactor: change variable name from obj_type_as_string to obj_type

Signed-off-by: Stepan Bagritsevich <bagr.stepan@gmail.com>

---------

Signed-off-by: Stepan Bagritsevich <bagr.stepan@gmail.com>
This commit is contained in:
Stepan Bagritsevich 2024-07-27 19:05:00 +02:00 committed by GitHub
parent 6b67f44e29
commit 28cfde0a27
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 73 additions and 71 deletions

View file

@ -621,7 +621,7 @@ uint64_t CompactObj::HashCode(string_view str) {
return XXH3_64bits_withSeed(str.data(), str.size(), kHashSeed);
}
unsigned CompactObj::ObjType() const {
CompactObjType CompactObj::ObjType() const {
if (IsInline() || taglen_ == INT_TAG || taglen_ == SMALL_TAG || taglen_ == EXTERNAL_TAG)
return OBJ_STRING;
@ -637,30 +637,7 @@ unsigned CompactObj::ObjType() const {
}
LOG(FATAL) << "TBD " << int(taglen_);
return 0;
}
string_view CompactObj::ObjTypeToString(unsigned type) {
#define OBJECT_TYPE_CASE(type) \
case type: \
return absl::StripPrefix(#type, "OBJ_")
switch (type) {
OBJECT_TYPE_CASE(OBJ_STRING);
OBJECT_TYPE_CASE(OBJ_LIST);
OBJECT_TYPE_CASE(OBJ_SET);
OBJECT_TYPE_CASE(OBJ_ZSET);
OBJECT_TYPE_CASE(OBJ_HASH);
OBJECT_TYPE_CASE(OBJ_MODULE);
OBJECT_TYPE_CASE(OBJ_STREAM);
OBJECT_TYPE_CASE(OBJ_JSON);
OBJECT_TYPE_CASE(OBJ_SBF);
default:
DCHECK(false) << "Unknown object type " << type;
return "OTHER";
}
#undef OBJECT_TYPE_CASE
return kInvalidCompactObjType;
}
unsigned CompactObj::Encoding() const {
@ -674,7 +651,7 @@ unsigned CompactObj::Encoding() const {
}
}
void CompactObj::InitRobj(unsigned type, unsigned encoding, void* obj) {
void CompactObj::InitRobj(CompactObjType type, unsigned encoding, void* obj) {
DCHECK_NE(type, OBJ_STRING);
SetMeta(ROBJ_TAG, mask_);
u_.r_obj.Init(type, encoding, obj);
@ -1255,4 +1232,29 @@ MemoryResource* CompactObj::memory_resource() {
return tl.local_mr;
}
constexpr std::pair<CompactObjType, std::string_view> kObjTypeToString[8] = {
{OBJ_STRING, "string"sv}, {OBJ_LIST, "list"sv}, {OBJ_SET, "set"sv},
{OBJ_ZSET, "zset"sv}, {OBJ_HASH, "hash"sv}, {OBJ_STREAM, "stream"sv},
{OBJ_JSON, "ReJSON-RL"sv}, {OBJ_SBF, "MBbloom--"sv}};
std::string_view ObjTypeToString(CompactObjType type) {
for (auto& p : kObjTypeToString) {
if (type == p.first) {
return p.second;
}
}
LOG(DFATAL) << "Unsupported type " << type;
return "Invalid type"sv;
}
std::optional<CompactObjType> ObjTypeFromString(std::string_view sv) {
for (auto& p : kObjTypeToString) {
if (absl::EqualsIgnoreCase(sv, p.second)) {
return p.first;
}
}
return std::nullopt;
}
} // namespace dfly