Allow NULL as well for limit, not integer only

Signed-off-by: Joas Schilling <coding@schilljs.com>
pull/29714/head
Joas Schilling 2021-11-02 23:42:57 +07:00
parent 788a1fcca4
commit 5bb49feef8
No known key found for this signature in database
GPG Key ID: 7076EA9751AACDDA
4 changed files with 20 additions and 11 deletions

@ -189,15 +189,20 @@ class Connection extends \Doctrine\DBAL\Connection {
* Prepares an SQL statement.
*
* @param string $statement The SQL statement to prepare.
* @param int $limit
* @param int $offset
* @param int|null $limit
* @param int|null $offset
*
* @return Statement The prepared statement.
* @throws Exception
*/
public function prepare($statement, $limit = null, $offset = null): Statement {
if ($limit === -1) {
if ($limit === -1 || $limit === null) {
$limit = null;
} else {
$limit = (int) $limit;
}
if ($offset !== null) {
$offset = (int) $offset;
}
if (!is_null($limit)) {
$platform = $this->getDatabasePlatform();

@ -450,12 +450,12 @@ class QueryBuilder implements IQueryBuilder {
/**
* Sets the position of the first result to retrieve (the "offset").
*
* @param integer $firstResult The first result to return.
* @param int $firstResult The first result to return.
*
* @return $this This QueryBuilder instance.
*/
public function setFirstResult($firstResult) {
$this->queryBuilder->setFirstResult($firstResult);
$this->queryBuilder->setFirstResult((int) $firstResult);
return $this;
}
@ -477,12 +477,16 @@ class QueryBuilder implements IQueryBuilder {
* of the databases will just return an empty result set, Oracle will return
* all entries.
*
* @param integer $maxResults The maximum number of results to retrieve.
* @param int|null $maxResults The maximum number of results to retrieve.
*
* @return $this This QueryBuilder instance.
*/
public function setMaxResults($maxResults) {
$this->queryBuilder->setMaxResults($maxResults);
if ($maxResults === null) {
$this->queryBuilder->setMaxResults($maxResults);
} else {
$this->queryBuilder->setMaxResults((int) $maxResults);
}
return $this;
}

@ -280,7 +280,7 @@ interface IQueryBuilder {
/**
* Sets the position of the first result to retrieve (the "offset").
*
* @param integer $firstResult The first result to return.
* @param int $firstResult The first result to return.
*
* @return $this This QueryBuilder instance.
* @since 8.2.0
@ -299,7 +299,7 @@ interface IQueryBuilder {
/**
* Sets the maximum number of results to retrieve (the "limit").
*
* @param integer $maxResults The maximum number of results to retrieve.
* @param int|null $maxResults The maximum number of results to retrieve.
*
* @return $this This QueryBuilder instance.
* @since 8.2.0

@ -86,8 +86,8 @@ interface IDBConnection {
/**
* Used to abstract the ownCloud database access away
* @param string $sql the sql query with ? placeholder for params
* @param int $limit the maximum number of rows
* @param int $offset from which row we want to start
* @param int|null $limit the maximum number of rows
* @param int|null $offset from which row we want to start
* @return IPreparedStatement The prepared statement.
* @since 6.0.0
* @throws Exception since 21.0.0