$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' },
                        select  => [
                                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 
                        xc_params.pt_beg xc_params.pt_end 
                        xc_params.sh_beg xc_params.sh_end 
                        xc_params.dr_beg xc_params.dr_end 
                        nodes.node_id nodes.node_name nodes.node_type_id 
                / 
            ],

                        as  => [
                                qw/
                                        route_id route_beg route_end err_code 
comment net_id 
                        xc_params.node_rank 
                        xc_params.ch_beg xc_params.ch_end 
                        xc_params.pt_beg xc_params.pt_end 
                        xc_params.sh_beg xc_params.sh_end 
                        xc_params.dr_beg xc_params.dr_end 
                        nodes.node_id nodes.node_name nodes.node_type_id 
                / 
                        ],
                        
                        #TODO Постраничный вывод для спика маршрутов участка, 
переделать запрос с соединением разобрать вручную
                        order_by => $order_by,
                        page     => $page,       # page to return (defaults to 
1)
                        rows     => $rows,       # number of results per page,
                        cache => 1
                }
        );


WHY DBIX PRODUCES THAT!! ...(


SELECT * FROM
(
    SELECT TOP 5 * FROM
    (
        SELECT TOP 5  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, 
xc_params.pt_beg, xc_params.pt_end, xc_params.sh_beg, xc_params.sh_end, 
xc_params.dr_beg, xc_params.dr_end, nodes.node_id, nodes.node_name, 
nodes.node_type_id,



############################# ADDED AUTOMATICALLY! Not me
 xc_params.node_id, xc_params.route_id, xc_params.node_rank, xc_params.ch_beg, 
xc_params.ch_end, xc_params.pt_beg, xc_params.pt_end, xc_params.sh_beg, 
xc_params.sh_end, xc_params.dr_beg, xc_params.dr_end, xc_params.net_id, 
nodes.net_id, nodes.node_id, nodes.node_name, nodes.node_type_id 
#############################

FROM vi_route me LEFT JOIN vi_xcparams xc_params ON ( xc_params.net_id = 
me.net_id AND xc_params.route_id = me.route_id ) LEFT JOIN vi_nodes nodes ON ( 
nodes.net_id = xc_params.net_id AND nodes.node_id = xc_params.node_id ) WHERE ( 
me.net_id = ? AND me.route_beg = ? AND me.route_end = ? ) ORDER BY route_beg 
ASC, xc_params.route_id ASC, xc_params.net_id ASC
    ) AS foo
    ORDER BY route_beg DESC, xc_params.route_id DESC, xc_params.net_id DESC
) AS bar
ORDER BY route_beg ASC, xc_params.route_id ASC, xc_params.net_id ASC

prefetch mechanism IS NOT kicked in "... if you set up the select attr yourself 
with an as of 'relname.colname' ..."

Any suggestions?

paged output can't correctly working with prefetch it still uses full list of 
columns even I set 'select' 'as'
(((

--
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