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;
}
- my ($rv, $sth, @bind) = $self->_execute('select', $attrs->{bind}, $ident, $select, $condition, $order, $attrs->{rows}, $attrs->{offset});
+ $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};
+ }
+ 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 ($rv, $sth, @bind) = $self->_execute('select', $attrs->{bind}, $ident, $select, $condition, $order, 1, $attrs->{offset});
+ my $self = shift;
+ my ($rv, $sth, @bind) = $self->_select(@_);
return $sth->fetchrow_array;
}
Matt S. Trout <mst@shadowcatsystems.co.uk>
+Andy Grundman <andy@hybridized.org>
+
=head1 LICENSE
You may distribute this code under the same terms as Perl itself.