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
63b29390
"vscode:/vscode.git/clone" did not exist on "3769dbd72212f0adb11b0db3d01bf2052c580498"
Commit
63b29390
authored
Mar 10, 2011
by
Pieter Noordhuis
Browse files
Convert encoding of result when in limits
parent
46aa0e24
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/t_zset.c
View file @
63b29390
...
@@ -1426,6 +1426,7 @@ void zunionInterGenericCommand(redisClient *c, robj *dstkey, int op) {
...
@@ -1426,6 +1426,7 @@ void zunionInterGenericCommand(redisClient *c, robj *dstkey, int op) {
zsetopsrc
*
src
;
zsetopsrc
*
src
;
zsetopval
zval
;
zsetopval
zval
;
robj
*
tmp
;
robj
*
tmp
;
unsigned
int
maxelelen
=
0
;
robj
*
dstobj
;
robj
*
dstobj
;
zset
*
dstzset
;
zset
*
dstzset
;
zskiplistNode
*
znode
;
zskiplistNode
*
znode
;
...
@@ -1539,6 +1540,10 @@ void zunionInterGenericCommand(redisClient *c, robj *dstkey, int op) {
...
@@ -1539,6 +1540,10 @@ void zunionInterGenericCommand(redisClient *c, robj *dstkey, int op) {
incrRefCount
(
tmp
);
/* added to skiplist */
incrRefCount
(
tmp
);
/* added to skiplist */
dictAdd
(
dstzset
->
dict
,
tmp
,
&
znode
->
score
);
dictAdd
(
dstzset
->
dict
,
tmp
,
&
znode
->
score
);
incrRefCount
(
tmp
);
/* added to dictionary */
incrRefCount
(
tmp
);
/* added to dictionary */
if
(
tmp
->
encoding
==
REDIS_ENCODING_RAW
)
if
(
sdslen
(
tmp
->
ptr
)
>
maxelelen
)
maxelelen
=
sdslen
(
tmp
->
ptr
);
}
}
}
}
}
}
...
@@ -1571,6 +1576,10 @@ void zunionInterGenericCommand(redisClient *c, robj *dstkey, int op) {
...
@@ -1571,6 +1576,10 @@ void zunionInterGenericCommand(redisClient *c, robj *dstkey, int op) {
incrRefCount
(
zval
.
ele
);
/* added to skiplist */
incrRefCount
(
zval
.
ele
);
/* added to skiplist */
dictAdd
(
dstzset
->
dict
,
tmp
,
&
znode
->
score
);
dictAdd
(
dstzset
->
dict
,
tmp
,
&
znode
->
score
);
incrRefCount
(
zval
.
ele
);
/* added to dictionary */
incrRefCount
(
zval
.
ele
);
/* added to dictionary */
if
(
tmp
->
encoding
==
REDIS_ENCODING_RAW
)
if
(
sdslen
(
tmp
->
ptr
)
>
maxelelen
)
maxelelen
=
sdslen
(
tmp
->
ptr
);
}
}
}
}
}
else
{
}
else
{
...
@@ -1586,13 +1595,18 @@ void zunionInterGenericCommand(redisClient *c, robj *dstkey, int op) {
...
@@ -1586,13 +1595,18 @@ void zunionInterGenericCommand(redisClient *c, robj *dstkey, int op) {
server
.
dirty
++
;
server
.
dirty
++
;
}
}
if
(
dstzset
->
zsl
->
length
)
{
if
(
dstzset
->
zsl
->
length
)
{
/* Convert to ziplist when in limits. */
if
(
dstzset
->
zsl
->
length
<=
server
.
zset_max_ziplist_entries
&&
maxelelen
<=
server
.
zset_max_ziplist_value
)
zsConvert
(
dstobj
,
REDIS_ENCODING_ZIPLIST
);
dbAdd
(
c
->
db
,
dstkey
,
dstobj
);
dbAdd
(
c
->
db
,
dstkey
,
dstobj
);
addReplyLongLong
(
c
,
dstzset
->
zsl
->
length
);
addReplyLongLong
(
c
,
zsLength
(
dstobj
)
);
if
(
!
touched
)
touchWatch
edKey
(
c
->
db
,
dstkey
);
if
(
!
touched
)
signalModifi
edKey
(
c
->
db
,
dstkey
);
server
.
dirty
++
;
server
.
dirty
++
;
}
else
{
}
else
{
decrRefCount
(
dstobj
);
decrRefCount
(
dstobj
);
addReply
(
c
,
shared
.
czero
);
addReply
(
c
,
shared
.
czero
);
}
}
zfree
(
src
);
zfree
(
src
);
}
}
...
...
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