Changeset 34bb6d
- Timestamp:
- 11/02/09 17:35:36 (3 years ago)
- Branches:
- master
- Children:
- b6ccaa
- Parents:
- 89a74b
- git-author:
- Tomash Brechko <tomash.brechko@…> (11/02/09 17:35:36)
- git-committer:
- Tomash Brechko <tomash.brechko@…> (11/02/09 17:35:36)
- Files:
-
- 5 edited
-
Changes (modified) (1 diff)
-
Fast.xs (modified) (5 diffs)
-
lib/Cache/Memcached/Fast.pm (modified) (3 diffs)
-
src/client.c (modified) (2 diffs)
-
src/client.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
Changes
r89a74b r34bb6d 7 7 Changes since 0.16: 8 8 9 ??? 9 Warn about ignoring non-zero delete expiration time. 10 Expiration time for "delete" command has been optional in 11 older versions of memcached, and was dropped in memcached 12 1.3.2 (in an incompatible manner). Not knowing server version 13 it's impossible to tell whether the server will handle the 14 parameter or not, so we simply do not send it at all. 15 Explicit zero passed to delete() or delete_multi() is silently 16 ignored, and a warning is given if you pass non-zero delete 17 expiration time. Furthermore the syntax delete($key, $delay) 18 and delete_multi([$key, $delay]) is obsoleted and no more 19 documented. 10 20 11 21 -
Fast.xs
reece31 r34bb6d 1044 1044 const char *key; 1045 1045 STRLEN key_len; 1046 delay_type delay = 0;1047 1046 PPCODE: 1048 1047 object.arg = newAV(); … … 1053 1052 if (items > 2) 1054 1053 { 1054 /* Compatibility with old [key, delay] syntax]. */ 1055 1055 1056 /* delay doesn't have to be defined. */ 1056 1057 SV *sv = ST(2); 1057 if (SvOK(sv) )1058 delay = SvUV(sv);1059 } 1060 client_prepare_delete(memd->c, 0, key, key_len , delay);1058 if (SvOK(sv) && SvUV(sv) != 0) 1059 warn("non-zero delete expiration time is ignored"); 1060 } 1061 client_prepare_delete(memd->c, 0, key, key_len); 1061 1062 client_execute(memd->c); 1062 1063 if (! noreply) … … 1087 1088 { 1088 1089 SV *sv; 1089 AV *av;1090 1090 const char *key; 1091 1091 STRLEN key_len; 1092 delay_type delay = 0;1093 1092 1094 1093 sv = ST(i); … … 1099 1098 else 1100 1099 { 1100 /* Compatibility with old [key, delay] syntax]. */ 1101 1102 AV *av; 1103 1101 1104 if (SvTYPE(SvRV(sv)) != SVt_PVAV) 1102 1105 croak("Not an array reference"); … … 1112 1115 /* delay doesn't have to be defined. */ 1113 1116 SV **ps = av_fetch(av, 1, 0); 1114 if (ps && SvOK(*ps) )1115 delay = SvUV(*ps);1117 if (ps && SvOK(*ps) && SvUV(*ps) != 0) 1118 warn("non-zero delete expiration time is ignored"); 1116 1119 } 1117 1120 } 1118 1121 1119 client_prepare_delete(memd->c, i - 1, key, key_len , delay);1122 client_prepare_delete(memd->c, i - 1, key, key_len); 1120 1123 } 1121 1124 client_execute(memd->c); -
lib/Cache/Memcached/Fast.pm
r89a74b r34bb6d 104 104 105 105 my @keys = qw(k1 k2 k3); 106 $memd->delete_multi(@keys , ['k5', 20]);106 $memd->delete_multi(@keys); 107 107 108 108 # Wait for all commands that were executed in nowait mode. … … 1076 1076 1077 1077 $memd->delete($key); 1078 $memd->delete($key, $delay); 1079 1080 Delete I<$key> and its value from the cache. I<$delay> is an optional 1081 non-negative integer number of seconds to delay the operation. During 1082 this time L</add> and L</replace> commands will be rejected by the 1083 server. When omitted, zero is assumed, i.e. delete immediately. 1078 1079 Delete I<$key> and its value from the cache. 1084 1080 1085 1081 I<Return:> boolean, true for positive server reply, false for negative … … 1102 1098 =item C<delete_multi> 1103 1099 1104 $memd->delete_multi( 1105 @keys, 1106 [$key], 1107 [$key, $delay], 1108 ... 1109 ); 1100 $memd->delete_multi(@keys); 1110 1101 1111 1102 Like L</delete>, but operates on more than one key. Takes the list of 1112 keys and references to arrays each holding I<$key> and optional 1113 I<$delay>. 1103 keys. 1114 1104 1115 1105 Note that multi commands are not all-or-nothing, some operations may -
src/client.c
r442efc r34bb6d 1992 1992 int 1993 1993 client_prepare_delete(struct client *c, int key_index, 1994 const char *key, size_t key_len , delay_type delay)1994 const char *key, size_t key_len) 1995 1995 { 1996 1996 static const size_t request_size = 4; 1997 static const size_t str_size = sizeof(" " DELAY_STUB " "NOREPLY "\r\n");1997 static const size_t str_size = sizeof(" " NOREPLY "\r\n"); 1998 1998 1999 1999 struct command_state *state; … … 2012 2012 { 2013 2013 char *buf = array_end(c->str_buf, char); 2014 size_t str_size = 2015 sprintf(buf, " " FMT_DELAY "%s\r\n", delay, get_noreply(state)); 2014 size_t str_size = sprintf(buf, "%s\r\n", get_noreply(state)); 2016 2015 iov_push(state, (void *) (long) array_size(c->str_buf), str_size); 2017 2016 array_append(c->str_buf, str_size); -
src/client.h
reece31 r34bb6d 185 185 int 186 186 client_prepare_delete(struct client *c, int key_index, 187 const char *key, size_t key_len , delay_type delay);187 const char *key, size_t key_len); 188 188 189 189 extern
Note: See TracChangeset
for help on using the changeset viewer.
