From: Justin Hunter Date: Sat, 2 May 2009 01:33:47 +0000 (+0000) Subject: remove DBIx::Class::Storage::DBI::MultiDistinctEmulation X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=f12f0d978550cb76d440f88a5cafe3fc4a547ae0;p=dbsrgits%2FDBIx-Class-Historic.git remove DBIx::Class::Storage::DBI::MultiDistinctEmulation --- diff --git a/lib/DBIx/Class/Storage/DBI/MultiDistinctEmulation.pm b/lib/DBIx/Class/Storage/DBI/MultiDistinctEmulation.pm deleted file mode 100644 index 7ab7846..0000000 --- a/lib/DBIx/Class/Storage/DBI/MultiDistinctEmulation.pm +++ /dev/null @@ -1,51 +0,0 @@ -package DBIx::Class::Storage::DBI::MultiDistinctEmulation; - -use strict; -use warnings; - -use base qw/DBIx::Class::Storage::DBI/; - -sub _select { - my ($self, $ident, $select, $condition, $attrs) = @_; - - # hack to make count distincts with multiple columns work in SQLite and Oracle - if (ref $select eq 'ARRAY') { - @{$select} = map {$self->replace_distincts($_)} @{$select}; - } else { - $select = $self->replace_distincts($select); - } - - return $self->next::method($ident, $select, $condition, $attrs); -} - -sub replace_distincts { - my ($self, $select) = @_; - - $select->{count}->{distinct} = join("||", @{$select->{count}->{distinct}}) - if (ref $select eq 'HASH' && $select->{count} && ref $select->{count} eq 'HASH' && - $select->{count}->{distinct} && ref $select->{count}->{distinct} eq 'ARRAY'); - - return $select; -} - -1; - -=head1 NAME - -DBIx::Class::Storage::DBI::MultiDistinctEmulation - Some databases can't handle count distincts with multiple cols. They should use base on this. - -=head1 SYNOPSIS - -=head1 DESCRIPTION - -This class allows count distincts with multiple columns for retarded databases (Oracle and SQLite) - -=head1 AUTHORS - -Luke Saunders - -=head1 LICENSE - -You may distribute this code under the same terms as Perl itself. - -=cut diff --git a/t/03podcoverage.t b/t/03podcoverage.t index 175542b..b82d4f7 100644 --- a/t/03podcoverage.t +++ b/t/03podcoverage.t @@ -99,7 +99,6 @@ my $exceptions = { 'DBIx::Class::Storage::DBI' => { skip => 1 }, 'DBIx::Class::Storage::DBI::DB2' => { skip => 1 }, 'DBIx::Class::Storage::DBI::MSSQL' => { skip => 1 }, - 'DBIx::Class::Storage::DBI::MultiDistinctEmulation' => { skip => 1 }, 'DBIx::Class::Storage::DBI::ODBC400' => { skip => 1 }, 'DBIx::Class::Storage::DBI::ODBC::DB2_400_SQL' => { skip => 1 }, 'DBIx::Class::Storage::DBI::Oracle' => { skip => 1 }, diff --git a/t/73oracle.t b/t/73oracle.t index 6220ec9..c5fe45a 100644 --- a/t/73oracle.t +++ b/t/73oracle.t @@ -39,7 +39,7 @@ plan skip_all => 'Set $ENV{DBICTEST_ORA_DSN}, _USER and _PASS to run this test. ' as well as following sequences: \'pkid1_seq\', \'pkid2_seq\' and \'nonpkid_seq\'' unless ($dsn && $user && $pass); -plan tests => 24; +plan tests => 26; DBICTest::Schema->load_classes('ArtistFQN'); my $schema = DBICTest::Schema->connect($dsn, $user, $pass); @@ -114,7 +114,7 @@ my $tcount = $schema->resultset('Track')->search( distinct => 1, } ); -is($tcount->count, 13, 'multiple column COUNT DISTINCT ok'); +is($tcount->count, 2, 'multiple column COUNT DISTINCT ok'); $tcount = $schema->resultset('Track')->search( {}, @@ -123,7 +123,7 @@ $tcount = $schema->resultset('Track')->search( distinct => 1, } ); -is($tcount->count, 13, 'multiple column COUNT DISTINCT ok'); +is($tcount->count, 2, 'multiple column COUNT DISTINCT ok'); $tcount = $schema->resultset('Track')->search( {}, @@ -131,7 +131,7 @@ $tcount = $schema->resultset('Track')->search( group_by => [ qw/position title/ ] } ); -is($tcount->count, 13, 'multiple column COUNT DISTINCT using column syntax ok'); +is($tcount->count, 2, 'multiple column COUNT DISTINCT using column syntax ok'); # test LIMIT support for (1..6) {