X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F71mysql.t;h=755bbf60aa7a9540e5786c5cedee8bb4445c8d1b;hb=b8391c875ed35fd7c5c20aed6dcae724d9366a56;hp=5c5d53c9f0655961a7c9a245bbac1fb02074b61d;hpb=e0d56e264fe10386710097fd1ec62fba37179d50;p=dbsrgits%2FDBIx-Class.git diff --git a/t/71mysql.t b/t/71mysql.t index 5c5d53c..755bbf6 100644 --- a/t/71mysql.t +++ b/t/71mysql.t @@ -194,6 +194,29 @@ lives_ok { $cd->set_producers ([ $producer ]) } 'set_relationship doesnt die'; ); } +{ + # Test support for straight joins + my $cdsrc = $schema->source('CD'); + my $artrel_info = $cdsrc->relationship_info ('artist'); + $cdsrc->add_relationship( + 'straight_artist', + $artrel_info->{class}, + $artrel_info->{cond}, + { %{$artrel_info->{attrs}}, join_type => 'straight' }, + ); + is_same_sql_bind ( + $cdsrc->resultset->search({}, { prefetch => 'straight_artist' })->as_query, + '( + SELECT me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track, + straight_artist.artistid, straight_artist.name, straight_artist.rank, straight_artist.charfield + FROM cd me + STRAIGHT_JOIN artist straight_artist ON straight_artist.artistid = me.artist + )', + [], + 'straight joins correctly supported for mysql' + ); +} + ## Can we properly deal with the null search problem? ## ## Only way is to do a SET SQL_AUTO_IS_NULL = 0; on connect @@ -225,6 +248,23 @@ NULLINSEARCH: { => 'Nothing Found!'; } +# check for proper grouped counts +{ + my $ansi_schema = DBICTest::Schema->connect ($dsn, $user, $pass, { on_connect_call => 'set_strict_mode' }); + my $rs = $ansi_schema->resultset('CD'); + + my $years; + $years->{$_->year|| scalar keys %$years}++ for $rs->all; # NULL != NULL, thus the keys eval + + lives_ok ( sub { + is ( + $rs->search ({}, { group_by => 'year'})->count, + scalar keys %$years, + 'grouped count correct', + ); + }, 'Grouped count does not throw'); +} + ZEROINSEARCH: { my $cds_per_year = { 2001 => 2, @@ -243,11 +283,11 @@ ZEROINSEARCH: { is ($rs->count, 6, 'CDs created successfully'); $rs = $rs->search ({}, { - select => [ {year => 'year'} ], as => ['y'], distinct => 1, order_by => 'year', + select => [ \ 'YEAR(year)' ], as => ['y'], distinct => 1, }); is_deeply ( - [ $rs->get_column ('y')->all ], + [ sort ($rs->get_column ('y')->all) ], [ sort keys %$cds_per_year ], 'Years group successfully', ); @@ -255,7 +295,7 @@ ZEROINSEARCH: { $rs->create ({ artist => 1, year => '0-1-1', title => 'Jesus Rap' }); is_deeply ( - [ $rs->get_column ('y')->all ], + [ sort $rs->get_column ('y')->all ], [ 0, sort keys %$cds_per_year ], 'Zero-year groups successfully', );