Skip to content

Commit c4b0b68

Browse files
committed
Type mismatch errors are now prefixed with WRONGTYPE.
So instead to reply with a generic error like: -ERR ... wrong kind of value ... now it replies with: -WRONGTYPE ... wrong kind of value ... This makes this particular error easy to check without resorting to (fragile) pattern matching of the error string (however the error string used to be consistent already). Client libraries should return a specific exeption type for this error. Most of the commit is about fixing unit tests.
1 parent 06851a9 commit c4b0b68

File tree

5 files changed

+26
-26
lines changed

5 files changed

+26
-26
lines changed

src/redis.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1032,7 +1032,7 @@ void createSharedObjects(void) {
10321032
shared.pong = createObject(REDIS_STRING,sdsnew("+PONG\r\n"));
10331033
shared.queued = createObject(REDIS_STRING,sdsnew("+QUEUED\r\n"));
10341034
shared.wrongtypeerr = createObject(REDIS_STRING,sdsnew(
1035-
"-ERR Operation against a key holding the wrong kind of value\r\n"));
1035+
"-WRONGTYPE Operation against a key holding the wrong kind of value\r\n"));
10361036
shared.nokeyerr = createObject(REDIS_STRING,sdsnew(
10371037
"-ERR no such key\r\n"));
10381038
shared.syntaxerr = createObject(REDIS_STRING,sdsnew(

tests/unit/basic.tcl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ start_server {tags {"basic"}} {
143143
catch {r incr mylist} err
144144
r rpop mylist
145145
format $err
146-
} {ERR*}
146+
} {WRONGTYPE*}
147147

148148
test {DECRBY over 32bit value with over 32bit increment, negative res} {
149149
r set novar 17179869184
@@ -201,7 +201,7 @@ start_server {tags {"basic"}} {
201201
catch {r incrbyfloat mylist 1.0} err
202202
r del mylist
203203
format $err
204-
} {ERR*kind*}
204+
} {WRONGTYPE*}
205205

206206
test {INCRBYFLOAT does not allow NaN or Infinity} {
207207
r set foo 0
@@ -531,7 +531,7 @@ start_server {tags {"basic"}} {
531531
test "SETBIT against key with wrong type" {
532532
r del mykey
533533
r lpush mykey "foo"
534-
assert_error "*wrong kind*" {r setbit mykey 0 1}
534+
assert_error "WRONGTYPE*" {r setbit mykey 0 1}
535535
}
536536

537537
test "SETBIT with out of range bit offset" {
@@ -665,7 +665,7 @@ start_server {tags {"basic"}} {
665665
test "SETRANGE against key with wrong type" {
666666
r del mykey
667667
r lpush mykey "foo"
668-
assert_error "*wrong kind*" {r setrange mykey 0 bar}
668+
assert_error "WRONGTYPE*" {r setrange mykey 0 bar}
669669
}
670670

671671
test "SETRANGE with out of range offset" {

tests/unit/bitops.tcl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ start_server {tags {"bitops"}} {
170170
r lpush c foo
171171
catch {r bitop xor dest a b c d} e
172172
set e
173-
} {*ERR*}
173+
} {WRONGTYPE*}
174174

175175
test {BITOP with empty string after non empty string (issue #529)} {
176176
r flushdb

tests/unit/type/list.tcl

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ start_server {
242242
r del blist target
243243
r set blist nolist
244244
$rd brpoplpush blist target 1
245-
assert_error "ERR*wrong kind*" {$rd read}
245+
assert_error "WRONGTYPE*" {$rd read}
246246
}
247247

248248
test "BRPOPLPUSH with wrong destination type" {
@@ -251,15 +251,15 @@ start_server {
251251
r set target nolist
252252
r lpush blist foo
253253
$rd brpoplpush blist target 1
254-
assert_error "ERR*wrong kind*" {$rd read}
254+
assert_error "WRONGTYPE*" {$rd read}
255255

256256
set rd [redis_deferring_client]
257257
r del blist target
258258
r set target nolist
259259
$rd brpoplpush blist target 0
260260
after 1000
261261
r rpush blist foo
262-
assert_error "ERR*wrong kind*" {$rd read}
262+
assert_error "WRONGTYPE*" {$rd read}
263263
assert_equal {foo} [r lrange blist 0 -1]
264264
}
265265

@@ -269,7 +269,7 @@ start_server {
269269
r set target nolist
270270
$rd brpoplpush blist target 0
271271
r rpush blist a b c
272-
assert_error "ERR*wrong kind*" {$rd read}
272+
assert_error "WRONGTYPE*" {$rd read}
273273
r lrange blist 0 -1
274274
} {a b c}
275275

@@ -282,7 +282,7 @@ start_server {
282282
$rd2 brpoplpush blist target2 0
283283
r lpush blist foo
284284

285-
assert_error "ERR*wrong kind*" {$rd1 read}
285+
assert_error "WRONGTYPE*" {$rd1 read}
286286
assert_equal {foo} [$rd2 read]
287287
assert_equal {foo} [r lrange target2 0 -1]
288288
}
@@ -424,7 +424,7 @@ start_server {
424424
r del blist1 blist2
425425
r set blist2 nolist
426426
$rd $pop blist1 blist2 1
427-
assert_error "ERR*wrong kind*" {$rd read}
427+
assert_error "WRONGTYPE*" {$rd read}
428428
}
429429

430430
test "$pop: timeout" {
@@ -594,27 +594,27 @@ start_server {
594594
test {LLEN against non-list value error} {
595595
r del mylist
596596
r set mylist foobar
597-
assert_error ERR* {r llen mylist}
597+
assert_error WRONGTYPE* {r llen mylist}
598598
}
599599

600600
test {LLEN against non existing key} {
601601
assert_equal 0 [r llen not-a-key]
602602
}
603603

604604
test {LINDEX against non-list value error} {
605-
assert_error ERR* {r lindex mylist 0}
605+
assert_error WRONGTYPE* {r lindex mylist 0}
606606
}
607607

608608
test {LINDEX against non existing key} {
609609
assert_equal "" [r lindex not-a-key 10]
610610
}
611611

612612
test {LPUSH against non-list value error} {
613-
assert_error ERR* {r lpush mylist 0}
613+
assert_error WRONGTYPE* {r lpush mylist 0}
614614
}
615615

616616
test {RPUSH against non-list value error} {
617-
assert_error ERR* {r rpush mylist 0}
617+
assert_error WRONGTYPE* {r rpush mylist 0}
618618
}
619619

620620
foreach {type large} [array get largevalue] {
@@ -663,15 +663,15 @@ start_server {
663663
test {RPOPLPUSH against non list src key} {
664664
r del srclist dstlist
665665
r set srclist x
666-
assert_error ERR* {r rpoplpush srclist dstlist}
666+
assert_error WRONGTYPE* {r rpoplpush srclist dstlist}
667667
assert_type string srclist
668668
assert_equal 0 [r exists newlist]
669669
}
670670

671671
test {RPOPLPUSH against non list dst key} {
672672
create_ziplist srclist {a b c d}
673673
r set dstlist x
674-
assert_error ERR* {r rpoplpush srclist dstlist}
674+
assert_error WRONGTYPE* {r rpoplpush srclist dstlist}
675675
assert_type string dstlist
676676
assert_equal {a b c d} [r lrange srclist 0 -1]
677677
}
@@ -697,8 +697,8 @@ start_server {
697697

698698
test {LPOP/RPOP against non list value} {
699699
r set notalist foo
700-
assert_error ERR*kind* {r lpop notalist}
701-
assert_error ERR*kind* {r rpop notalist}
700+
assert_error WRONGTYPE* {r lpop notalist}
701+
assert_error WRONGTYPE* {r rpop notalist}
702702
}
703703

704704
foreach {type num} {ziplist 250 linkedlist 500} {
@@ -798,7 +798,7 @@ start_server {
798798

799799
test {LSET against non list value} {
800800
r set nolist foobar
801-
assert_error ERR*value* {r lset nolist 0 foo}
801+
assert_error WRONGTYPE* {r lset nolist 0 foo}
802802
}
803803

804804
foreach {type e} [array get largevalue] {

tests/unit/type/set.tcl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ start_server {
3535

3636
test {SADD against non set} {
3737
r lpush mylist foo
38-
assert_error ERR*kind* {r sadd mylist bar}
38+
assert_error WRONGTYPE* {r sadd mylist bar}
3939
}
4040

4141
test "SADD a non-integer against an intset" {
@@ -215,12 +215,12 @@ start_server {
215215

216216
test "SINTER against non-set should throw error" {
217217
r set key1 x
218-
assert_error "ERR*wrong kind*" {r sinter key1 noset}
218+
assert_error "WRONGTYPE*" {r sinter key1 noset}
219219
}
220220

221221
test "SUNION against non-set should throw error" {
222222
r set key1 x
223-
assert_error "ERR*wrong kind*" {r sunion key1 noset}
223+
assert_error "WRONGTYPE*" {r sunion key1 noset}
224224
}
225225

226226
test "SINTER should handle non existing key as empty" {
@@ -445,12 +445,12 @@ start_server {
445445

446446
test "SMOVE wrong src key type" {
447447
r set x 10
448-
assert_error "ERR*wrong kind*" {r smove x myset2 foo}
448+
assert_error "WRONGTYPE*" {r smove x myset2 foo}
449449
}
450450

451451
test "SMOVE wrong dst key type" {
452452
r set x 10
453-
assert_error "ERR*wrong kind*" {r smove myset2 x foo}
453+
assert_error "WRONGTYPE*" {r smove myset2 x foo}
454454
}
455455

456456
test "SMOVE with identical source and destination" {

0 commit comments

Comments
 (0)