Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
23d3a5fe
Commit
23d3a5fe
authored
Jun 11, 2010
by
Pieter Noordhuis
Browse files
make LINSERT return -1 when the value could not be inserted
parent
70b4b320
Changes
2
Hide whitespace changes
Inline
Side-by-side
redis.c
View file @
23d3a5fe
...
@@ -538,7 +538,7 @@ typedef struct zset {
...
@@ -538,7 +538,7 @@ typedef struct zset {
#define REDIS_SHARED_INTEGERS 10000
#define REDIS_SHARED_INTEGERS 10000
struct
sharedObjectsStruct
{
struct
sharedObjectsStruct
{
robj
*
crlf
,
*
ok
,
*
err
,
*
emptybulk
,
*
czero
,
*
cone
,
*
pong
,
*
space
,
robj
*
crlf
,
*
ok
,
*
err
,
*
emptybulk
,
*
czero
,
*
cone
,
*
cnegone
,
*
pong
,
*
space
,
*
colon
,
*
nullbulk
,
*
nullmultibulk
,
*
queued
,
*
colon
,
*
nullbulk
,
*
nullmultibulk
,
*
queued
,
*
emptymultibulk
,
*
wrongtypeerr
,
*
nokeyerr
,
*
syntaxerr
,
*
sameobjecterr
,
*
emptymultibulk
,
*
wrongtypeerr
,
*
nokeyerr
,
*
syntaxerr
,
*
sameobjecterr
,
*
outofrangeerr
,
*
plus
,
*
outofrangeerr
,
*
plus
,
...
@@ -1677,6 +1677,7 @@ static void createSharedObjects(void) {
...
@@ -1677,6 +1677,7 @@ static void createSharedObjects(void) {
shared
.
emptybulk
=
createObject
(
REDIS_STRING
,
sdsnew
(
"$0
\r\n\r\n
"
));
shared
.
emptybulk
=
createObject
(
REDIS_STRING
,
sdsnew
(
"$0
\r\n\r\n
"
));
shared
.
czero
=
createObject
(
REDIS_STRING
,
sdsnew
(
":0
\r\n
"
));
shared
.
czero
=
createObject
(
REDIS_STRING
,
sdsnew
(
":0
\r\n
"
));
shared
.
cone
=
createObject
(
REDIS_STRING
,
sdsnew
(
":1
\r\n
"
));
shared
.
cone
=
createObject
(
REDIS_STRING
,
sdsnew
(
":1
\r\n
"
));
shared
.
cnegone
=
createObject
(
REDIS_STRING
,
sdsnew
(
":-1
\r\n
"
));
shared
.
nullbulk
=
createObject
(
REDIS_STRING
,
sdsnew
(
"$-1
\r\n
"
));
shared
.
nullbulk
=
createObject
(
REDIS_STRING
,
sdsnew
(
"$-1
\r\n
"
));
shared
.
nullmultibulk
=
createObject
(
REDIS_STRING
,
sdsnew
(
"*-1
\r\n
"
));
shared
.
nullmultibulk
=
createObject
(
REDIS_STRING
,
sdsnew
(
"*-1
\r\n
"
));
shared
.
emptymultibulk
=
createObject
(
REDIS_STRING
,
sdsnew
(
"*0
\r\n
"
));
shared
.
emptymultibulk
=
createObject
(
REDIS_STRING
,
sdsnew
(
"*0
\r\n
"
));
...
@@ -5252,6 +5253,10 @@ static void pushxGenericCommand(redisClient *c, robj *refval, robj *val, int whe
...
@@ -5252,6 +5253,10 @@ static void pushxGenericCommand(redisClient *c, robj *refval, robj *val, int whe
ziplistLen
(
subject
->
ptr
)
>
server
.
list_max_ziplist_entries
)
ziplistLen
(
subject
->
ptr
)
>
server
.
list_max_ziplist_entries
)
listTypeConvert
(
subject
,
REDIS_ENCODING_LIST
);
listTypeConvert
(
subject
,
REDIS_ENCODING_LIST
);
server
.
dirty
++
;
server
.
dirty
++
;
}
else
{
/* Notify client of a failed insert */
addReply
(
c
,
shared
.
cnegone
);
return
;
}
}
}
else
{
}
else
{
listTypePush
(
subject
,
val
,
where
);
listTypePush
(
subject
,
val
,
where
);
...
...
tests/unit/type/list.tcl
View file @
23d3a5fe
...
@@ -101,10 +101,10 @@ start_server {
...
@@ -101,10 +101,10 @@ start_server {
assert_equal 6
[
r linsert xlist after c yy
]
assert_equal 6
[
r linsert xlist after c yy
]
assert_equal
{
a b zz c yy d
}
[
r lrange xlist 0 10
]
assert_equal
{
a b zz c yy d
}
[
r lrange xlist 0 10
]
assert_equal 7
[
r linsert xlist after d dd
]
assert_equal 7
[
r linsert xlist after d dd
]
assert_equal
7
[
r linsert xlist after bad ddd
]
assert_equal
-1
[
r linsert xlist after bad ddd
]
assert_equal
{
a b zz c yy d dd
}
[
r lrange xlist 0 10
]
assert_equal
{
a b zz c yy d dd
}
[
r lrange xlist 0 10
]
assert_equal 8
[
r linsert xlist before a aa
]
assert_equal 8
[
r linsert xlist before a aa
]
assert_equal
8
[
r linsert xlist before bad aaa
]
assert_equal
-1
[
r linsert xlist before bad aaa
]
assert_equal
{
aa a b zz c yy d dd
}
[
r lrange xlist 0 10
]
assert_equal
{
aa a b zz c yy d dd
}
[
r lrange xlist 0 10
]
# check inserting integer encoded value
# check inserting integer encoded value
...
@@ -154,10 +154,10 @@ start_server {
...
@@ -154,10 +154,10 @@ start_server {
# don't convert when the value could not be inserted
# don't convert when the value could not be inserted
create_ziplist xlist
[
lrepeat 256 a
]
create_ziplist xlist
[
lrepeat 256 a
]
assert_equal
256
[
r linsert xlist before foo a
]
assert_equal
-1
[
r linsert xlist before foo a
]
assert_encoding ziplist xlist
assert_encoding ziplist xlist
create_ziplist xlist
[
lrepeat 256 a
]
create_ziplist xlist
[
lrepeat 256 a
]
assert_equal
256
[
r linsert xlist after foo a
]
assert_equal
-1
[
r linsert xlist after foo a
]
assert_encoding ziplist xlist
assert_encoding ziplist xlist
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment