fix eol
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / AmbiguousGlob.pm
1 package DBIx::Class::Storage::DBI::AmbiguousGlob;
2
3 use strict;
4 use warnings;
5
6 use base 'DBIx::Class::Storage::DBI';
7
8 =head1 NAME
9
10 DBIx::Class::Storage::DBI::AmbiguousGlob - Storage component for RDBMS supporting multicolumn in clauses
11
12 =head1 DESCRIPTION
13
14 Some servers choke on things like:
15
16   COUNT(*) FROM (SELECT tab1.col, tab2.col FROM tab1 JOIN tab2 ... )
17
18 claiming that col is a duplicate column (it loses the table specifiers by
19 the time it gets to the *). Thus for any subquery count we select only the
20 primary keys of the main table in the inner query. This hopefully still
21 hits the indexes and keeps the server happy.
22
23 At this point the only overriden method is C<_grouped_count_select()>
24
25 =cut
26
27 sub _grouped_count_select {
28   my ($self, $source, $rs_args) = @_;
29   my @pcols = map { join '.', $rs_args->{alias}, $_ } ($source->primary_columns);
30   return @pcols ? \@pcols : $rs_args->{group_by};
31 }
32
33 =head1 AUTHORS
34
35 See L<DBIx::Class/CONTRIBUTORS>
36
37 =head1 LICENSE
38
39 You may distribute this code under the same terms as Perl itself.
40
41 =cut
42
43 1;