8000 Made SADD variadic · jrtkcoder/phpredis@1fb9404 · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

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)
0