Skip to content

Commit c3d938f

Browse files
daniel danekdg
authored andcommitted
OciDriver: in case of applyLimit with different offset returns always the same result
1 parent 96d9072 commit c3d938f

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

src/Database/Drivers/OciDriver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ public function applyLimit(string &$sql, ?int $limit, ?int $offset): void
8989
} elseif ($offset) {
9090
// see http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html
9191
$sql = 'SELECT * FROM (SELECT t.*, ROWNUM AS "__rnum" FROM (' . $sql . ') t '
92-
. ($limit !== null ? 'WHERE ROWNUM <= ' . ($offset + $limit) : '')
93-
. ') WHERE "__rnum" > ' . $offset;
92+
. ') WHERE "__rnum" > ' . $offset
93+
. ($limit !== null ? ' AND "__rnum" <= ' . ($offset + $limit) : '');
9494

9595
} elseif ($limit !== null) {
9696
$sql = 'SELECT * FROM (' . $sql . ') WHERE ROWNUM <= ' . $limit;

tests/Database/Drivers/OciDriver.applyLimit.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ $driver = new Nette\Database\Drivers\OciDriver;
1111

1212
$query = 'SELECT 1 FROM t';
1313
$driver->applyLimit($query, 10, 20);
14-
Assert::same('SELECT * FROM (SELECT t.*, ROWNUM AS "__rnum" FROM (SELECT 1 FROM t) t WHERE ROWNUM <= 30) WHERE "__rnum" > 20', $query);
14+
Assert::same('SELECT * FROM (SELECT t.*, ROWNUM AS "__rnum" FROM (SELECT 1 FROM t) t ) WHERE "__rnum" > 20 AND "__rnum" <= 30', $query);
1515

1616
$query = 'SELECT 1 FROM t';
1717
$driver->applyLimit($query, 0, 20);
18-
Assert::same('SELECT * FROM (SELECT t.*, ROWNUM AS "__rnum" FROM (SELECT 1 FROM t) t WHERE ROWNUM <= 20) WHERE "__rnum" > 20', $query);
18+
Assert::same('SELECT * FROM (SELECT t.*, ROWNUM AS "__rnum" FROM (SELECT 1 FROM t) t ) WHERE "__rnum" > 20 AND "__rnum" <= 20', $query);
1919

2020
$query = 'SELECT 1 FROM t';
2121
$driver->applyLimit($query, 10, 0);

0 commit comments

Comments
 (0)