X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBM%2FDeep.pm;h=294f5abf123c09533f635a1131fa4d68840db157;hb=cd5303b4d4ed6281f0bd85a7b8ef221d7005a00b;hp=ff2585d8c7dcdd962058df4fb6634387603cc67b;hpb=1c62d370c15f8441e8a11593f9d34eef46ff821c;p=dbsrgits%2FDBM-Deep.git diff --git a/lib/DBM/Deep.pm b/lib/DBM/Deep.pm index ff2585d..294f5ab 100644 --- a/lib/DBM/Deep.pm +++ b/lib/DBM/Deep.pm @@ -572,25 +572,8 @@ sub CLEAR { $self->lock_exclusive; - #XXX Rewrite this dreck to do it in the engine as a tight loop vs. - # iterating over keys - such a WASTE - is this required for transactional - # clearning?! Surely that can be detected in the engine ... - if ( $self->_type eq TYPE_HASH ) { - my $key = $self->first_key; - while ( $key ) { - # Retrieve the key before deleting because we depend on next_key - my $next_key = $self->next_key( $key ); - $self->_engine->delete_key( $self, $key, $key ); - $key = $next_key; - } - } - else { - my $size = $self->FETCHSIZE; - for my $key ( 0 .. $size - 1 ) { - $self->_engine->delete_key( $self, $key, $key ); - } - $self->STORESIZE( 0 ); - } + # Dispatch to the specific clearing functionality. + $self->_clear; $self->unlock;