use base qw/SQL::Abstract::Limit/;
-sub select {
- my ($self, $ident, @rest) = @_;
- return $self->SUPER::select($self->from($ident), @rest);
-}
-
-sub from {
+sub _table {
my ($self, $from) = @_;
if (ref $from eq 'ARRAY') {
return $self->_recurse_from(@$from);
sub _make_as {
my ($self, $from) = @_;
- return join(' ', reverse each %{$self->_skip_options($from)});
+ return join(' ', map { $self->_quote($_) }
+ reverse each %{$self->_skip_options($from)});
}
sub _skip_options {
my ($self, $cond) = @_;
die "no chance" unless ref $cond eq 'HASH';
my %j;
- for (keys %$cond) { my $x = '= '.$cond->{$_}; $j{$_} = \$x; };
+ for (keys %$cond) { my $x = '= '.$self->_quote($cond->{$_}); $j{$_} = \$x; };
return $self->_recurse_where(\%j);
}
+sub _quote {
+ my ($self, $label) = @_;
+ return '' unless defined $label;
+ return $self->SUPER::_quote($label);
+}
+
} # End of BEGIN block
use base qw/DBIx::Class/;
return $new;
}
-sub get_simple {
- my ($self, $get) = @_;
- return $self->{$get};
-}
-
-sub set_simple {
- my ($self, $set, $val) = @_;
- return $self->{$set} = $val;
-}
-
=head1 NAME
DBIx::Class::Storage::DBI - DBI storage handler
my ($sql, @bind) = $self->sql_maker->$op($ident, @args);
unshift(@bind, @$extra_bind) if $extra_bind;
warn "$sql: @bind" if $self->debug;
- my $sth = $self->sth($sql);
+ my $sth = $self->sth($sql,$op);
@bind = map { ref $_ ? ''.$_ : $_ } @bind; # stringify args
my $rv = $sth->execute(@bind);
return (wantarray ? ($rv, $sth, @bind) : $rv);
}
sub sth {
- shift->dbh->prepare(@_);
+ my ($self, $sql, $op) = @_;
+ my $meth = (defined $op && $op ne 'select' ? 'prepare_cached' : 'prepare');
+ return $self->dbh->$meth($sql);
}
1;