Closed
Description
Symfony version(s) affected
6.4.7
Description
This commit introduced a new schema asset filter that filters anything that isn't the doctrine messenger table. However, the filter function can receive other types than string based on this doctrine code the filter can be string|AbstractAsset
. This can cause a type error in PostgreSQL and potentially other databases.
TypeError: Symfony\Component\Messenger\Bridge\Doctrine\Transport\Connection::Symfony\Component\Messenger\Bridge\Doctrine\Transport\{closure}(): Argument #1 ($tableName) must be of type string, Doctrine\DBAL\Schema\Sequence given
/home/runner/work/project/vendor/symfony/doctrine-messenger/Transport/Connection.php:301
/home/runner/work/project/vendor/doctrine/dbal/src/Schema/AbstractSchemaManager.php:377
/home/runner/work/project/vendor/doctrine/dbal/src/Schema/AbstractSchemaManager.php:193
/home/runner/work/project/vendor/doctrine/dbal/src/Schema/AbstractSchemaManager.php:1648
/home/runner/work/project/vendor/doctrine/dbal/src/Schema/AbstractSchemaManager.php:1663
/home/runner/work/project/vendor/symfony/doctrine-messenger/Transport/Connection.php:538
/home/runner/work/project/vendor/symfony/doctrine-messenger/Transport/Connection.php:302
/home/runner/work/project/vendor/symfony/doctrine-messenger/Transport/PostgreSqlConnection.php:97
/home/runner/work/project/vendor/symfony/doctrine-messenger/Transport/Connection.php:434
/home/runner/work/project/vendor/symfony/doctrine-bridge/SchemaListener/AbstractSchemaListener.php:39
/home/runner/work/project/vendor/symfony/doctrine-messenger/Transport/Connection.php:352
/home/runner/work/project/vendor/symfony/doctrine-messenger/Transport/DoctrineTransport.php:89
/home/runner/work/project/vendor/symfony/doctrine-bridge/SchemaListener/MessengerTransportDoctrineSchemaListener.php:43
/home/runner/work/project/vendor/symfony/doctrine-bridge/ContainerAwareEventManager.php:63
/home/runner/work/project/vendor/doctrine/orm/src/Tools/SchemaTool.php:421
/home/runner/work/project/vendor/doctrine/orm/src/Tools/SchemaTool.php:123
/home/runner/work/project/vendor/doctrine/orm/src/Tools/SchemaTool.php:101
How to reproduce
Have a Symfony doctrine messenger setup on a PostgreSQL database that uses sequences and call the MessengerTransportDoctrineSchemaListener
Possible Solution
Change the typehint to $configuration->setSchemaAssetsFilter(fn (string|AbstractAsset $tableName) => $tableName === $this->configuration['table_name']);
Additional Context
No response