Skip to content

Commit

Permalink
Fix creating wrapped connection twice
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolas-grekas committed Dec 10, 2019
1 parent abac3fd commit c5642bf
Showing 1 changed file with 19 additions and 6 deletions.
25 changes: 19 additions & 6 deletions ConnectionFactory.php
Expand Up @@ -11,6 +11,7 @@
use Doctrine\DBAL\Exception\DriverException;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Types\Type;
use function is_subclass_of;

class ConnectionFactory
{
Expand Down Expand Up @@ -42,22 +43,34 @@ public function createConnection(array $params, Configuration $config = null, Ev
$this->initializeTypes();
}

$connection = DriverManager::getConnection($params, $config, $eventManager);

if (! isset($params['pdo']) && ! isset($params['charset'])) {
$params = $connection->getParams();
$params['charset'] = 'utf8';
$driver = $connection->getDriver();
$wrapperClass = Connection::class;
if (isset($params['wrapperClass'])) {
if (! is_subclass_of($params['wrapperClass'], $wrapperClass)) {
throw DBALException::invalidWrapperClass($params['wrapperClass']);
}

$wrapperClass = $params['wrapperClass'];
unset($params['wrapperClass']);
}

$connection = DriverManager::getConnection($params, $config, $eventManager);
$params = $connection->getParams();
$driver = $connection->getDriver();

if ($driver instanceof AbstractMySQLDriver) {
$params['charset'] = 'utf8mb4';

if (! isset($params['defaultTableOptions']['collate'])) {
$params['defaultTableOptions']['collate'] = 'utf8mb4_unicode_ci';
}
} else {
$params['charset'] = 'utf8';
}

$connection = new $connection($params, $driver, $connection->getConfiguration(), $connection->getEventManager());
$connection = new $wrapperClass($params, $driver, $config, $eventManager);
} else {
$connection = DriverManager::getConnection($params, $config, $eventManager);
}

if (! empty($mappingTypes)) {
Expand Down

0 comments on commit c5642bf

Please sign in to comment.