[Dbix-class] DBIx::Class + perl5.18

Bernhard Bauch bauch at zsi.at
Wed Jun 12 13:57:40 GMT 2013


sorry  - of course i mean:
	DBIx::Class
..

On 12.06.2013, at 15:42, Bernhard Bauch wrote:

> dear dbix-folks,
> 
> i just upgraded to the latest perl 5.18....
> and from that time i got problems with loading my dbix:class Schema....
> 
> errors for example look like this (only one at a time ..randomly):
> 
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: DBIx::Class::Relationship::BelongsTo::belongs_to(): Can't infer join condition for 'zone' on MyApp::Schema::Result::ZoneObject: Can't locate object method "_pri_cols" via package "MyApp::Schema::Result::Zone" at .....perl5/DBIx/Class/Relationship/BelongsTo.pm line 29. at .../Schema/Result/ZoneObject.pm line 22
> 
> {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: DBIx::Class::Relationship::BelongsTo::belongs_to(): Can't infer join condition for 'project' on MyApp::Schema::Result::ProjectStakeholder: Can't locate object method "_pri_cols" via package "MyApp::Schema::Result::Object::Project" at ...../lib/perl5/DBIx/Class/Relationship/BelongsTo.pm line 29. at /....../Schema/Result/ProjectStakeholder.pm line 20
> 
> {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: Can't locate object method "load_components" via package "MyApp::Schema::Result::Object::Project" at ...../Schema/Result/Object/Project.pm line 11.
> 
> {UNKNOWN}: {UNKNOWN}: {UNKNOWN}: DBIx::Class::Relationship::BelongsTo::belongs_to(): Can't infer join condition for 'stakeholder' on MyApp::Schema::Result::StakeholderUsers: Can't locate object method "_pri_cols" via package "MyApp::Schema::Result::Stakeholder" at ..../lib/perl5/DBIx/Class/Relationship/BelongsTo.pm line 29. at ...../Schema/Result/StakeholderUsers.pm line 21
> 
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> the funny thing is, that sometimes it loads fine ... sometimes one of the erros occure.
> 
> i figured out where the problem is!
> 
> since perl 5.18 >>> hash-ramdomizatiomn is used see:
> 	https://metacpan.org/module/RJBS/perl-5.18.0/pod/perldelta.pod#Hash-randomization
> 
> in DBIx::Class::Schema.pm line 232: 
> 	my %results = $class->_map_namespaces(@$result_namespace);
> an ordered list of result classes is stored in an hash ....
> 
> later in line242:
>    for my $res (values %results) {
> 	$class->ensure_class_loaded($res);
> this hash is used
> the error ist, that "values" return a randomly sorted list now ... the correct order coming from
> 	$class->_map_namespaces(@$result_namespace);
> is neglected.
> 
> 
> this was my workaround-fix ....
> ---------------------------
> diff Schema.pm_fix Schema.pm
> 235,241d234
> <     # correct order !!!
> <     my @result_classes;
> <     foreach my $class ( $class->_map_namespaces(@$result_namespace) ){
> <         push (@result_classes, $class) if $class =~ /Schema::Result/;
> <     }
> < 
> < 
> 249,250c242
> < #    for my $res (values %results) {
> <     for my $res ( @result_classes )  {
> ---
>>    for my $res (values %results) {
> ---------------------------
> 
> maybe this should be fixed in upcoming DBIx::Class releases ?
> 
> cheers,
> berni
> 
> 
> 
> 
> --
> Bernhard Bauch, Webdevelopment
> ZSI - Zentrum für soziale Innovation
> bauch at zsi.at
> Skype: berni-zsi
> 
> 
> _______________________________________________
> 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/dbix-class@lists.scsys.co.uk

--
Bernhard Bauch, Webdevelopment
ZSI - Zentrum für soziale Innovation
bauch at zsi.at
Skype: berni-zsi




More information about the DBIx-Class mailing list