1use strict; 2use warnings; 3 4use Test::More; 5use Test::Exception; 6 7use lib qw(t/lib); 8use DBIC::SqlMakerTest; 9use DBICTest; 10 11my $schema = DBICTest->init_schema(); 12 13my $rs = $schema->resultset('CD')->search ( 14 { 'tracks.id' => { '!=', 666 }}, 15 { join => 'artist', prefetch => 'tracks', rows => 2 } 16); 17 18my $rel_rs = $rs->search_related ('tags', { 'tags.tag' => { '!=', undef }}, { distinct => 1}); 19 20is_same_sql_bind ( 21 $rel_rs->as_query, 22 '( 23 SELECT tags.tagid, tags.cd, tags.tag 24 FROM ( 25 SELECT me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track 26 FROM cd me 27 JOIN artist artist ON artist.artistid = me.artist 28 LEFT JOIN track tracks ON tracks.cd = me.cdid 29 WHERE ( tracks.id != ? ) 30 LIMIT 2 31 ) me 32 JOIN artist artist ON artist.artistid = me.artist 33 JOIN tags tags ON tags.cd = me.cdid 34 WHERE ( tags.tag IS NOT NULL ) 35 GROUP BY tags.tagid, tags.cd, tags.tag 36 )', 37 38 [ [ 'tracks.id' => 666 ] ], 39 'Prefetch spec successfully stripped on search_related' 40); 41 42done_testing; 43