X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI.pm;h=f5794479d727e08e6d43c5f01806493547ec9fd3;hb=de705b510619176ba54e8addd4ff4f0d6c97ce61;hp=ad901c0692bd73a47aaf3d1a9b9d0bef3262882f;hpb=5c91499f8d1122eaad9bb4f36ae50380feadd4eb;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI.pm b/lib/DBIx/Class/Storage/DBI.pm index ad901c0..f579447 100644 --- a/lib/DBIx/Class/Storage/DBI.pm +++ b/lib/DBIx/Class/Storage/DBI.pm @@ -120,35 +120,32 @@ sub delete { return shift->_execute('delete' => [], @_); } -sub select { +sub _select { my ($self, $ident, $select, $condition, $attrs) = @_; my $order = $attrs->{order_by}; if (ref $condition eq 'SCALAR') { $order = $1 if $$condition =~ s/ORDER BY (.*)$//i; } + $ident = $self->_build_from($ident) if ref $ident; my @args = ('select', $attrs->{bind}, $ident, $select, $condition, $order); if ($self->sql_maker->_default_limit_syntax eq "GenericSubQ") { $attrs->{software_limit} = 1; } else { push @args, $attrs->{rows}, $attrs->{offset}; } - my ($rv, $sth, @bind) = $self->_execute(@args); + return $self->_execute(@args); +} + +sub select { + my $self = shift; + my ($ident, $select, $condition, $attrs) = @_; + my ($rv, $sth, @bind) = $self->_select(@_); return $self->cursor->new($sth, \@bind, $attrs); } sub select_single { - my ($self, $ident, $select, $condition, $attrs) = @_; - my $order = $attrs->{order_by}; - if (ref $condition eq 'SCALAR') { - $order = $1 if $$condition =~ s/ORDER BY (.*)$//i; - } - my @args = ('select', $attrs->{bind}, $ident, $select, $condition, $order); - if ($self->sql_maker->_default_limit_syntax eq "GenericSubQ") { - $attrs->{software_limit} = 1; - } else { - push @args, 1, $attrs->{offset}; - } - my ($rv, $sth, @bind) = $self->_execute(@args); + my $self = shift; + my ($rv, $sth, @bind) = $self->_select(@_); return $sth->fetchrow_array; } @@ -164,6 +161,8 @@ sub sth { Matt S. Trout +Andy Grundman + =head1 LICENSE You may distribute this code under the same terms as Perl itself.