From b7d84b90ef80e242c95c0d99c1f152c44b89ca6b Mon Sep 17 00:00:00 2001 From: aldria Date: Fri, 27 May 2016 03:48:06 +0200 Subject: [PATCH] Correct limit and offset for Firebird Driver (#221) SELECT [FIRST ()] [SKIP ()] FROM ... --- src/Dibi/Drivers/FirebirdDriver.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Dibi/Drivers/FirebirdDriver.php b/src/Dibi/Drivers/FirebirdDriver.php index 3ec05c0e..a771da95 100644 --- a/src/Dibi/Drivers/FirebirdDriver.php +++ b/src/Dibi/Drivers/FirebirdDriver.php @@ -333,9 +333,9 @@ class FirebirdDriver implements Dibi\Driver, Dibi\ResultDriver, Dibi\Reflector */ public function applyLimit(& $sql, $limit, $offset) { - if ($limit >= 0 && $offset > 0) { - // see http://scott.yang.id.au/2004/01/limit-in-select-statements-in-firebird/ - $sql = 'SELECT FIRST ' . (int) $limit . ($offset > 0 ? ' SKIP ' . (int) $offset : '') . ' * FROM (' . $sql . ')'; + if ($limit > 0 || $offset > 0) { + // http://www.firebirdsql.org/refdocs/langrefupd20-select.html + $sql = 'SELECT ' . ($limit > 0 ? 'FIRST ' . (int) $limit : '') . ($offset > 0 ? ' SKIP ' . (int) $offset : '') . ' * FROM (' . $sql . ')'; } }