X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F71mysql.t;h=88d6ea2d431cb7c39fbca79a4767842e504f480d;hb=0bdff7697724cd7a858b39ba39d05658aec17c86;hp=cb21aa7e699ac22a751f22a47f3aa50c0dec242a;hpb=bed3a173167f330281c09277bac5a0816f81b3f8;p=dbsrgits%2FDBIx-Class.git diff --git a/t/71mysql.t b/t/71mysql.t index cb21aa7..88d6ea2 100644 --- a/t/71mysql.t +++ b/t/71mysql.t @@ -14,7 +14,7 @@ my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_MYSQL_${_}" } qw/DSN USER PASS/}; plan skip_all => 'Set $ENV{DBICTEST_MYSQL_DSN}, _USER and _PASS to run this test' unless ($dsn && $user); -plan tests => 15; +plan tests => 19; my $schema = DBICTest::Schema->connect($dsn, $user, $pass); @@ -104,23 +104,40 @@ $schema->populate ('Owners', [ $schema->populate ('BooksInLibrary', [ [qw/source owner title /], - [qw/nsa 1 secrets1/], - [qw/fbi 1 secrets2/], - [qw/cia 2 secrets3/], + [qw/Library 1 secrets1/], + [qw/Eatery 1 secrets2/], + [qw/Library 2 secrets3/], ]); -# try a distinct + prefetch with tables with identical columns (mysql allegedly doesn't like this) -my $owners = $schema->resultset ('Owners')->search ( - { 'books.id' => { '!=', undef }}, - { prefetch => 'books', distinct => 1 } -); -my $owners2 = $schema->resultset ('Owners')->search ({ id => { -in => $owners->get_column ('me.id')->as_query }}); -for ($owners, $owners2) { - is ($_->all, 2, 'Prefetched grouped search returns correct number of rows'); - is ($_->count, 2, 'Prefetched grouped search returns correct count'); +# +# try a distinct + prefetch on tables with identically named columns +# (mysql doesn't seem to like subqueries with equally named columns) +# + +{ + # try a ->has_many direction (due to a 'multi' accessor the select/group_by group is collapsed) + my $owners = $schema->resultset ('Owners')->search ( + { 'books.id' => { '!=', undef }}, + { prefetch => 'books', distinct => 1 } + ); + my $owners2 = $schema->resultset ('Owners')->search ({ id => { -in => $owners->get_column ('me.id')->as_query }}); + for ($owners, $owners2) { + is ($_->all, 2, 'Prefetched grouped search returns correct number of rows'); + is ($_->count, 2, 'Prefetched grouped search returns correct count'); + } + + # try a ->belongs_to direction (no select collapse) + my $books = $schema->resultset ('BooksInLibrary')->search ( + { 'owner.name' => 'wiggle' }, + { prefetch => 'owner', distinct => 1 } + ); + my $books2 = $schema->resultset ('BooksInLibrary')->search ({ id => { -in => $books->get_column ('me.id')->as_query }}); + for ($books, $books2) { + is ($_->all, 1, 'Prefetched grouped search returns correct number of rows'); + is ($_->count, 1, 'Prefetched grouped search returns correct count'); + } } - SKIP: { my $mysql_version = $dbh->get_info( $GetInfoType{SQL_DBMS_VER} ); skip "Cannot determine MySQL server version", 1 if !$mysql_version;