Bug #92376
closedDoctrine 2.11.x breaks prepared parameters
Added by Tizian Schmidlin about 4 years ago. Updated almost 4 years ago.
100%
Description
Hello there,
we ran into an issue with Doctrine DBAL in the last two days.
Since 2.11 of doctrine/dbal
prepared statements lead to issues regarding prepared statements where mysql simply isn't able to apply the parameters for some reason.
Until 2.10.4 it works fine.
Reproducible with powermail and an internal extension, both using Extbase with queries like these:
$query->equals('field.relation.someotherrelation', 'my param')
It all seems to be the same problem:
- Generation of empty where statements
For the moment we fixated the version of dbal to 2.10.*
, I guess this should be done in the core by default, too.
Reproducible in 10.4 and 9.5
Files
ArgumentCountError.png (186 KB) ArgumentCountError.png | Christopher Schnell, 2020-09-23 11:12 |
Updated by Georg Ringer about 4 years ago
- Status changed from New to Needs Feedback
possible fixed with https://github.com/doctrine/dbal/issues/4282.
maybe you wanna check that out? change https://github.com/doctrine/dbal/pull/4286/files
Updated by Tizian Schmidlin about 4 years ago
This definitely looks like it would be solved by 2.11.1 but as long as it is not released, I'm not too keen to try it in removing the restriction in the project composer.json.
We'll test it today and come back at you.
Best Regards
Updated by Christopher Schnell about 4 years ago
- File ArgumentCountError.png ArgumentCountError.png added
We tried
"doctrine/dbal": "2.11.x-dev#0325f424ae9d85d5085b6ebe13bae13c84bea9cb", (includes the mentioned pull request)
and
"doctrine/dbal": "2.11.x-dev",
Both versions now result in an
ArgumentCountError
Too few arguments to function Doctrine\DBAL\Query\Expression\CompositeExpression::with(), 0 passed in /var/www/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryBuilder.php on line 837 and exactly 1 expected
I have added a screenshot of the first part of the stack trace.
Updated by Ayke Halder about 4 years ago
I can confirm this for:
- TYPO3-Version: 9.5.21
- Webserver: Apache/2.4.38 (Debian)
- PHP-Version: 7.3.20-1+0~20200710.65+debian10~1.gbpc9cbeb
- Datenbank (Default): MySQL 5.5.5-10.2.32-MariaDB-1:10.2.32+maria~bionic-log
- Application context: Development
- Composer-Mode: active
- Operating system: Linux 5.7.0-0.bpo.2-amd64
- Extension in stack trace: apache-solr-for-typo3/solr 9.0.2
Steps to reproduce¶
composer update
- Updating doctrine/dbal (2.10.4 => 2.11.1)
Workaround¶
- Downgrading doctrine/dbal (2.11.1 => 2.10.4)
Stack trace¶
(1/1) ArgumentCountError¶
Too few arguments to function Doctrine\DBAL\Query\Expression\CompositeExpression::with(), 0 passed in /var/www/html/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryBuilder.php on line 837 and exactly 1 expected
in /var/www/html/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/Expression/CompositeExpression.php line 119
*
* @param self|string $part
* @param self|string ...$parts
*/
public function with($part, ...$parts): self
{
$that = clone $this;
$that->parts[] = $part;
at Doctrine\DBAL\Query\Expression\CompositeExpression->with()
in /var/www/html/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryBuilder.php line 837
$args = array_filter($args); // https://github.com/doctrine/dbal/issues/4282
$where = $this->getQueryPart('where');
if ($where instanceof CompositeExpression && $where->getType() === CompositeExpression::TYPE_AND) {
$where = $where->with(...$args);
} else {
array_unshift($args, $where);
$where = CompositeExpression::and(...$args);
}
at Doctrine\DBAL\Query\QueryBuilder->andWhere(object(Doctrine\DBAL\Query\Expression\CompositeExpression))
in /var/www/html/public/typo3/sysext/core/Classes/Database/Query/QueryBuilder.php line 653
* @see where()
*/
public function andWhere(...$where): QueryBuilder
{
$this->concreteQueryBuilder->andWhere(...$where);
return $this;
}
at TYPO3\CMS\Core\Database\Query\QueryBuilder->andWhere('')
in /var/www/html/public/typo3/sysext/frontend/Classes/Page/PageRepository.php line 355
);
$originalWhereGroupAccess = '';
if (!$disableGroupAccessCheck) {
$queryBuilder->andWhere(QueryHelper::stripLogicalOperatorPrefix($this->where_groupAccess));
} else {
$originalWhereGroupAccess = $this->where_groupAccess;
$this->where_groupAccess = '';
}
at TYPO3\CMS\Frontend\Page\PageRepository->getPage(10213)
in /var/www/html/public/typo3conf/ext/solr/Classes/Access/Rootline.php line 162
}
}
// current page
$currentPageRecord = $pageSelector->getPage($pageId);
if ($currentPageRecord['fe_group']) {
$accessRootline->push(GeneralUtility::makeInstance(
RootlineElement::class,
/** @scrutinizer ignore-type */ $currentPageRecord['uid'] . RootlineElement::PAGE_ID_GROUP_DELI
Updated by Anonymous about 4 years ago
Reproducible with 9.5.22 as well.
The query I found is like mentioned above in EXT:powermail v7.4.0 FieldRepository.
$query = $this->createQuery();
$query->getQuerySettings()->setRespectStoragePage(false);
$query->getQuerySettings()->setRespectSysLanguage(false);
$query->matching(
$query->logicalAnd(
[
$query->equals('marker', $marker),
$query->equals('pages.forms.uid', $formUid)
]
)
);
$query->setLimit(1);
$result = $query->execute()->getFirst();
Downgrading doctrine/dbal to "~2.10.0" fixes it.
Updated by Markus Klein about 4 years ago
- Has duplicate Bug #92515: Limit DBAL of Core 9 and 10 to 2.10 added
Updated by Markus Klein about 4 years ago
- Status changed from Needs Feedback to Accepted
- Assignee set to Markus Klein
- TYPO3 Version changed from 10 to 9
Updated by Gerrit Code Review about 4 years ago
- Status changed from Accepted to Under Review
Patch set 1 for branch 10.4 of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/66081
Updated by Gerrit Code Review about 4 years ago
Patch set 2 for branch 10.4 of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/66081
Updated by Gerrit Code Review about 4 years ago
Patch set 3 for branch 10.4 of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/66081
Updated by Gerrit Code Review about 4 years ago
Patch set 4 for branch 10.4 of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/66081
Updated by varioous OG about 4 years ago
Can also confirm that on 9.5.22.
Downgrading works.
"doctrine/dbal": "2.10.4"
Updated by Gerrit Code Review about 4 years ago
Patch set 5 for branch 10.4 of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/66081
Updated by Gerrit Code Review about 4 years ago
Patch set 6 for branch 10.4 of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/66081
Updated by Gerrit Code Review about 4 years ago
Patch set 1 for branch 9.5 of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/66253
Updated by Markus Klein about 4 years ago
- Status changed from Under Review to Resolved
- % Done changed from 0 to 100
Applied in changeset a7fc32f6bc56d6b775c2348b22480800c1db977b.
Updated by Oliver Hader about 4 years ago
- Related to Bug #92865: 10.4.10 breaks compatibility with doctrine/dbal 2.12 added
Updated by Benni Mack almost 4 years ago
- Status changed from Resolved to Closed