I'm not sure if this counts as a regression, but it was for me :)
I have a class which is defined as:
package MyApp::Schema::StupidJoinTable;
use strict;
use warnings;
use base 'DBIx::Class';
__PACKAGE__->load_components("Core");
__PACKAGE__->table("stupid_join_table");
__PACKAGE__->add_columns(
"stupid_id",
{
data_type => "integer",
default_value => undef,
is_nullable => 0,
size => 11
},
"stupider_id",
{
data_type => "integer",
default_value => undef,
is_nullable => 0,
size => 11
},
);
__PACKAGE__->belongs_to( 'thing_1', 'MyApp::Schema::Thing', 'stupid_id');
__PACKAGE__->belongs_to( 'thing_2', 'MyApp::Schema::Thing2', 'stupider_id');
1;
Now, if I attempt to prefetch this relationship, I get this error
thrown (from DBIx/Class/Row.pm, line 1138):
$class->throw_exception("Implicit prefetch (via select/columns)
not supported with accessor 'multi'");
The reason is that without ->set_primary_key(...) in this result
definition, the query on type is an empty array.
So, $prefetch->{$pre} is simply an empty array (the line "if (ref
$prefetch->{$pre}[0] eq 'ARRAY')").
This behavior is not changed if I explicitly define the columns on the
relationships (eg., { 'foreign.stupid_id' => 'self.stupid_id' })
I'm still running 0.08115 in production, so it is working there, but
this came up on my tests as a failure. The fix for me is just adding
in the primary keys as they should be, but it seemed like an odd
behavior.
If it's a bug, I'm happy to at least commit a failing test case :)
Thanks,
-Jay
_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[email protected]