[Dbix-class] Finding by primary key and might_have
    Peter Rabbitson 
    rabbit+dbic at rabbit.us
       
    Fri Feb 20 08:23:36 GMT 2009
    
    
  
Zbigniew Lukasiak wrote:
> One more thing - this test fails:
> 
> ok( $schema->resultset('CD')->find( {
>             cdid => 1,
>             liner_notes => {
>                 'notes' => 'test note changed'
>             },
>         },
>         { key => 'primary' }
>     ),
>     'CD found'
> );
> 
> The liner_notes are linked to the CD by the CD's primary key (as a
> might_have relationship) - so this specifies the key in two
> conflicting ways - one by explicite parameter and one inferred from
> the relationship.  The effect is this SQL:
> 
> SELECT me.cdid, me.artist, me.title, me.year, me.genreid,
> me.single_track FROM cd me WHERE ( me.cdid IS NULL )
> 
> You can characterise that as a garbage in garbage out case - but I
> think it is rather surprising and it can surface as another strange
> case when composing find with other methods.
> 
> A diff with the test against the trunk version is attached.
> 
> 
> I hope you understand I am not doing that out of malice - I am just
> testing my own library.
> 
Afaik find() (and search() for that matter) were never designed to transcend
relationships - you need to supply joins and all the shebang. I am inclined
to call this a massive GIGO case, not worth investigating.
Objections?
    
    
More information about the DBIx-Class
mailing list