9 use DBIC::SqlMakerTest;
11 my $schema = DBICTest->init_schema();
13 my $multicol_rs = $schema->resultset('Artist')->search({ artistid => \'1' }, { columns => [qw/name rank/] });
19 columns => [ 'title' ],
27 '+select' => \ 'DISTINCT(foo, bar)',
28 '+as' => [qw/foo bar/],
34 => [qw/title cd_id foo bar/],
37 '+select' => [ 'genreid', $multicol_rs->as_query ],
38 '+as' => [qw/genreid name rank/],
44 (SELECT me.name, me.rank FROM artist me WHERE ( artistid 1 ))
46 => [qw/title cd_id foo bar genreid name rank/],
49 '+select' => { count => 'me.cdid', -as => 'cnt' }, # lack of 'as' infers from '-as'
50 '+columns' => { len => { length => 'me.title' } },
57 (SELECT me.name, me.rank FROM artist me WHERE ( artistid 1 )),
58 COUNT( me.cdid ) AS cnt
60 => [qw/title len cd_id foo bar genreid name rank cnt/],
62 '+select' => \'unaliased randomness',
69 (SELECT me.name, me.rank FROM artist me WHERE ( artistid 1 )),
70 COUNT( me.cdid ) AS cnt,
73 => [qw/title len cd_id foo bar genreid name rank cnt/],
75 '+select' => \'MOAR unaliased randomness',
82 (SELECT me.name, me.rank FROM artist me WHERE ( artistid 1 )),
83 COUNT( me.cdid ) AS cnt,
85 MOAR unaliased randomness
87 => [qw/title len cd_id foo bar genreid name rank cnt/],
90 my $rs = $schema->resultset('CD');
94 my $attrs = shift @chain;
95 my $sql = shift @chain;
96 my $as = shift @chain;
98 $rs = $rs->search ({}, $attrs);
104 "Test $testno of SELECT assembly ok",
108 $rs->_resolved_attrs->{as},
110 "Correct dbic-side aliasing for test $testno",
116 # make sure proper exceptions are thrown on unbalanced use
118 my $rs = $schema->resultset('CD')->search({}, { select => \'count(me.cdid)'});
121 $rs->search({}, { '+select' => 'me.cdid' })->next
122 }, 'Two dark selectors are ok');
125 $rs->search({}, { '+select' => 'me.cdid', '+as' => 'cdid' })->next
126 }, qr/resultset contains an unnamed selector/, 'Unnamed followed by named is not');
129 $rs->search_rs({}, { prefetch => 'tracks' })->next
130 }, qr/resultset contains an unnamed selector/, 'Throw on unaliased selector followed by prefetch');
133 $rs->search_rs({}, { '+select' => 'me.title', '+as' => 'title' })->next
134 }, qr/resultset contains an unnamed selector/, 'Throw on unaliased selector followed by +select/+as');