Skip to content
Release [3.0.0](https://github.com/doctrine/dbal/milestone/76)

3.0.0
=====

- Total issues resolved: **26**
- Total pull requests resolved: **99**
- Total contributors: **13**

Documentation,Prepared Statements,Static Analysis
-------------------------------------------------

 - [4433: Require positional statement parameters to be a list](https://github.com/doctrine/dbal/pull/4433) thanks to @morozov

Configuration
-------------

 - [4431: Use individual properties in Configuration](https://github.com/doctrine/dbal/pull/4431) thanks to @BenMorel

BC Break,Improvement,Locking
----------------------------

 - [4429: Throw exception on invalid LockMode](https://github.com/doctrine/dbal/pull/4429) thanks to @morozov and @BenMorel

 - [4423: Add missing word](https://github.com/doctrine/dbal/pull/4423) thanks to @greg0ire
 - [4028: Allow php 8](https://github.com/doctrine/dbal/pull/4028) thanks to @greg0ire

Bug,Prepared Statements,Query
-----------------------------

 - [4422: QueryBuilder must use 0-based positional parameter keys](https://github.com/doctrine/dbal/pull/4422) thanks to @morozov

BC Break,Prepared Statements
----------------------------

 - [4410: Remove support for colon prefix in statement parameters](https://github.com/doctrine/dbal/pull/4410) thanks to @morozov
 - [4294: Remove Abstraction\Result](https://github.com/doctrine/dbal/pull/4294) thanks to @morozov
 - [4007: Replace the concept of statement fetch modes with the explicit API](https://github.com/doctrine/dbal/pull/4007) thanks to @morozov

Error Handling,Static Analysis,Test Suite
-----------------------------------------

 - [4401: Add missing instanceof check](https://github.com/doctrine/dbal/pull/4401) thanks to @BenMorel

SQL Parser
----------

 - [4397: Port the SQL parser from PDO](https://github.com/doctrine/dbal/pull/4397) thanks to @morozov and @shurik005

Error Handling
--------------

 - [4387: Store query params in driver exceptions](https://github.com/doctrine/dbal/pull/4387) thanks to @BenMorel

Documentation
-------------

 - [4384: Proofread upgrade guide](https://github.com/doctrine/dbal/pull/4384) thanks to @greg0ire

BC Break,Code Style,MySQL,PostgreSQL
------------------------------------

 - [4343: Rename MySql... to MySQL... and PostgreSqlSchemaManager to PostgreSQLSchemaManager](https://github.com/doctrine/dbal/pull/4343) thanks to @mvorisek

Connections
-----------

 - [4323: Clean up redundant implements](https://github.com/doctrine/dbal/pull/4323) thanks to @BenMorel

Bug,Error Handling,Type Conversion
----------------------------------

 - [4320: Properly format scalar values in ConversionException](https://github.com/doctrine/dbal/pull/4320) thanks to @morozov

Improvement,Prepared Statements
-------------------------------

 - [4317: Reintroduce parts of Legacy API for some more time](https://github.com/doctrine/dbal/pull/4317) thanks to @beberlei
 - [4293: Add Result::fetchAllKeyValue() and ::iterateKeyValue()](https://github.com/doctrine/dbal/pull/4293) thanks to @morozov

Console,Documentation
---------------------

 - [4301: Remove irrelevant deprecation message from console runner](https://github.com/doctrine/dbal/pull/4301) thanks to @morozov

Blocker
-------

 - [4290: Don't ignore empty strings in QueryBuilder](https://github.com/doctrine/dbal/issues/4290) thanks to @BenMorel

BC Break,Error Handling,Platforms,Types
---------------------------------------

 - [4278: Remove deprecated APIs](https://github.com/doctrine/dbal/pull/4278) thanks to @morozov

BC Break,Improvement,Platforms,Schema Managers
----------------------------------------------

 - [4234: Remove deprecated APIs](https://github.com/doctrine/dbal/pull/4234) thanks to @morozov

BC Break,Schema
---------------

 - [4217: Remove the Synchronizer package](https://github.com/doctrine/dbal/pull/4217) thanks to @morozov

Blocker,PHP
-----------

 - [4207: Update locked composer/package-versions-deprecated for compatibility with PHP 8.0](https://github.com/doctrine/dbal/pull/4207) thanks to @morozov

Blocker,CI,Improvement,PHP
--------------------------

 - [4203: Remove --ignore-platform-reqs from PHP 8.0 builds](https://github.com/doctrine/dbal/pull/4203) thanks to @morozov

Blocker,PHP,Test Suite
----------------------

 - [4197: The test suite fails on PHP 8 due to introduction of the match keyword](https://github.com/doctrine/dbal/issues/4197) thanks to @morozov

Blocker,Bug,PHP,Platforms
-------------------------

 - [4171: Inconsistent naming of method arguments](https://github.com/doctrine/dbal/issues/4171) thanks to @morozov

BC Break,Connections,Prepared Statements
----------------------------------------

 - [4167: Remove deprecated methods from the wrapper Connection](https://github.com/doctrine/dbal/pull/4167) thanks to @morozov

Documentation,Improvement
-------------------------

 - [4164: Update architecture documentation](https://github.com/doctrine/dbal/pull/4164) thanks to @morozov
 - [4135: Remove irrelevant references to PDO from the documentation](https://github.com/doctrine/dbal/pull/4135) thanks to @morozov

BC Break,Connections,Error Handling,Events,Improvement,Prepared Statements,Query,Schema,Schema Managers,Tools,Types
-------------------------------------------------------------------------------------------------------------------

 - [4160: Add some missing @throws annotations and fix thrown exceptions](https://github.com/doctrine/dbal/pull/4160) thanks to @morozov

BC Break,Connections,Improvement,Prepared Statements
----------------------------------------------------

 - [4159: Do not implement driver-level interfaces by wrapper-level classes](https://github.com/doctrine/dbal/pull/4159) thanks to @morozov

BC Break,Drivers,Improvement,New Feature,Portability
----------------------------------------------------

 - [4157: Rework the portability layer to act as a middleware](https://github.com/doctrine/dbal/pull/4157) thanks to @morozov

BC Break,Connections,Error Handling,Platforms
---------------------------------------------

 - [4153: Remove deprecated components](https://github.com/doctrine/dbal/pull/4153) thanks to @morozov

Drivers,Error Handling,Improvement
----------------------------------

 - [4149: Replace DefaultExceptionConverter with driver-specific implementations](https://github.com/doctrine/dbal/pull/4149) thanks to @morozov

BC Break,Drivers,Improvement
----------------------------

 - [4147: Mark driver classes final](https://github.com/doctrine/dbal/pull/4147) thanks to @morozov

BC Break,Bug,Error Handling,Schema Managers
-------------------------------------------

 - [4146: Require $platform in AbstractSchemaManager::__construct()](https://github.com/doctrine/dbal/pull/4146) thanks to @morozov

Documentation,Improvement,Prepared Statements
---------------------------------------------

 - [4140: Mark result constructors internal](https://github.com/doctrine/dbal/pull/4140) thanks to @morozov

BC Break,Drivers,Improvement,PDO,pdo_sqlsrv
-------------------------------------------

 - [4138: PDO connection and statement classes made final](https://github.com/doctrine/dbal/pull/4138) thanks to @morozov

BC Break,Drivers,Error Handling,Improvement
-------------------------------------------

 - [4136: Move the logic of driver exception conversion into a separate interface](https://github.com/doctrine/dbal/pull/4136) thanks to @morozov

BC Break,Connections,Drivers,Error Handling,Improvement,Prepared Statements
---------------------------------------------------------------------------

 - [4130: Missing driver exception annotations](https://github.com/doctrine/dbal/pull/4130) thanks to @morozov

BC Break,Drivers,Error Handling
-------------------------------

 - [4129: Remove ExceptionConverterDriver](https://github.com/doctrine/dbal/pull/4129) thanks to @morozov
 - [4113: Remove DriverException::getErrorCode()](https://github.com/doctrine/dbal/pull/4113) thanks to @morozov

BC Break,Connections
--------------------

 - [4128: Remove PingableConnection](https://github.com/doctrine/dbal/pull/4128) thanks to @morozov

BC Break,Connections,Drivers
----------------------------

 - [4125: Remove deprecated driver classes](https://github.com/doctrine/dbal/pull/4125) thanks to @morozov

BC Break,Connections,Platform Detection
---------------------------------------

 - [4115: Remove ServerInfoAwareConnection#requiresQueryForServerVersion() as an implementation detail](https://github.com/doctrine/dbal/pull/4115) thanks to @morozov

Improvement,Prepared Statements,SQL Parser,oci8
-----------------------------------------------

 - [4109: Preparation to marking OCI8 driver classes final](https://github.com/doctrine/dbal/pull/4109) thanks to @morozov

Improvement,Static Analysis
---------------------------

 - [4107: Remove the suppressed errors that PHPStan no longer reports](https://github.com/doctrine/dbal/pull/4107) thanks to @morozov

Improvement,Test Suite
----------------------

 - [4093: Expect only DriverException from Result::fetch*() methods](https://github.com/doctrine/dbal/pull/4093) thanks to @morozov

Configuration,Connections,Improvement
-------------------------------------

 - [4091: Get rid of the call to Connection::getParams() in Portability\Statement](https://github.com/doctrine/dbal/pull/4091) thanks to @morozov

Oracle,Schema Managers
----------------------

 - [4090: Make the $database argument of OracleSchemaManager::createDatabase() mandatory](https://github.com/doctrine/dbal/pull/4090) thanks to @morozov

Test Suite
----------

 - [4089: Remove the CommentedType class from tests](https://github.com/doctrine/dbal/pull/4089) thanks to @morozov

Improvement,Tools
-----------------

 - [4084: Allow using on PHP 7.3 with Composer 2](https://github.com/doctrine/dbal/pull/4084) thanks to @nicolas-grekas
 - [3862: Specify the platform configuration in composer.json](https://github.com/doctrine/dbal/pull/3862) thanks to @morozov

BC Break,Connections,Improvement
--------------------------------

 - [4083: Remove MasterSlaveConnection](https://github.com/doctrine/dbal/pull/4083) thanks to @greg0ire

BC Break,Connections,Drivers,Events,Improvement,Logging,Platforms
-----------------------------------------------------------------

 - [4082: Backport removal of deprecated APIs from develop](https://github.com/doctrine/dbal/pull/4082) thanks to @morozov

BC Break,Connecting,Connections,Drivers,Improvement
---------------------------------------------------

 - [4081: Simplify Driver::connect() signature](https://github.com/doctrine/dbal/pull/4081) thanks to @morozov

BC Break,SQL Anywhere,sqlanywhere
---------------------------------

 - [4077: Remove SQL Anywhere platform and driver](https://github.com/doctrine/dbal/pull/4077) thanks to @morozov

BC Break,Improvement,Portability
--------------------------------

 - [4064: Remove platform-specific portability mode constants](https://github.com/doctrine/dbal/pull/4064) thanks to @morozov

BC Break,Connections,Console,Improvement
----------------------------------------

 - [4059: Remove deprecations for ConnectionHelper](https://github.com/doctrine/dbal/pull/4059) thanks to @dmaicher

Portability,Test Suite
----------------------

 - [4058: Add tests for fetch*() methods of Portability\Result](https://github.com/doctrine/dbal/pull/4058) thanks to @morozov

BC Break,Improvement,Prepared Statements
----------------------------------------

 - [4045: Extract Result from the Statement interface](https://github.com/doctrine/dbal/pull/4045) thanks to @morozov
 - [4035: Moved rowCount() from Statement to ResultStatement](https://github.com/doctrine/dbal/pull/4035) thanks to @morozov

Code Style,PostgreSQL,Test Suite
--------------------------------

 - [4040: Merge up mistakes](https://github.com/doctrine/dbal/pull/4040) thanks to @greg0ire

Improvement,Portability,Prepared Statements
-------------------------------------------

 - [4039: Refactor portability statement into a functional composition](https://github.com/doctrine/dbal/pull/4039) thanks to @morozov

BC Break,Connections,Error Handling
-----------------------------------

 - [4030: Backport removal of some deprecated APIs](https://github.com/doctrine/dbal/pull/4030) thanks to @morozov

Regression,Test Suite
---------------------

 - [4006: Fix logging in functional tests in case of connection failure](https://github.com/doctrine/dbal/pull/4006) thanks to @morozov

Blocker,Compatibility,Improvement,New Feature
---------------------------------------------

 - [3980: Segregated support of unique index and unique constraint](https://github.com/doctrine/dbal/pull/3980) thanks to @guilhermeblanco

CI,Oracle,SQL Server,Testing
----------------------------

 - [3965: Sync expected coverage report count](https://github.com/doctrine/dbal/pull/3965) thanks to @greg0ire

Bug,Connecting,Connections,mysqli
---------------------------------

 - [3943: Do not require hostname for non-persistent MySQL connection and require for persistent](https://github.com/doctrine/dbal/pull/3943) thanks to @morozov

BC Break,Logging
----------------

 - [3934: Removed EchoSQLLogger](https://github.com/doctrine/dbal/pull/3934) thanks to @morozov

Drivers,Improvement,mysqli
--------------------------

 - [3933: Removed the hard-coded MySQL default port and the usage of ini-settings](https://github.com/doctrine/dbal/pull/3933) thanks to @morozov

BC Break,Improvement,Strict Typing
----------------------------------

 - [3932: Enable PHPStan strict rules](https://github.com/doctrine/dbal/pull/3932) thanks to @morozov

CI,Improvement,Test Suite
-------------------------

 - [3915: Flatten source and test directory structure](https://github.com/doctrine/dbal/pull/3915) thanks to @morozov

Improvement,Platforms,PostgreSQL,SQL Anywhere,SQL Server
--------------------------------------------------------

 - [3912: Made some platform class names reflect the lowest server version they support](https://github.com/doctrine/dbal/pull/3912) thanks to @morozov

Azure,BC Break,Drivers,Drizzle,MariaDB,Platforms,PostgreSQL,SQL Anywhere,SQL Server,Sharding,pdo_ibm
----------------------------------------------------------------------------------------------------

 - [3906: Backport removal of legacy platforms and drivers from master](https://github.com/doctrine/dbal/pull/3906) thanks to @morozov

Improvement,PHP
---------------

 - [3899: Drop support for PHP 7.2 in DBAL 3.0](https://github.com/doctrine/dbal/issues/3899) thanks to @morozov

BC Break,Improvement,Tools
--------------------------

 - [3860: Drop Doctrine\DBAL\Version in favor of Ocramius\PackageVersions](https://github.com/doctrine/dbal/pull/3860) thanks to @morozov
 - [2967: Drop Doctrine\DBAL\Version in favor of Ocramius\PackageVersions](https://github.com/doctrine/dbal/pull/2967) thanks to @Majkl578

Code Style,Improvement
----------------------

 - [3847: Update Doctrine Coding Standard to 7.0](https://github.com/doctrine/dbal/pull/3847) thanks to @morozov

BC Break,Improvement,Prepared Statements,SQL Parser,oci8
--------------------------------------------------------

 - [3820: Made the OCI8Statement class final](https://github.com/doctrine/dbal/pull/3820) thanks to @morozov

Prepared Statements,Refactoring,mysqli
--------------------------------------

 - [3817: Refactored MySQLiStatement::$columnNames](https://github.com/doctrine/dbal/pull/3817) thanks to @morozov

CI,Improvement
--------------

 - [3814: Added builds against PHP nightly on Travis](https://github.com/doctrine/dbal/pull/3814) thanks to @morozov

BC Break,Improvement,Prepared Statements,oci8
---------------------------------------------

 - [3808: Removed the OCI8Connection::getExecuteMode() method](https://github.com/doctrine/dbal/pull/3808) thanks to @morozov

BC Break,PDO,PHP,RFC
--------------------

 - [3803: Backport PDO-related changes from master to 3.0.x](https://github.com/doctrine/dbal/pull/3803) thanks to @morozov

Failing Test,Test Suite,oci8
----------------------------

 - [3802: OCI8StatementTest fails on PHP 8](https://github.com/doctrine/dbal/issues/3802) thanks to @morozov

BC Break,Improvement,SQL Server
-------------------------------

 - [3756: Dropped SQL Server 2008 support](https://github.com/doctrine/dbal/pull/3756) thanks to @morozov

BC Break,Drivers,Improvement,Platform Detection
-----------------------------------------------

 - [3750: VersionAwarePlatformDriver now extends Driver](https://github.com/doctrine/dbal/pull/3750) thanks to @morozov

BC Break,Connections,Databases,Drivers,Improvement,Schema Introspection
-----------------------------------------------------------------------

 - [3606: Removed Driver::getDatabase() in favor of Connection::getDatabase()](https://github.com/doctrine/dbal/pull/3606) thanks to @morozov

Azure,BC Break,Improvement,Sharding
-----------------------------------

 - [3602: Remove support for sharding and the Azure platform](https://github.com/doctrine/dbal/pull/3602) thanks to @morozov

BC Break,Improvement,Platforms,Prepared Statements
--------------------------------------------------

 - [3594: Removed some unused code bits](https://github.com/doctrine/dbal/pull/3594) thanks to @morozov

BC Break,Improvement,Logging
----------------------------

 - [3584: Remove LoggerChain::addLogger](https://github.com/doctrine/dbal/pull/3584) thanks to @ostrolucky

BC Break,Improvement
--------------------

 - [3579: Remove deprecated stuff for 3.0](https://github.com/doctrine/dbal/pull/3579) thanks to @jwage
 - [3518: Remove @​deprecated stuff](https://github.com/doctrine/dbal/pull/3518) thanks to @Majkl578

BC Break,Drivers
----------------

 - [3553: Removed Driver::getName()](https://github.com/doctrine/dbal/pull/3553) thanks to @morozov

BC Break,Configuration,Connections,PDO
--------------------------------------

 - [3548: Remove user provided PDO functionality](https://github.com/doctrine/dbal/pull/3548) thanks to @morozov

BC Break,MariaDB,Platform Detection,Platforms,PostgreSQL
--------------------------------------------------------

 - [3477: Drop db support for PostgreSQL 9.3 and MariaDB 10.0](https://github.com/doctrine/dbal/pull/3477) thanks to @SenseException

BC Break,Improvement,Types
--------------------------

 - [3257: Remove Doctrine\DBAL\Types\Type::__toString()](https://github.com/doctrine/dbal/pull/3257) thanks to @Majkl578

BC Break,Platforms
------------------

 - [3211: Removed support for DB-generated UUIDs](https://github.com/doctrine/dbal/pull/3211) thanks to @morozov

BC Break,Connections,Drivers,Improvement,PDO,Prepared Statements
----------------------------------------------------------------

 - [3080: [DBAL-3079] Reworked the usage of PDO in PDOConnection from inheritance to composition](https://github.com/doctrine/dbal/pull/3080) thanks to @morozov

BC Break,Prepared Statements,RFC
--------------------------------

 - [3070: Dropped support of fetching objects and non-zero column](https://github.com/doctrine/dbal/pull/3070) thanks to @morozov

BC Break,Platform Detection,Platforms,PostgreSQL,SQL Anywhere,SQL Server
------------------------------------------------------------------------

 - [3055: Drop support for legacy platforms](https://github.com/doctrine/dbal/pull/3055) thanks to @Majkl578 and @morozov

BC Break,Drivers,Drizzle,Platforms
----------------------------------

 - [3040: Drop Drizzle support](https://github.com/doctrine/dbal/pull/3040) thanks to @BenMorel

BC Break,Compatibility,Improvement,PDO,Prepared Statements
----------------------------------------------------------

 - [2958: Remove hard dependency on PDO](https://github.com/doctrine/dbal/pull/2958) thanks to @morozov