From 3c91f5447a049c60bd65a1ac0fd03fa230c19e43 Mon Sep 17 00:00:00 2001 From: Susanne Moog <susanne.moog@typo3.com> Date: Fri, 11 Aug 2017 11:27:51 +0200 Subject: [PATCH] [BUGFIX] Drop sorting in COUNT() query in list module The list module throws an exception on mssql as there is a COUNT(*) query done with an ORDER BY sorting. Sorting the count is pretty useless and has been removed. Change-Id: I8d94da2dc3dfecb7c20308180e9916b16b152b01 Resolves: #82084 Releases: master, 8.7 Reviewed-on: https://review.typo3.org/53677 Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl> Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> Tested-by: TYPO3com <no-reply@typo3.com> Reviewed-by: Jan Helke <typo3@helke.de> Tested-by: Jan Helke <typo3@helke.de> Tested-by: Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by: Susanne Moog <susanne.moog@typo3.org> Tested-by: Susanne Moog <susanne.moog@typo3.org> --- .../RecordList/AbstractDatabaseRecordList.php | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/typo3/sysext/recordlist/Classes/RecordList/AbstractDatabaseRecordList.php b/typo3/sysext/recordlist/Classes/RecordList/AbstractDatabaseRecordList.php index 2436281e9dbd..c5a74c1001bd 100644 --- a/typo3/sysext/recordlist/Classes/RecordList/AbstractDatabaseRecordList.php +++ b/typo3/sysext/recordlist/Classes/RecordList/AbstractDatabaseRecordList.php @@ -703,6 +703,7 @@ class AbstractDatabaseRecordList extends AbstractRecordList * @param string[] $fieldList List of fields to select from the table * @param string[] $additionalConstraints Additional part for where clause * @param QueryBuilder $queryBuilder + * @paran bool $addSorting * @return QueryBuilder */ protected function prepareQueryBuilder( @@ -710,7 +711,8 @@ class AbstractDatabaseRecordList extends AbstractRecordList int $pageId, array $fieldList = ['*'], array $additionalConstraints = [], - QueryBuilder $queryBuilder + QueryBuilder $queryBuilder, + bool $addSorting = true ): QueryBuilder { $parameters = [ 'table' => $table, @@ -725,13 +727,15 @@ class AbstractDatabaseRecordList extends AbstractRecordList $queryBuilder->setMaxResults($this->iLimit); } - if ($this->sortField && in_array($this->sortField, $this->makeFieldList($table, 1))) { - $queryBuilder->orderBy($this->sortField, $this->sortRev ? 'DESC' : 'ASC'); - } else { - $orderBy = $GLOBALS['TCA'][$table]['ctrl']['sortby'] ?: $GLOBALS['TCA'][$table]['ctrl']['default_sortby']; - $orderBys = QueryHelper::parseOrderBy((string)$orderBy); - foreach ($orderBys as $orderBy) { - $queryBuilder->orderBy($orderBy[0], $orderBy[1]); + if ($addSorting) { + if ($this->sortField && in_array($this->sortField, $this->makeFieldList($table, 1))) { + $queryBuilder->orderBy($this->sortField, $this->sortRev ? 'DESC' : 'ASC'); + } else { + $orderBy = $GLOBALS['TCA'][$table]['ctrl']['sortby'] ?: $GLOBALS['TCA'][$table]['ctrl']['default_sortby']; + $orderBys = QueryHelper::parseOrderBy((string)$orderBy); + foreach ($orderBys as $orderBy) { + $queryBuilder->orderBy($orderBy[0], $orderBy[1]); + } } } @@ -835,7 +839,7 @@ class AbstractDatabaseRecordList extends AbstractRecordList $queryBuilder->andWhere(...$constraints); } - $queryBuilder = $this->prepareQueryBuilder($table, $pageId, ['*'], $constraints, $queryBuilder); + $queryBuilder = $this->prepareQueryBuilder($table, $pageId, ['*'], $constraints, $queryBuilder, false); $this->totalItems = (int)$queryBuilder->count('*') ->execute() -- GitLab