[TASK] Implement PDO DriverResult as `doctrine/dbal driver middleware`
TYPO3 v12 upgraded to Doctrine DBAL 3.2 with #96287 and cloned a couple of doctrine PDO related classes to provide the mandatory `resource to string` mapping for PDO drivers. At that point this was the only way to mitigate the fact, that `final` has been added to these classes with Doctrine DBAL 3.1 [1]. The doctrine team introduced the new driver middleware concept with Doctrine DBAL 3.0.0 [2] and allows the decorator pattern to be used for Driver, Driver/Connection, Driver/Statement and Driver/Result. General support for connection driver middlewares (#100089) and global driver middlewares (#102496) has been added meanwhile to TYPO3. Additionally, sortable configuration for middlewares has been improved with #102586. This change migrates towards the driver middleware pattern and reduces the code required to be maintained and check on doctrine upgrades because cloned and changed classes can be removed and replaced by minimal decorator implementations. `\TYPO3\CMS\Core\Database\Middleware\UsableForConnectionInterface` has been added with #102587 which helps to limit the driver mapping to supported `pdo_*` driver only. The superfluous internal classes are removed as non-breaking following the TYPO3 core policies. [1] https://github.com/doctrine/dbal/blob/3.7.x/UPGRADE.md#bc-break-changes-in-driver-classes [2] https://github.com/doctrine/dbal/pull/4157 Resolves: #102588 Related: #102587 Related: #102586 Related: #102496 Related: #100089 Related: #96287 Releases: main Change-Id: Ia17d104129a1199fa318baf0b66be29445f0f72b Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82071 Tested-by:core-ci <typo3@b13.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Benni Mack <benni@typo3.org>
Showing
- typo3/sysext/core/Classes/Database/ConnectionPool.php 3 additions, 35 deletionstypo3/sysext/core/Classes/Database/ConnectionPool.php
- typo3/sysext/core/Classes/Database/Driver/CustomPdoResultDriverDecorator.php 33 additions, 0 deletions...lasses/Database/Driver/CustomPdoResultDriverDecorator.php
- typo3/sysext/core/Classes/Database/Driver/CustomPlatformDriverDecorator.php 1 addition, 1 deletion...Classes/Database/Driver/CustomPlatformDriverDecorator.php
- typo3/sysext/core/Classes/Database/Driver/DriverConnection.php 6 additions, 75 deletions.../sysext/core/Classes/Database/Driver/DriverConnection.php
- typo3/sysext/core/Classes/Database/Driver/DriverResult.php 12 additions, 75 deletionstypo3/sysext/core/Classes/Database/Driver/DriverResult.php
- typo3/sysext/core/Classes/Database/Driver/DriverStatement.php 4 additions, 103 deletions...3/sysext/core/Classes/Database/Driver/DriverStatement.php
- typo3/sysext/core/Classes/Database/Driver/PDOMySql/Driver.php 0 additions, 82 deletions...3/sysext/core/Classes/Database/Driver/PDOMySql/Driver.php
- typo3/sysext/core/Classes/Database/Driver/PDOPgSql/Driver.php 0 additions, 113 deletions...3/sysext/core/Classes/Database/Driver/PDOPgSql/Driver.php
- typo3/sysext/core/Classes/Database/Driver/PDOSqlite/Driver.php 0 additions, 83 deletions.../sysext/core/Classes/Database/Driver/PDOSqlite/Driver.php
- typo3/sysext/core/Classes/Database/DriverMiddlewareService.php 1 addition, 2 deletions.../sysext/core/Classes/Database/DriverMiddlewareService.php
- typo3/sysext/core/Classes/Database/Middleware/CustomPdoDriverResultMiddleware.php 55 additions, 0 deletions...s/Database/Middleware/CustomPdoDriverResultMiddleware.php
- typo3/sysext/core/Classes/Database/Middleware/CustomPlatformDriverMiddleware.php 5 additions, 4 deletions...es/Database/Middleware/CustomPlatformDriverMiddleware.php
- typo3/sysext/core/Classes/Database/Middleware/UsableForConnectionInterface.php 12 additions, 0 deletions...sses/Database/Middleware/UsableForConnectionInterface.php
- typo3/sysext/core/Configuration/DefaultConfiguration.php 9 additions, 0 deletionstypo3/sysext/core/Configuration/DefaultConfiguration.php
- typo3/sysext/core/Documentation/Changelog/13.0/Feature-102496-IntroduceGlobalDoctrineDBALDriverMiddlewares.rst 8 additions, 0 deletions...e-102496-IntroduceGlobalDoctrineDBALDriverMiddlewares.rst
- typo3/sysext/core/Documentation/Changelog/13.0/Feature-102586-IntroduceSortableDoctrineDBALMiddlewareRegistration.rst 9 additions, 7 deletions...6-IntroduceSortableDoctrineDBALMiddlewareRegistration.rst
- typo3/sysext/core/Documentation/Changelog/13.0/Feature-102587-IntroduceDriverMiddlewareInterfaceUsableForConnectionInterface.rst 11 additions, 0 deletions...DriverMiddlewareInterfaceUsableForConnectionInterface.rst
- typo3/sysext/core/Tests/Functional/Database/Middleware/CustomPdoDriverResultMiddlewareTest.php 110 additions, 0 deletions...tabase/Middleware/CustomPdoDriverResultMiddlewareTest.php
- typo3/sysext/core/Tests/Functional/Database/Middleware/CustomPlatformDriverMiddlewareTest.php 66 additions, 0 deletions...atabase/Middleware/CustomPlatformDriverMiddlewareTest.php
- typo3/sysext/install/Classes/SystemEnvironment/DatabaseCheck.php 18 additions, 15 deletions...ysext/install/Classes/SystemEnvironment/DatabaseCheck.php
Please register or sign in to comment