Commit bb0d231a authored by Aart Jan Kaptijn's avatar Aart Jan Kaptijn Committed by Marc Gravell

fix for #1282: do no-op when adding 0 values to a set (#1283)

parent f6d050e2
......@@ -1216,6 +1216,7 @@ public bool SetAdd(RedisKey key, RedisValue value, CommandFlags flags = CommandF
public long SetAdd(RedisKey key, RedisValue[] values, CommandFlags flags = CommandFlags.None)
{
if (values.Length == 0) return 0;
var msg = Message.Create(Database, flags, RedisCommand.SADD, key, values);
return ExecuteSync(msg, ResultProcessor.Int64);
}
......@@ -1228,6 +1229,7 @@ public Task<bool> SetAddAsync(RedisKey key, RedisValue value, CommandFlags flags
public Task<long> SetAddAsync(RedisKey key, RedisValue[] values, CommandFlags flags = CommandFlags.None)
{
if (values.Length == 0) return Task.FromResult<long>(0);
var msg = Message.Create(Database, flags, RedisCommand.SADD, key, values);
return ExecuteAsync(msg, ResultProcessor.Int64);
}
......
......@@ -189,5 +189,41 @@ public async Task SetPopMulti_Zero_Async()
Assert.Equal(10, db.SetLength(key));
}
}
[Fact]
public void SetAdd_Zero()
{
using (var conn = Create())
{
var db = conn.GetDatabase();
var key = Me();
db.KeyDelete(key, CommandFlags.FireAndForget);
var result = db.SetAdd(key, new RedisValue[0]);
Assert.Equal(0, result);
Assert.Equal(0, db.SetLength(key));
}
}
[Fact]
public async Task SetAdd_Zero_Async()
{
using (var conn = Create())
{
var db = conn.GetDatabase();
var key = Me();
db.KeyDelete(key, CommandFlags.FireAndForget);
var t = db.SetAddAsync(key, new RedisValue[0]);
Assert.True(t.IsCompleted); // sync
var count = await t;
Assert.Equal(0, count);
Assert.Equal(0, db.SetLength(key));
}
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment