X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBM%2FDeep%2FIterator%2FDBI.pm;h=31ec7b86fb12de3d3db7d85c75fd6e8ae6903082;hb=350896ee7e5b32e5f965e84f445df47113573a72;hp=3b8f1c8d8ed658e1c58ac66f7e43d0262a9fce42;hpb=19b913ce4f25ce69bd69b4bf4a95ca99d4aa007e;p=dbsrgits%2FDBM-Deep.git diff --git a/lib/DBM/Deep/Iterator/DBI.pm b/lib/DBM/Deep/Iterator/DBI.pm index 3b8f1c8..31ec7b8 100644 --- a/lib/DBM/Deep/Iterator/DBI.pm +++ b/lib/DBM/Deep/Iterator/DBI.pm @@ -5,5 +5,29 @@ use warnings FATAL => 'all'; use base qw( DBM::Deep::Iterator ); +sub reset { + my $self = shift; + + eval { $self->{sth}->finish; }; + delete $self->{sth}; + + return; +} + +sub get_next_key { + my $self = shift; + my ($obj) = @_; + + unless ( exists $self->{sth} ) { + $self->{sth} = $self->{engine}->storage->{dbh}->prepare( + "SELECT `key` FROM datas WHERE ref_id = ? ORDER BY RAND()", + ); + $self->{sth}->execute( $self->{base_offset} ); + } + + my ($key) = $self->{sth}->fetchrow_array; + return $key; +} + 1; __END__