use DBICTest;
use DBIC::SqlMakerTest;
use DBIC::DebugObj;
+use DBIx::Class::SQLMaker::LimitDialects;
+
+my ($ROWS, $OFFSET) = (
+ DBIx::Class::SQLMaker::LimitDialects->__rows_bindtype,
+ DBIx::Class::SQLMaker::LimitDialects->__offset_bindtype,
+);
my $schema = DBICTest->init_schema();
JOIN track tracks ON tracks.cd = me.cdid
JOIN cd disc ON disc.cdid = tracks.cd
WHERE ( ( position = ? OR position = ? ) )
- LIMIT 3 OFFSET 8
+ LIMIT ? OFFSET ?
) tracks
)',
[
=> 1 ],
[ { sqlt_datatype => 'int', dbic_colname => 'position' }
=> 2 ],
+ [$ROWS => 3],
+ [$OFFSET => 8],
],
'count_rs db-side limit applied',
);
JOIN artist artist ON artist.artistid = cds.artist
WHERE tracks.position = ? OR tracks.position = ?
GROUP BY cds.cdid
- LIMIT 3 OFFSET 4
+ LIMIT ? OFFSET ?
) cds
)',
[
=> 1 ],
[ { sqlt_datatype => 'int', dbic_colname => 'tracks.position' }
=> 2 ],
+ [ $ROWS => 3],
+ [$OFFSET => 4],
],
'count_rs db-side limit applied',
);
}
-# count with a having clause
+# count with a having clause
{
my $rs = $schema->resultset("Artist")->search(
{},
'(SELECT COUNT( * )
FROM (
SELECT me.artistid, MAX( cds.year ) AS newest_cd_year,
- FROM artist me
- LEFT JOIN cd cds ON cds.artist = me.artistid
- GROUP BY me.artistid
+ FROM artist me
+ LEFT JOIN cd cds ON cds.artist = me.artistid
+ GROUP BY me.artistid
HAVING newest_cd_year = ?
) me
)',