Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Favre-Felix <n.favrefelix@gmail.com>2011-11-27 23:52:03 +0400
committerNicolas Favre-Felix <n.favrefelix@gmail.com>2011-11-27 23:52:03 +0400
commit1ce8bcc5340bcf928ccca72a043ec0c44a4e19ac (patch)
tree6803fcb893ddb150b5d42e086270b995b12d7cf3 /redis_array.c
parent9692ad980d6abc80e00a1fb960737e824581507b (diff)
Added missing DISCARD in RedisArray mode.
Also added a unit test covering this feature. This commit fixes GitHub issue #87.
Diffstat (limited to 'redis_array.c')
-rw-r--r--redis_array.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/redis_array.c b/redis_array.c
index 1d8fd415..cf67cfe2 100644
--- a/redis_array.c
+++ b/redis_array.c
@@ -60,6 +60,7 @@ zend_function_entry redis_array_functions[] = {
/* Multi/Exec */
PHP_ME(RedisArray, multi, NULL, ZEND_ACC_PUBLIC)
PHP_ME(RedisArray, exec, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(RedisArray, discard, NULL, ZEND_ACC_PUBLIC)
/* Aliases */
PHP_MALIAS(RedisArray, delete, del, NULL, ZEND_ACC_PUBLIC)
@@ -1027,3 +1028,24 @@ PHP_METHOD(RedisArray, exec)
/* remove multi object */
ra->z_multi_exec = NULL;
}
+
+PHP_METHOD(RedisArray, discard)
+{
+ zval *object;
+ RedisArray *ra;
+
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O",
+ &object, redis_array_ce) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ if (redis_array_get(object, &ra TSRMLS_CC) < 0 || !ra->z_multi_exec) {
+ RETURN_FALSE;
+ }
+
+ /* switch redis instance out of multi/exec mode. */
+ ra_index_discard(ra->z_multi_exec, return_value TSRMLS_CC);
+
+ /* remove multi object */
+ ra->z_multi_exec = NULL;
+}