[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