diff --git a/.travis.yml b/.travis.yml
index 9063c0de25..4dcfc4e5dd 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -132,6 +132,9 @@ jobs:
- stage: Test
php: 7.4
env: DB=mysqli.docker IMAGE=mysql:8.0
+ - stage: Test
+ php: 7.4
+ env: DB=mysqli-tls.docker IMAGE=mysql:8.0 TLS=yes
- stage: Test
php: 7.4
env: DB=mariadb.docker IMAGE=mariadb:10.3
diff --git a/UPGRADE.md b/UPGRADE.md
index 32f9cdddae..db0ca34d5c 100644
--- a/UPGRADE.md
+++ b/UPGRADE.md
@@ -343,6 +343,10 @@ Please use other database client applications for import, e.g.:
# Upgrade to 2.11
+## Deprecated `Synchronizer` package
+
+The `Doctrine\DBAL\Schema\Synchronizer\SchemaSynchronizer` interface and all its implementations are deprecated.
+
## Deprecated usage of wrapper-level components as implementations of driver-level interfaces
The usage of the wrapper `Connection` and `Statement` classes as implementations of the `Driver\Connection` and `Driver\Statement` interfaces is deprecated.
diff --git a/ci/appveyor/mssql.sql2008r2sp2.sqlsrv.appveyor.xml b/ci/appveyor/mssql.sql2008r2sp2.sqlsrv.appveyor.xml
index 9c4e336a34..c868af036b 100644
--- a/ci/appveyor/mssql.sql2008r2sp2.sqlsrv.appveyor.xml
+++ b/ci/appveyor/mssql.sql2008r2sp2.sqlsrv.appveyor.xml
@@ -28,11 +28,4 @@
../../src
-
-
-
- performance
- locking_functional
-
-
diff --git a/ci/appveyor/mssql.sql2012sp1.sqlsrv.appveyor.xml b/ci/appveyor/mssql.sql2012sp1.sqlsrv.appveyor.xml
index d0f476fb02..9ee83bf764 100644
--- a/ci/appveyor/mssql.sql2012sp1.sqlsrv.appveyor.xml
+++ b/ci/appveyor/mssql.sql2012sp1.sqlsrv.appveyor.xml
@@ -28,11 +28,4 @@
../../src
-
-
-
- performance
- locking_functional
-
-
diff --git a/ci/appveyor/mssql.sql2017.pdo_sqlsrv.appveyor.xml b/ci/appveyor/mssql.sql2017.pdo_sqlsrv.appveyor.xml
index c5a2f6d341..994c24d26c 100644
--- a/ci/appveyor/mssql.sql2017.pdo_sqlsrv.appveyor.xml
+++ b/ci/appveyor/mssql.sql2017.pdo_sqlsrv.appveyor.xml
@@ -28,11 +28,4 @@
../../src
-
-
-
- performance
- locking_functional
-
-
diff --git a/ci/appveyor/mssql.sql2017.sqlsrv.appveyor.xml b/ci/appveyor/mssql.sql2017.sqlsrv.appveyor.xml
index 515a8fe133..2442b10176 100644
--- a/ci/appveyor/mssql.sql2017.sqlsrv.appveyor.xml
+++ b/ci/appveyor/mssql.sql2017.sqlsrv.appveyor.xml
@@ -28,11 +28,4 @@
../../src
-
-
-
- performance
- locking_functional
-
-
diff --git a/ci/travis/docker-run-mysql-or-mariadb.sh b/ci/travis/docker-run-mysql-or-mariadb.sh
index a78ce4adb6..de0e53b9fc 100644
--- a/ci/travis/docker-run-mysql-or-mariadb.sh
+++ b/ci/travis/docker-run-mysql-or-mariadb.sh
@@ -40,3 +40,11 @@ while true; do
;;
esac
done
+
+if [[ "$TLS" == "yes" ]]
+then
+ for file in "ca.pem" "client-cert.pem" "client-key.pem"
+ do
+ docker cp "rdbms:/var/lib/mysql/$file" .
+ done
+fi
diff --git a/ci/travis/ibm_db2.travis.xml b/ci/travis/ibm_db2.travis.xml
index a7664b5413..a27065e2fc 100644
--- a/ci/travis/ibm_db2.travis.xml
+++ b/ci/travis/ibm_db2.travis.xml
@@ -28,11 +28,4 @@
../../src
-
-
-
- performance
- locking_functional
-
-
diff --git a/ci/travis/mariadb.docker.travis.xml b/ci/travis/mariadb.docker.travis.xml
index 3e3b9229cd..d080c43c80 100644
--- a/ci/travis/mariadb.docker.travis.xml
+++ b/ci/travis/mariadb.docker.travis.xml
@@ -28,11 +28,4 @@
../../src
-
-
-
- performance
- locking_functional
-
-
diff --git a/ci/travis/mariadb.mysqli.docker.travis.xml b/ci/travis/mariadb.mysqli.docker.travis.xml
index 5c2bff918b..dfd8ce59b2 100644
--- a/ci/travis/mariadb.mysqli.docker.travis.xml
+++ b/ci/travis/mariadb.mysqli.docker.travis.xml
@@ -28,11 +28,4 @@
../../src
-
-
-
- performance
- locking_functional
-
-
diff --git a/ci/travis/mysql.docker.travis.xml b/ci/travis/mysql.docker.travis.xml
index 3e3b9229cd..d080c43c80 100644
--- a/ci/travis/mysql.docker.travis.xml
+++ b/ci/travis/mysql.docker.travis.xml
@@ -28,11 +28,4 @@
../../src
-
-
-
- performance
- locking_functional
-
-
diff --git a/ci/travis/mysqli-tls.docker.travis.xml b/ci/travis/mysqli-tls.docker.travis.xml
new file mode 100644
index 0000000000..8c5bea7787
--- /dev/null
+++ b/ci/travis/mysqli-tls.docker.travis.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ../../tests
+
+
+
+
+
+ ../../src
+
+
+
diff --git a/ci/travis/mysqli.docker.travis.xml b/ci/travis/mysqli.docker.travis.xml
index 5c2bff918b..dfd8ce59b2 100644
--- a/ci/travis/mysqli.docker.travis.xml
+++ b/ci/travis/mysqli.docker.travis.xml
@@ -28,11 +28,4 @@
../../src
-
-
-
- performance
- locking_functional
-
-
diff --git a/ci/travis/pdo_sqlsrv.travis.xml b/ci/travis/pdo_sqlsrv.travis.xml
index 00bf7da6b2..7254b4b9e0 100644
--- a/ci/travis/pdo_sqlsrv.travis.xml
+++ b/ci/travis/pdo_sqlsrv.travis.xml
@@ -28,11 +28,4 @@
../../src
-
-
-
- performance
- locking_functional
-
-
diff --git a/ci/travis/pgsql.travis.xml b/ci/travis/pgsql.travis.xml
index 177c7e8afd..b6a3e57395 100644
--- a/ci/travis/pgsql.travis.xml
+++ b/ci/travis/pgsql.travis.xml
@@ -27,11 +27,4 @@
../../src
-
-
-
- performance
- locking_functional
-
-
diff --git a/ci/travis/sqlite.travis.xml b/ci/travis/sqlite.travis.xml
index 469b6ed884..f2473218a5 100644
--- a/ci/travis/sqlite.travis.xml
+++ b/ci/travis/sqlite.travis.xml
@@ -22,11 +22,4 @@
../../src
-
-
-
- performance
- locking_functional
-
-
diff --git a/ci/travis/sqlsrv.travis.xml b/ci/travis/sqlsrv.travis.xml
index bce0cad9cd..4217e6868f 100644
--- a/ci/travis/sqlsrv.travis.xml
+++ b/ci/travis/sqlsrv.travis.xml
@@ -28,11 +28,4 @@
../../src
-
-
-
- performance
- locking_functional
-
-
diff --git a/docs/en/reference/transactions.rst b/docs/en/reference/transactions.rst
index 58ac4a0cb5..602a403b68 100644
--- a/docs/en/reference/transactions.rst
+++ b/docs/en/reference/transactions.rst
@@ -50,7 +50,7 @@ constants:
The default transaction isolation level of a
``Doctrine\DBAL\Connection`` is chosen by the underlying platform
-but it is always at least READ\_COMMITTED.
+but it is always at least ``READ_COMMITTED``.
Transaction Nesting
-------------------
diff --git a/src/Schema/Synchronizer/AbstractSchemaSynchronizer.php b/src/Schema/Synchronizer/AbstractSchemaSynchronizer.php
index 9f5ccbfb78..93d34e14c8 100644
--- a/src/Schema/Synchronizer/AbstractSchemaSynchronizer.php
+++ b/src/Schema/Synchronizer/AbstractSchemaSynchronizer.php
@@ -8,6 +8,8 @@
/**
* Abstract schema synchronizer with methods for executing batches of SQL.
+ *
+ * @deprecated
*/
abstract class AbstractSchemaSynchronizer implements SchemaSynchronizer
{
diff --git a/src/Schema/Synchronizer/SchemaSynchronizer.php b/src/Schema/Synchronizer/SchemaSynchronizer.php
index 3e7beea750..a10d3b7f32 100644
--- a/src/Schema/Synchronizer/SchemaSynchronizer.php
+++ b/src/Schema/Synchronizer/SchemaSynchronizer.php
@@ -7,6 +7,8 @@
/**
* The synchronizer knows how to synchronize a schema with the configured
* database.
+ *
+ * @deprecated
*/
interface SchemaSynchronizer
{
diff --git a/src/Schema/Synchronizer/SingleDatabaseSynchronizer.php b/src/Schema/Synchronizer/SingleDatabaseSynchronizer.php
index 43c0fc6a54..62a5857778 100644
--- a/src/Schema/Synchronizer/SingleDatabaseSynchronizer.php
+++ b/src/Schema/Synchronizer/SingleDatabaseSynchronizer.php
@@ -12,6 +12,8 @@
/**
* Schema Synchronizer for Default DBAL Connection.
+ *
+ * @deprecated
*/
class SingleDatabaseSynchronizer extends AbstractSchemaSynchronizer
{
diff --git a/tests/Functional/Driver/Mysqli/ConnectionTest.php b/tests/Functional/Driver/Mysqli/ConnectionTest.php
index e816203248..96f3649310 100644
--- a/tests/Functional/Driver/Mysqli/ConnectionTest.php
+++ b/tests/Functional/Driver/Mysqli/ConnectionTest.php
@@ -61,6 +61,14 @@ private function getConnection(array $driverOptions): Connection
{
$params = TestUtil::getConnectionParams();
+ if (isset($params['driverOptions'])) {
+ // Currently, MySQLi driver options may be either numeric MYSQLI_* keys
+ // or the {@link Connection::OPTION_FLAGS} string key.
+ // The options should be merged using array union instead of array_merge()
+ // to preserve the numeric keys.
+ $driverOptions += $params['driverOptions'];
+ }
+
return (new Driver())->connect(
array_merge(
$params,
diff --git a/tests/Functional/Driver/PDO/SQLSrv/DriverTest.php b/tests/Functional/Driver/PDO/SQLSrv/DriverTest.php
index 6013591e51..8ebce646ec 100644
--- a/tests/Functional/Driver/PDO/SQLSrv/DriverTest.php
+++ b/tests/Functional/Driver/PDO/SQLSrv/DriverTest.php
@@ -42,9 +42,15 @@ protected static function getDatabaseNameForConnectionWithoutDatabaseNameParamet
*/
private function getConnection(array $driverOptions): Connection
{
+ $params = TestUtil::getConnectionParams();
+
+ if (isset($params['driverOptions'])) {
+ $driverOptions = array_merge($params['driverOptions'], $driverOptions);
+ }
+
return $this->connection->getDriver()->connect(
array_merge(
- TestUtil::getConnectionParams(),
+ $params,
['driverOptions' => $driverOptions]
)
);
diff --git a/tests/TestUtil.php b/tests/TestUtil.php
index 44f543d446..eacbb4d13f 100644
--- a/tests/TestUtil.php
+++ b/tests/TestUtil.php
@@ -15,6 +15,9 @@
use function extension_loaded;
use function implode;
use function is_string;
+use function strlen;
+use function strpos;
+use function substr;
use function unlink;
/**
@@ -187,6 +190,11 @@ private static function mapConnectionParameters(array $configuration, string $pr
'dbname',
'port',
'server',
+ 'ssl_key',
+ 'ssl_cert',
+ 'ssl_ca',
+ 'ssl_capath',
+ 'ssl_cipher',
'unix_socket',
] as $parameter
) {
@@ -197,6 +205,14 @@ private static function mapConnectionParameters(array $configuration, string $pr
$parameters[$parameter] = $configuration[$prefix . $parameter];
}
+ foreach ($configuration as $param => $value) {
+ if (strpos($param, $prefix . 'driver_option_') !== 0) {
+ continue;
+ }
+
+ $parameters['driverOptions'][substr($param, strlen($prefix . 'driver_option_'))] = $value;
+ }
+
return $parameters;
}