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
)',
- [ [ position => 1 ], [ position => 2 ] ],
+ [
+ [ { sqlt_datatype => 'int', dbic_colname => 'position' }
+ => 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
)',
- [ [ 'tracks.position' => 1 ], [ 'tracks.position' => 2 ] ],
+ [
+ [ { sqlt_datatype => 'int', dbic_colname => 'tracks.position' }
+ => 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(
{},
$crs->as_query,
'(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
+ 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
HAVING newest_cd_year = ?
) me
)',
- [ [ 'newest_cd_year' => '2001' ],],
+ [ [ { dbic_colname => 'newest_cd_year' }
+ => '2001' ] ],
'count with having clause keeps sql as alias',
);