[Dbix-class] ResultClass::HashRefInflator skipping last column on table joins

Peter Rabbitson rabbit+dbic at rabbit.us
Mon Nov 26 09:16:53 GMT 2012


On Mon, Nov 26, 2012 at 08:31:31AM +0000, Jillian Rowe wrote:
> 
> #for this particular case, sometimes this has an actual value
>     $c->stash(WHERE => undef);
> 
>     $c->log->debug(Dumper($c->stash->{FIELDS}));
>     $c->log->debug(Dumper($c->stash->{TABLES}));
> 
> ##Gets me 
> $c->stash->{FIELDS}
> [debug] $VAR1 = [
>           'PID',
>           'qdem.qdem0006',
>           'qdem.qdem0007',
>           'qdem.qdem0008',
>           'qdem.qdem0009',
>         ];
> $c->stash->{TABLES}
> [debug] $VAR1 = 'qdem';
> ###
> 
> 
>     $rs = $rs->search(
>         $c->stash->{WHERE},
>         {   
>             select => $c->stash->{FIELDS},
>             join => $c->stash->{TABLES},
>         }   
>     );  
> 
> $rs->result_class('DBIx::Class::ResultClass::HashRefInflator');
>  @infl = $rs->all;
> 
> $c->log->debug(Dumper(\@infl));
> 
> ###In the debug log
> {
>             'qdem' => {
>                        'qdem0006' => '1',
>                        'qdem0007' => '1950',
>                        'qdem0009' => '5',
>                        'qdem0008' => '-1',
>                       },
>             'PID' => '0017'
>  }
> ###
> 
> While using 
> 
> $cursor = $rs->cursor;
> while (my @vals = $cursor->next) {
>        $c->log->debug("ROW: @vals");
> }
> 
> ###Debug log
> 0017 1 1950 -1 1 9.5*
> 
> **Where 9.5 is from column qdem0010 and missing in the hashrefinflator
> 

I don't get it... you asked in FIELDS to receive qdem6~qdem9, and this
is what HRI gave you back. I am not even entrirely sure *why* $rs->cursor
returned more fields - *this* looks like a bug. Please show the SQL trace
from the above ->all call (DBIC_TRACE=1 DBIC_TRACE_PROFILE=console)

Cheers




More information about the DBIx-Class mailing list