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/;
--- /dev/null
+use strict;
+use Test::More;
+use IO::File;
+
+BEGIN {
+ eval "use DBD::SQLite";
+ plan $@
+ ? ( skip_all => 'needs DBD::SQLite for testing' )
+ : ( tests => 2 );
+}
+
+use lib qw(t/lib);
+
+use_ok('DBICTest');
+
+DBICTest::_db->storage->sql_maker->{'quote_char'} = q!'!;
+DBICTest::_db->storage->sql_maker->{'name_sep'} = '.';
+
+my $rs = DBICTest::CD->search(
+ { 'year' => 2001, 'artist.name' => 'Caterwauler McCrae' },
+ { join => 'artist' });
+
+cmp_ok( $rs->count, '==', 1, "join with fields quoted");
+