From 62521c905dd00690390d2080aad38dff1e3b925c Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Sun, 22 Mar 2009 15:02:42 +0000 Subject: [PATCH] support for set foo => undef git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/Redis@28 447b33ff-793d-4489-8442-9bea7d161be5 --- lib/Redis.pm | 10 +++++++--- t/01-Redis.t | 8 +++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/Redis.pm b/lib/Redis.pm index af9048a..3ac7619 100644 --- a/lib/Redis.pm +++ b/lib/Redis.pm @@ -63,8 +63,10 @@ sub _sock_read_bulk { warn "## bulk len: ",dump($len); return undef if $len eq "nil\r\n"; my $v; - read($sock, $v, $len) || die $!; - warn "## bulk v: ",dump($v); + if ( $len > 0 ) { + read($sock, $v, $len) || die $!; + warn "## bulk v: ",dump($v); + } my $crlf; read($sock, $crlf, 2); # skip cr/lf return $v; @@ -79,6 +81,7 @@ sub _sock_result_bulk { sub __sock_ok { my $ok = <$sock>; + return undef if $ok eq "nil\r\n"; confess dump($ok) unless $ok eq "+OK\r\n"; } @@ -100,7 +103,8 @@ sub __sock_send_bulk_raw { my $self = shift; warn "## _sock_send_bulk ",dump( @_ ); my $value = pop; - print $sock join(' ',@_) . ' ' . length($value) . "\r\n$value\r\n"; + $value = '' unless defined $value; # FIXME errr? nil? + print $sock join(' ',@_) . ' ' . length($value) . "\r\n$value\r\n" } sub _sock_send_bulk { diff --git a/t/01-Redis.t b/t/01-Redis.t index 30d780d..2d13b97 100755 --- a/t/01-Redis.t +++ b/t/01-Redis.t @@ -3,7 +3,7 @@ use warnings; use strict; -use Test::More tests => 71; +use Test::More tests => 75; use lib 'lib'; @@ -26,6 +26,12 @@ ok( $o->set( foo => 'baz' ), 'set foo => baz' ); cmp_ok( $o->get( 'foo' ), 'eq', 'baz', 'get foo = baz' ); +ok( $o->set( 'test-undef' => 42 ), 'set test-undef' ); +ok( $o->set( 'test-undef' => undef ), 'set undef' ); +ok( ! defined $o->get( 'test-undef' ), 'get undef' ); +diag $o->exists( 'test-undef' ); +ok( $o->exists( 'test-undef' ), 'exists undef' ); + $o->del('non-existant'); ok( ! $o->exists( 'non-existant' ), 'exists non-existant' ); -- 2.20.1