Skip to content

Commit

Permalink
fix: fix some commands of Set do not have status return values from R…
Browse files Browse the repository at this point in the history
…ocksDB (OpenAtomFoundation#2187)

* fix: have no status return values from RocksDB

* fix: have no status return values from RocksDB

* feat: add go test
  • Loading branch information
callme-taota authored Dec 14, 2023
1 parent 26983da commit 91a293b
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 16 deletions.
48 changes: 32 additions & 16 deletions src/pika_set.cc
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,11 @@ void SRemCmd::DoInitial() {

void SRemCmd::Do(std::shared_ptr<Slot> slot) {
s_ = slot->db()->SRem(key_, members_, &deleted_);
res_.AppendInteger(deleted_);
if (s_.ok() || s_.IsNotFound()) {
res_.AppendInteger(deleted_);
} else {
res_.SetRes(CmdRes::kErrOther, s_.ToString());
}
}

void SRemCmd::DoThroughDB(std::shared_ptr<Slot> slot) {
Expand All @@ -282,11 +286,15 @@ void SUnionCmd::DoInitial() {

void SUnionCmd::Do(std::shared_ptr<Slot> slot) {
std::vector<std::string> members;
slot->db()->SUnion(keys_, &members);
res_.AppendArrayLenUint64(members.size());
for (const auto& member : members) {
res_.AppendStringLenUint64(member.size());
res_.AppendContent(member);
s_ = slot->db()->SUnion(keys_, &members);
if (s_.ok() || s_.IsNotFound()) {
res_.AppendArrayLenUint64(members.size());
for (const auto& member : members) {
res_.AppendStringLenUint64(member.size());
res_.AppendContent(member);
}
} else {
res_.SetRes(CmdRes::kErrOther, s_.ToString());
}
}

Expand Down Expand Up @@ -374,11 +382,15 @@ void SInterCmd::DoInitial() {

void SInterCmd::Do(std::shared_ptr<Slot> slot) {
std::vector<std::string> members;
slot->db()->SInter(keys_, &members);
res_.AppendArrayLenUint64(members.size());
for (const auto& member : members) {
res_.AppendStringLenUint64(member.size());
res_.AppendContent(member);
s_ = slot->db()->SInter(keys_, &members);
if (s_.ok() || s_.IsNotFound()) {
res_.AppendArrayLenUint64(members.size());
for (const auto& member : members) {
res_.AppendStringLenUint64(member.size());
res_.AppendContent(member);
}
} else {
res_.SetRes(CmdRes::kErrOther, s_.ToString());
}
}

Expand Down Expand Up @@ -469,11 +481,15 @@ void SDiffCmd::DoInitial() {

void SDiffCmd::Do(std::shared_ptr<Slot> slot) {
std::vector<std::string> members;
slot->db()->SDiff(keys_, &members);
res_.AppendArrayLenUint64(members.size());
for (const auto& member : members) {
res_.AppendStringLenUint64(member.size());
res_.AppendContent(member);
s_ = slot->db()->SDiff(keys_, &members);
if (s_.ok() || s_.IsNotFound()) {
res_.AppendArrayLenUint64(members.size());
for (const auto& member : members) {
res_.AppendStringLenUint64(member.size());
res_.AppendContent(member);
}
} else {
res_.SetRes(CmdRes::kErrOther,s_.ToString());
}
}

Expand Down
16 changes: 16 additions & 0 deletions tests/integration/set_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,10 @@ var _ = Describe("Set Commands", func() {
sDiff := client.SDiff(ctx, "set1", "set2")
Expect(sDiff.Err()).NotTo(HaveOccurred())
Expect(sDiff.Val()).To(ConsistOf([]string{"a", "b"}))

sDiff = client.SDiff(ctx, "nonexistent_set1", "nonexistent_set2")
Expect(sDiff.Err()).NotTo(HaveOccurred())
Expect(sDiff.Val()).To(HaveLen(0))
})

It("should SDiffStore", func() {
Expand Down Expand Up @@ -129,6 +133,10 @@ var _ = Describe("Set Commands", func() {
sInter := client.SInter(ctx, "set1", "set2")
Expect(sInter.Err()).NotTo(HaveOccurred())
Expect(sInter.Val()).To(Equal([]string{"c"}))

sInter = client.SInter(ctx, "nonexistent_set1", "nonexistent_set2")
Expect(sInter.Err()).NotTo(HaveOccurred())
Expect(sInter.Val()).To(HaveLen(0))
})

//It("should SInterCard", func() {
Expand Down Expand Up @@ -336,6 +344,10 @@ var _ = Describe("Set Commands", func() {
sMembers := client.SMembers(ctx, "set")
Expect(sMembers.Err()).NotTo(HaveOccurred())
Expect(sMembers.Val()).To(ConsistOf([]string{"three", "two"}))

sRem = client.SRem(ctx, "nonexistent_set", "one")
Expect(sRem.Err()).NotTo(HaveOccurred())
Expect(sRem.Val()).To(Equal(int64(0)))
})

It("should SUnion", func() {
Expand All @@ -356,6 +368,10 @@ var _ = Describe("Set Commands", func() {
sUnion := client.SUnion(ctx, "set1", "set2")
Expect(sUnion.Err()).NotTo(HaveOccurred())
Expect(sUnion.Val()).To(HaveLen(5))

sUnion = client.SUnion(ctx, "nonexistent_set1", "nonexistent_set2")
Expect(sUnion.Err()).NotTo(HaveOccurred())
Expect(sUnion.Val()).To(HaveLen(0))
})

It("should SUnionStore", func() {
Expand Down

0 comments on commit 91a293b

Please sign in to comment.