my $schema = DBICTest->init_schema();
+my $queries;
+my $debugcb = sub { $queries++; };
+my $orig_debug = $schema->storage->debug;
+
lives_ok ( sub {
my $no_prefetch = $schema->resultset('Track')->search_related(cd =>
{
is($rs->all, 1, 'distinct with prefetch (objects)');
is($rs->count, 1, 'distinct with prefetch (count)');
- TODO: {
- local $TODO = "This makes another 2 trips to the database, it can't be right";
+ $queries = 0;
+ $schema->storage->debugcb ($debugcb);
+ $schema->storage->debug (1);
+
# artist -> 2 cds -> 2 genres -> 2 cds for each genre + distinct = 2
is($rs->search_related('cds')->all, 2, 'prefetched distinct with prefetch (objects)');
is($rs->search_related('cds')->count, 2, 'prefetched distinct with prefetch (count)');
- }
+ {
+ local $TODO = "This makes another 2 trips to the database, it can't be right";
+ is ($queries, 0, 'No extra queries fired (prefetch survives search_related)');
+ }
+
+ $schema->storage->debugcb (undef);
+ $schema->storage->debug ($orig_debug);
}, 'distinct generally works with prefetch on deep search_related chains');
done_testing;