8 use DBIC::SqlMakerTest;
12 my $schema = DBICTest->init_schema();
14 my $multicol_rs = $schema->resultset('Artist')->search({ artistid => \'1' }, { columns => [qw/name rank/] });
20 columns => [ 'title' ],
28 '+select' => \ 'DISTINCT(foo, bar)',
29 '+as' => [qw/foo bar/],
35 => [qw/title cd_id foo bar/],
38 '+select' => [ 'genreid', $multicol_rs->as_query ],
39 '+as' => [qw/genreid name rank/],
45 (SELECT me.name, me.rank FROM artist me WHERE ( artistid 1 ))
47 => [qw/title cd_id foo bar genreid name rank/],
50 '+select' => { count => 'me.cdid', -as => 'cnt' }, # lack of 'as' infers from '-as'
51 '+columns' => { len => { length => 'me.title' } },
58 (SELECT me.name, me.rank FROM artist me WHERE ( artistid 1 )),
59 COUNT( me.cdid ) AS cnt
61 => [qw/title len cd_id foo bar genreid name rank cnt/],
63 '+select' => \'unaliased randomness',
70 (SELECT me.name, me.rank FROM artist me WHERE ( artistid 1 )),
71 COUNT( me.cdid ) AS cnt,
74 => [qw/title len cd_id foo bar genreid name rank cnt/],
76 '+select' => \'MOAR unaliased randomness',
83 (SELECT me.name, me.rank FROM artist me WHERE ( artistid 1 )),
84 COUNT( me.cdid ) AS cnt,
86 MOAR unaliased randomness
88 => [qw/title len cd_id foo bar genreid name rank cnt/],
91 my $rs = $schema->resultset('CD');
95 my $attrs = shift @chain;
96 my $sql = shift @chain;
97 my $as = shift @chain;
99 $rs = $rs->search ({}, $attrs);
105 "Test $testno of SELECT assembly ok",
109 $rs->_resolved_attrs->{as},
111 "Correct dbic-side aliasing for test $testno",
117 # make sure proper exceptions are thrown on unbalanced use
119 my $rs = $schema->resultset('CD')->search({}, { select => \'count(me.cdid)'});
122 $rs->search({}, { '+select' => 'me.cdid' })->next
123 }, 'Two dark selectors are ok');
126 $rs->search({}, { '+select' => 'me.cdid', '+as' => 'cdid' })->next
127 }, qr/resultset contains an unnamed selector/, 'Unnamed followed by named is not');
130 $rs->search_rs({}, { prefetch => 'tracks' })->next
131 }, qr/resultset contains an unnamed selector/, 'Throw on unaliased selector followed by prefetch');
134 $rs->search_rs({}, { '+select' => 'me.title', '+as' => 'title' })->next
135 }, qr/resultset contains an unnamed selector/, 'Throw on unaliased selector followed by +select/+as');