X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FAmbiguousGlob.pm;h=37d1bd6e737f051944a8889a753fc07156d07f96;hb=018f6efba10afa2afe9c906384e25596a2056b0b;hp=c848fc10faa76a1da2451e995a7744aa347ce6e1;hpb=48fe908793f2a2141bb687946c18f9a54ae2c47f;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/Storage/DBI/AmbiguousGlob.pm b/lib/DBIx/Class/Storage/DBI/AmbiguousGlob.pm index c848fc1..37d1bd6 100644 --- a/lib/DBIx/Class/Storage/DBI/AmbiguousGlob.pm +++ b/lib/DBIx/Class/Storage/DBI/AmbiguousGlob.pm @@ -1,43 +1,44 @@ -package DBIx::Class::Storage::DBI::AmbiguousGlob; - -use strict; -use warnings; - -use base 'DBIx::Class::Storage::DBI'; - -=head1 NAME - -DBIx::Class::Storage::DBI::AmbiguousGlob - Storage component for RDBMS supporting multicolumn in clauses - -=head1 DESCRIPTION - -Some servers choke on things like: - - COUNT(*) FROM (SELECT tab1.col, tab2.col FROM tab1 JOIN tab2 ... ) - -claiming that col is a duplicate column (it loses the table specifiers by -the time it gets to the *). Thus for any subquery count we select only the -primary keys of the main table in the inner query. This hopefully still -hits the indexes and keeps the server happy. - -At this point the only overriden method is C<_grouped_count_select()> - -=cut - -sub _grouped_count_select { - my ($self, $source, $rs_args) = @_; - my @pcols = map { join '.', $rs_args->{alias}, $_ } ($source->primary_columns); - return @pcols ? \@pcols : $rs_args->{group_by}; -} - -=head1 AUTHORS - -See L - -=head1 LICENSE - -You may distribute this code under the same terms as Perl itself. - -=cut - -1; +package DBIx::Class::Storage::DBI::AmbiguousGlob; + +use strict; +use warnings; + +use base 'DBIx::Class::Storage::DBI'; +use mro 'c3'; + +=head1 NAME + +DBIx::Class::Storage::DBI::AmbiguousGlob - Storage component for RDBMS supporting multicolumn in clauses + +=head1 DESCRIPTION + +Some servers choke on things like: + + COUNT(*) FROM (SELECT tab1.col, tab2.col FROM tab1 JOIN tab2 ... ) + +claiming that col is a duplicate column (it loses the table specifiers by +the time it gets to the *). Thus for any subquery count we select only the +primary keys of the main table in the inner query. This hopefully still +hits the indexes and keeps the server happy. + +At this point the only overriden method is C<_subq_count_select()> + +=cut + +sub _subq_count_select { + my ($self, $source, $rs_attrs) = @_; + my @pcols = map { join '.', $rs_attrs->{alias}, $_ } ($source->primary_columns); + return @pcols ? \@pcols : [ 1 ]; +} + +=head1 AUTHORS + +See L + +=head1 LICENSE + +You may distribute this code under the same terms as Perl itself. + +=cut + +1;