Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1fb9404

Browse files
committed
Made SADD variadic
1 parent b783d7e commit 1fb9404

File tree

2 files changed

+25
-39
lines changed

2 files changed

+25
-39
lines changed

redis.c

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1712,34 +1712,16 @@ PHP_METHOD(Redis, lGetRange)
17121712
*/
17131713
PHP_METHOD(Redis, sAdd)
17141714
{
1715-
zval *object;
17161715
RedisSock *redis_sock;
1717-
char *key = NULL, *val = NULL, *cmd;
1718-
int key_len, val_len, cmd_len;
1719-
int val_free, key_free = 0;
1720-
zval *z_value;
1721-
1722-
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Osz",
1723-
&object, redis_ce, &key, &key_len,
1724-
&z_value) == FAILURE) {
1725-
RETURN_NULL();
1726-
}
17271716

1728-
if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) {
1729-
RETURN_FALSE;
1730-
}
1731-
1732-
val_free = redis_serialize(redis_sock, z_value, &val, &val_len TSRMLS_CC);
1733-
key_free = redis_key_prefix(redis_sock, &key, &key_len TSRMLS_CC);
1734-
cmd_len = redis_cmd_format_static(&cmd, "SADD", "ss", key, key_len, val, val_len);
1735-
if(val_free) efree(val);
1736-
if(key_free) efree(key);
1717+
generic_multiple_args_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU,
1718+
"SADD", sizeof("SADD") - 1,
1719+
2, &redis_sock, 0, 0);
17371720

1738-
REDIS_PROCESS_REQUEST(redis_sock, cmd, cmd_len);
17391721
IF_ATOMIC() {
1740-
redis_1_response(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock, NULL, NULL);
1722+
redis_long_response(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock, NULL, NULL);
17411723
}
1742-
REDIS_PROCESS_RESPONSE(redis_1_response);
1724+
REDIS_PROCESS_RESPONSE(redis_long_response);
17431725
}
17441726
/* }}} */
17451727

@@ -4053,7 +4035,6 @@ PHP_METHOD(Redis, hDel)
40534035
redis_long_response(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock, NULL, NULL);
40544036
}
40554037
REDIS_PROCESS_RESPONSE(redis_long_response);
4056-
40574038
}
40584039

40594040
/* hExists */

tests/TestRedis.php

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -893,25 +893,25 @@ public function testsAdd()
893893
{
894894
$this->redis->delete('set');
895895

896-
$this->assertEquals(TRUE, $this->redis->sAdd('set', 'val'));
897-
$this->assertEquals(FALSE, $this->redis->sAdd('set', 'val'));
896+
$this->assertEquals(1, $this->redis->sAdd('set', 'val'));
897+
$this->assertEquals(0, $this->redis->sAdd('set', 'val'));
898898

899899
$this->assertTrue($this->redis->sContains('set', 'val'));
900900
$this->assertFalse($this->redis->sContains('set', 'val2'));
901901

902-
$this->assertEquals(TRUE, $this->redis->sAdd('set', 'val2'));
902+
$this->assertEquals(1, $this->redis->sAdd('set', 'val2'));
903903

904904
$this->assertTrue($this->redis->sContains('set', 'val2'));
905905
}
906906
public function testsSize()
907907
{
908908
$this->redis->delete('set');
909909

910-
$this->assertEquals(TRUE, $this->redis->sAdd('set', 'val'));
910+
$this->assertEquals(1, $this->redis->sAdd('set', 'val'));
911911

912912
$this->assertEquals(1, $this->redis->sSize('set'));
913913

914-
$this->assertEquals(TRUE, $this->redis->sAdd('set', 'val2'));
914+
$this->assertEquals(1, $this->redis->sAdd('set', 'val2'));
915915

916916
$this->assertEquals(2, $this->redis->sSize('set'));
917917
}
@@ -2361,13 +2361,13 @@ protected function sequence($mode) {
23612361
$i = 0;
23622362
$this->assertTrue(is_array($ret));
23632363
$this->assertTrue(is_long($ret[$i]) && $ret[$i] >= 0 && $ret[$i] <= 5); $i++; // deleted at most 5 values.
2364-
$this->assertTrue($ret[$i++] === TRUE); // skey1 now has 1 element.
2365-
$this->assertTrue($ret[$i++] === TRUE); // skey1 now has 2 elements.
2366-
$this->assertTrue($ret[$i++] === TRUE); // skey1 now has 3 elements.
2367-
$this->assertTrue($ret[$i++] === TRUE); // skey1 now has 4 elements.
2364+
$this->assertTrue($ret[$i++] === 1); // skey1 now has 1 element.
2365+
$this->assertTrue($ret[$i++] === 1); // skey1 now has 2 elements.
2366+
$this->assertTrue($ret[$i++] === 1); // skey1 now has 3 elements.
2367+
$this->assertTrue($ret[$i++] === 1); // skey1 now has 4 elements.
23682368

2369-
$this->assertTrue($ret[$i++] === TRUE); // skey2 now has 1 element.
2370-
$this->assertTrue($ret[$i++] === TRUE); // skey2 now has 2 elements.
2369+
$this->assertTrue($ret[$i++] === 1); // skey2 now has 1 element.
2370+
$this->assertTrue($ret[$i++] === 1); // skey2 now has 2 elements.
23712371

23722372
$this->assertTrue($ret[$i++] === 4);
23732373
$this->assertTrue($ret[$i++] === TRUE); // we did remove that value.
@@ -2603,10 +2603,15 @@ private function checkSerializer($mode) {
26032603
$this->redis->delete('key');
26042604
$s = array(1,'a', array(1,2,3), array('k' => 'v'));
26052605

2606-
$this->assertTrue(TRUE === $this->redis->sAdd('key', $s[0]));
2607-
$this->assertTrue(TRUE === $this->redis->sAdd('key', $s[1]));
2608-
$this->assertTrue(TRUE === $this->redis->sAdd('key', $s[2]));
2609-
$this->assertTrue(TRUE === $this->redis->sAdd('key', $s[3]));
2606+
$this->assertTrue(1 === $this->redis->sAdd('key', $s[0]));
2607+
$this->assertTrue(1 === $this->redis->sAdd('key', $s[1]));
2608+
$this->assertTrue(1 === $this->redis->sAdd('key', $s[2]));
2609+
$this->assertTrue(1 === $this->redis->sAdd('key', $s[3]));
2610+
2611+
// variadic sAdd
2612+
$this->redis->delete('k');
2613+
$this->assertTrue(3 === $this->redis->sAdd('k', 'a', 'b', 'c'));
2614+
$this->assertTrue(1 === $this->redis->sAdd('k', 'a', 'b', 'c', 'd'));
26102615

26112616
// sRemove
26122617
$this->assertTrue(TRUE === $this->redis->sRemove('key', $s[3]));

0 commit comments

Comments
 (0)