diff --git a/src/Query/MysqlQueryBuilder.php b/src/Query/MysqlQueryBuilder.php index ef106a7a..5dc69a78 100644 --- a/src/Query/MysqlQueryBuilder.php +++ b/src/Query/MysqlQueryBuilder.php @@ -210,9 +210,18 @@ public function findInSet($value, $set) * * @since 2.0.0 * @throws \RuntimeException + * + * @todo Remove this method when the database version requirements have been raised + * to >= 8.0.0 for MySQL and >= 10.2.0 for MariaDB so the ROW_NUMBER() window + * function can be used in any case. */ public function selectRowNumber($orderBy, $orderColumnAlias) { + // Use parent method with ROW_NUMBER() window function on MariaDB 11.0.0 and newer. + if ($this->db->isMariaDb() && version_compare($this->db->getVersion(), '11.0.0', '>=')) { + return parent::selectRowNumber($orderBy, $orderColumnAlias); + } + $this->validateRowNumber($orderBy, $orderColumnAlias); return $this->select("(SELECT @rownum := @rownum + 1 FROM (SELECT @rownum := 0) AS r) AS $orderColumnAlias");