X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FAmbiguousGlob.pm;h=3d98122e4877fa43f5f2b2770e80bd83b5998da6;hb=c13002976e32b818eabc3a8eaf6fa2e23ebed7e9;hp=568e6ac2c154b89a7e569e3509ca646dfb2ccc72;hpb=efe2cc834f54d9165b608a6ef9cc958fb52e1714;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/AmbiguousGlob.pm b/lib/DBIx/Class/Storage/DBI/AmbiguousGlob.pm index 568e6ac..3d98122 100644 --- a/lib/DBIx/Class/Storage/DBI/AmbiguousGlob.pm +++ b/lib/DBIx/Class/Storage/DBI/AmbiguousGlob.pm @@ -4,10 +4,11 @@ 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 +DBIx::Class::Storage::DBI::AmbiguousGlob - Storage component for RDBMS choking on count(*) =head1 DESCRIPTION @@ -20,14 +21,17 @@ 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()> +At this point the only overridden method is C<_subq_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}; +sub _subq_count_select { + my ($self, $source, $rs_attrs) = @_; + + return $rs_attrs->{group_by} if $rs_attrs->{group_by}; + + my @pcols = map { join '.', $rs_attrs->{alias}, $_ } ($source->primary_columns); + return @pcols ? \@pcols : [ 1 ]; } =head1 AUTHORS