Skip to content

Commit cfb4256

Browse files
author
caiyu
committed
Fix the bug where the ZREMRANGEBYSCORE command fails to delete the correct elements
1 parent fa8d314 commit cfb4256

2 files changed

Lines changed: 26 additions & 2 deletions

File tree

src/storage/src/redis_zsets.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -916,7 +916,7 @@ Status RedisZSets::ZRemrangebyscore(const Slice& key, double min, double max, bo
916916
del_cnt++;
917917
statistic++;
918918
}
919-
if (!right_pass) {
919+
if (right_pass) {
920920
break;
921921
}
922922
}

tests/integration/zset_test.go

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1266,7 +1266,31 @@ var _ = Describe("Zset Commands", func() {
12661266
Expect(zRangeByScore.Err()).NotTo(HaveOccurred())
12671267
Expect(zRangeByScore.Val()).To(Equal([]string{}))
12681268
})
1269-
1269+
//Caiyu's test: Verify the zset command ZREMRANGEBYSCORE to delete invalid items
1270+
It("should ZRemRangeByScore with big integer scores", func() {
1271+
err := client.ZAdd(ctx, "test01", redis.Z{Score: 1749168060267762, Member: "a"}).Err()
1272+
Expect(err).NotTo(HaveOccurred())
1273+
err = client.ZAdd(ctx, "test01", redis.Z{Score: 1749168060267760, Member: "b"}).Err()
1274+
Expect(err).NotTo(HaveOccurred())
1275+
err = client.ZAdd(ctx, "test01", redis.Z{Score: 1749168060267750, Member: "c"}).Err()
1276+
Expect(err).NotTo(HaveOccurred())
1277+
zRangeWithScores := client.ZRangeWithScores(ctx, "test01", 0, 3)
1278+
Expect(zRangeWithScores.Err()).NotTo(HaveOccurred())
1279+
Expect(zRangeWithScores.Val()).To(Equal([]redis.Z{
1280+
{Score: 1749168060267750, Member: "c"},
1281+
{Score: 1749168060267760, Member: "b"},
1282+
{Score: 1749168060267762, Member: "a"},
1283+
}))
1284+
zRemRangeByScore := client.ZRemRangeByScore(ctx, "test01", "1749168060267750", "1749168060267755")
1285+
Expect(zRemRangeByScore.Err()).NotTo(HaveOccurred())
1286+
Expect(zRemRangeByScore.Val()).To(Equal(int64(1)))
1287+
zRangeWithScores = client.ZRangeWithScores(ctx, "test01", 0, 3)
1288+
Expect(zRangeWithScores.Err()).NotTo(HaveOccurred())
1289+
Expect(zRangeWithScores.Val()).To(Equal([]redis.Z{
1290+
{Score: 1749168060267760, Member: "b"},
1291+
{Score: 1749168060267762, Member: "a"},
1292+
}))
1293+
})
12701294
It("should ZRangeByLex", func() {
12711295
err := client.ZAdd(ctx, "zset", redis.Z{
12721296
Score: 0,

0 commit comments

Comments
 (0)