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; }