First pass at SQLite support. Have everything through t/18 passing with all three...
[dbsrgits/DBM-Deep.git] / lib / DBM / Deep / Iterator / DBI.pm
CommitLineData
19b913ce 1package DBM::Deep::Iterator::DBI;
2
3use strict;
4use warnings FATAL => 'all';
5
6use base qw( DBM::Deep::Iterator );
7
350896ee 8sub reset {
9 my $self = shift;
10
11 eval { $self->{sth}->finish; };
12 delete $self->{sth};
13
14 return;
15}
16
17sub get_next_key {
18 my $self = shift;
19 my ($obj) = @_;
20
21 unless ( exists $self->{sth} ) {
bac1b5d5 22 # For mysql, this needs to be RAND()
23 # For sqlite, this needs to be random()
24 my $storage = $self->{engine}->storage;
25 $self->{sth} = $storage->{dbh}->prepare(
26 "SELECT `key` FROM datas WHERE ref_id = ? ORDER BY "
27 . $storage->rand_function,
350896ee 28 );
29 $self->{sth}->execute( $self->{base_offset} );
30 }
31
32 my ($key) = $self->{sth}->fetchrow_array;
33 return $key;
34}
35
19b913ce 361;
37__END__