[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