Today I was trying to make a resultset with specifed set of columns and 
prefetch. And it's all will be paged trough pager.  
But it simply fails. IMHO it's relations problem - I think relation requests 
full set of columns and if I don't put them all in select it breaks. 

Code:

$c->stash->{routes} = $c->model('QDB::Routes')->search(
                {
                        'me.net_id'    => $c->stash->{net_id},
                        'me.route_beg' => $c->stash->{node_id_beg},
                        'me.route_end' => $c->stash->{node_id_end},
                },
                {
                        prefetch => { 'xc_params' => 'nodes' },
                        columns  => [qw/ 
                        me.route_id me.route_beg me.route_end me.err_code 
me.comment me.net_id 
                        xc_params.node_rank xc_params.ch_beg xc_params.ch_end 
                        nodes.node_id nodes.node_name
                        / ],

                        #TODO Paged output
                        order_by => [ @order_by ],
                        page     => $page,       # page to return (defaults to 
1)
                        rows     => $rows,       # number of results per page,
                        cache => 1
                }
        );
This code throw 
[error] Couldn't render template "undef error - DBIx::Class::ResultSet::all(): 
No such relationship 'nodes'

If I don't use columns it's prefetch all columns from me.* xc_params.*  nodes.* 
but this tables has the identical named columns (PK, FK) and pager crashes on 
it/

SQL reports some column used more then on time. 
CODE:

SELECT * FROM
(
    SELECT TOP 50 * FROM
    (
       SELECT TOP 50  me.route_id, xc_params.route_id, xc_params.node_id, 
nodes.node_id, nodes.node_name
       FROM vi_route me LEFT JOIN vi_xcparams xc_params 
       ON ( xc_params.route_id = me.route_id ) 
       LEFT JOIN vi_nodes nodes 
       ON ( nodes.node_id = xc_params.node_id ) 
                                                 ORDER BY me.route_id
    ) AS foo
    ORDER BY me.route_id DESC
) AS bar
ORDER BY me.route_id

It there any way to use prefetch with limitted set of columns?

---
dr.eel

_______________________________________________
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/[EMAIL PROTECTED]

Reply via email to