8 use DBICTest ':DiffSQL';
10 my $schema = DBICTest->init_schema();
12 my $multicol_rs = $schema->resultset('Artist')->search({ artistid => \'1' }, { columns => [qw/name rank/] });
18 columns => [ 'title' ],
26 '+select' => \ 'DISTINCT(foo, bar)',
27 '+as' => [qw/foo bar/],
33 => [qw/title cd_id foo bar/],
36 '+select' => [ 'genreid', $multicol_rs->as_query ],
37 '+as' => [qw/genreid name rank/],
43 (SELECT me.name, me.rank FROM artist me WHERE ( artistid 1 ))
45 => [qw/title cd_id foo bar genreid name rank/],
48 '+select' => { count => 'me.cdid', -as => 'cnt' }, # lack of 'as' infers from '-as'
49 '+columns' => { len => { length => 'me.title' } },
56 (SELECT me.name, me.rank FROM artist me WHERE ( artistid 1 )),
57 COUNT( me.cdid ) AS cnt
59 => [qw/title len cd_id foo bar genreid name rank cnt/],
61 '+select' => \'unaliased randomness',
68 (SELECT me.name, me.rank FROM artist me WHERE ( artistid 1 )),
69 COUNT( me.cdid ) AS cnt,
72 => [qw/title len cd_id foo bar genreid name rank cnt/],
74 '+select' => \'MOAR unaliased randomness',
81 (SELECT me.name, me.rank FROM artist me WHERE ( artistid 1 )),
82 COUNT( me.cdid ) AS cnt,
84 MOAR unaliased randomness
86 => [qw/title len cd_id foo bar genreid name rank cnt/],
89 my $rs = $schema->resultset('CD');
93 my $attrs = shift @chain;
94 my $sql = shift @chain;
95 my $as = shift @chain;
97 $rs = $rs->search ({}, $attrs);
103 "Test $testno of SELECT assembly ok",
107 $rs->_resolved_attrs->{as},
109 "Correct dbic-side aliasing for test $testno",
115 # make sure proper exceptions are thrown on unbalanced use
117 my $rs = $schema->resultset('CD')->search({}, { select => \'count(me.cdid)'});
120 $rs->search({}, { '+select' => 'me.cdid' })->next
121 }, 'Two dark selectors are ok');
124 $rs->search({}, { '+select' => 'me.cdid', '+as' => 'cdid' })->next
125 }, qr/resultset contains an unnamed selector/, 'Unnamed followed by named is not');
128 $rs->search_rs({}, { prefetch => 'tracks' })->next
129 }, qr/resultset contains an unnamed selector/, 'Throw on unaliased selector followed by prefetch');
132 $rs->search_rs({}, { '+select' => 'me.title', '+as' => 'title' })->next
133 }, qr/resultset contains an unnamed selector/, 'Throw on unaliased selector followed by +select/+as');