Releases: doctrine/dbal
v2.6.2
This release fixes an incorrect optimisation in
Doctrine\DBAL\Query\Expression\CompositeExpression
which
could have led to dropping query expression components.
Also, DBAL was ignoring some important platform settings
when determining which cache keys to use when looking for
result caches: that could have led to sharing caches for
results produced by different DB connections.
Total issues resolved: 2
v2.6.1
This release fixes an unintentional BC break that
prevented using DateTimeImmutable
interfaces
in the pre-existing date-related types.
Users are still encouraged to migrate to the newly
introduced immutable date types.
Total issues resolved: 2
v2.6.0
This is a minor release of Doctrine DBAL that aggregates over 200 fixes
and improvements that we have tested, checked, reviewed and stabilised
over the last year.
This release includes all changes of the 2.5.x
series, as well as
feature additions and improvements that couldn't land in patch releases.
Backwards Compatibility Breaks
This release comes with few potential Backwards Compatibility (BC)
breaks that, while unlikely affecting consumers of the library, are
to be considered.
Please take some time to read the UPGRADE.md documentation.
The issues related to these BC breaks are listed below.
Dependency requirement changes
The dependency requirements for DBAL 2.6.0 onwards have also changed:
- HHVM is no longer officially supported
- PHP 7.1.0 is the minimum supported PHP version
- The PDO extension is now a required dependency
Deprecations
- The
json_array
type is now to be considered deprecated - The
Doctrine\DBAL\Schema\Table#renameColumn()
API is deprecated
and disabled - The
Doctrine\DBAL\Connection#getDatabasePlatform()
may
now trigger database connections, if a platform version
isn't provided upfront
New features
This release introduces a few major additions:
- PostgreSQL 9.4+ platform support
- MySQL 5.7.9 (GA) platform support
- A
JsonType
that maps to JSON column types when supported
by the underlying RDBMS DateIntervalType
DateTimeImmutableType
DateTimeTzImmutableType
DateImmutableType
TimeImmutableType
PDO::FETCH_OBJ
emulation formysqli
andoci8
statements- SSL root certificate configuration support for
pdo_pgsql
- SSL support for
mysqli
Improvements and Fixes
This release comes with a myriad of improvements and
bug-fixes that should improve both compatibility with
exotic database engines and overall performance.
We focused on stability and reliability of
existing features, and improved the overall consistency
of cross-platform behavior of the library.
A detailed list of fixes can be found below.
Total issues resolved: 224
BC Breaks:
- 2527: Normalize method signatures for
fetch()
andfetchAll()
, ensuring compatibility with thePDOStatement
signature thanks to @phansys - 2519:
ResultStatement#fetchAll()
must define 3 arguments in order to be compatible withPDOStatement#fetchAll()
thanks to @phansys - 2504: URL-decode URL-style DSN thanks to @c960657
- 990: DBAL-1057 Connection is not lazy anymore when platform detection is necessary
- 1072: DBAL-1130 #784 Connection is not lazy anymore, since platform detection was introduced - exposing the issue via broken test
Deprecations:
- 916: Fix return type of
Table#renameColumn()
and mark it as deprecated thanks to @aivus - 1276: DBAL-1318 #916 Fix return type of
Table#renameColumn()
and mark it as deprecated - 2782: Stop using the deprecated
json_array
type internally thanks to @lcobucci
New Features:
- 718: Identify retryable transaction errors and cause them to raise specific exception types thanks to @Tobion
- 798: Add
application_name
to PostgreSQL driver connection thanks to @davividal - 814: Allow
serverVersion
to be explicitly unspecified (null
) thanks to @BreiteSeite - 819: Added support for column inline comments in SQLite thanks to @hason
- 824: DBAL-1143 Added Postgres 9.4 platform thanks to @mbeccati
- 854: add
DateInterval
type thanks to @vbartusevicius - 892: DDC-3863 add a
json
type that doesn't have the flaws ofjson_array
thanks to @Taluu - 919: add
sslrootcert
connection option to thepdo_pgsql
driver thanks to @peterjmit - 1028: DBAL-1091 #755 Update
MysqliStatement
to emulatePDO::FETCH_OBJ
behavior - 1043: DBAL-1104 DBAL-1104 #766 Add support for object hydration in oci8 driver
- 1086: DBAL-1143 add JSONB type to PostgreSQL
- 1127: DBAL-1184 DBAL-1143 #824 Added Postgres 9.4 platform
- 1176: DBAL-1228 #854 add
DateInterval
type - 1280: DBAL-1321 #919 add
sslrootcert
connection option to thepdo_pgsql
driver - 1882: DBAL-662 Support
DateTimeImmutable
- 2266: Add native JSON type support for MySQL >=5.7.8 thanks to @ismailbaskin
- 2284: Added parameter
default_dbname
to pdo_pgsql driver, used to override the default database thanks to @kimhemsoe - 2306: Add "easy connect string" support for the Oci8Driver thanks to @bobvandevijver
- 2307: Add support for Easy Connect string as connection parameter in OracleDB thanks to @bobvandevijver
- 2450: Add immutable date types support thanks to @deeky666
- 2455: Use native JSON type on MySQL >=5.7 thanks to @rh389
- 2570: Allow secure connections using SSL on mysqli thanks to @pgrau
- 2688: Support
IS NULL
checking inConnection#delete()
andConnection#update()
generated criteria, allowing fornull
column searches thanks to @jnvsor
Bug Fixes:
- 713: Prevent result cache key collisions when sharing caches across different connections thanks to @vilartoni
- 784: Connection is not lazy anymore, since platform detection was introduced - exposing the issue via broken test thanks to @weaverryan
- 827: Fix
DISTINCT
queries withLIMIT
and noORDER
on SQLServer 2012 thanks to @billschaller - 871:
SqlConsoleCommand
should show results of queries containingRETURNING
thanks to @bountin - 918: Fix typo in
DBALException
message thanks to @chadrien - 923: DBAL-1302 Avoid rewrapping
Docrine\DBAL\Exception\DriverException
with nested drivers thanks to @mathroc - 924: Correcting reference to the
Connection#rollBack()
method - case sensitivity thanks to @rawkode - 1018: DBAL-1082:
SchemaTool
does not generate DDL for MySQLunsigned float
- 1019: DBAL-1083 DBAL-1082 #749 Fix
SchemaTool
, which does not generate DDL for MySQLunsigned float
- 1130: DBAL-1187 #827 Fix
DISTINCT
queries withLIMIT
and noORDER
on SQLServer 2012 - 1138: DBAL-1194 #832 Fix test failures on Windows due to differing newlines
- 1139: DBAL-1196 #834 Remove documentation for non-existing events from
Connection#rollBack()
docblock - 1281: DBAL-1322 Correct typo in driver exception message
- 1344: DBAL-1783 #924 Correcting reference to the
Connection#rollBack()
method - case sensitivity - 2250: Unit tests are failing on OracleDB thanks to @DeepDiver1975
- 2252:
ModifyLimitQueryTest::testModifyLimitQuerySubSelect()
fails on OracleDB thanks to @DeepDiver1975 - 2253: SchemaManagerFunctionalTestCase::testDropsDatabaseWithActiveConnections() fails on OracleDB thanks to @DeepDiver1975
- 2254: Correct
SchemaManagerFunctionalTestCase::testDropsDatabaseWithActiveConnections()
on OracleDB thanks to @DeepDiver1975 - 2255: Use shorter table names, as OracleDB allows max 30 characters thanks to @DeepDiver1975
- 2263: Fix failing unit tests on OracleDB thanks to @DeepDiver1975
- 2276: Fix test case on OracleDB thanks to @deeky666
- 2335: Correct case sensitivity of usages of the
Connection#rollBack()
method thanks to @kadala - 2314:
DateIntervalType
supports conversion of invalid values thanks to @MisatoTremor - 2316: Fix
DateInterval
database value truncation (string overflow) thanks to @vbartusevi...
v2.5.13
This release fixes a number of issues around the PostgreSQL,
OracleDB and MySQL platforms database introspection.
Connection DSN generation fixes were applied for the
SQLAnywhere driver.
Corrections on how record fetching mode have been applied to
the DB2 driver.
Fixes were applied to the handling of cursors and result
caching with pdo_sqlsrv.
Total issues resolved: 16
- 889: #1234 On OracleDB, a "Table has no primary key" error is raised when the index and the constraint name don't match thanks to @nitso
- 1131: DBAL-1188: OracleDB: List table columns are returned in the wrong order thanks to @doctrinebot
- 1234: DBAL-1280: "Table has no primary key" when generating entities for Oracle tables thanks to @doctrinebot
- 2405: SQLAnywhere corrections for DSN generation and persistent connections thanks to @andipohl
- 2647: DBAL-2644: Fix
fetchAll(PDO::FETCH_COLUMN)
on DB2 with Portability wrapper thanks to @morozov - 2650: Fix result cache and PDO connection test on
pdo_sqlsrv
thanks to @deeky666 - 2651: Fix closing statement cursor on
pdo_sqlsrv
if not executed yet thanks to @deeky666 - 2654: Make functional sqlanywhere driver tests conditional thanks to @deeky666
- 2670: Slash before
_
in postgresqlLIKE
condition with anypg_
prefix to prevent confusion with the wildcard character thanks to @blackbjorn - 2673: #1131 On OracleDB,
getListTableColumnsSQL
returns columns ordered by position instead of by name thanks to @mdwheele - 2686: #889 On OracleDB, primary key is considered missing if
index_name != constraint_name
thanks to @SkydiveMarius - 2696: MySQL: Fix primary key alteration when adding new columns thanks to @drieschel
- 2714:
Sequence::isAutoIncrementsFor()
is not normalising PK column, and is unable to distinguish different casing thanks to @dhensby - 2715: #2714
Sequence::isAutoIncrementsFor()
is now case-insensitive thanks to @dhensby - 2720:
SQLParserUtils::getPlaceholderPositions()
fails if there are quoted strings containing only backslashes thanks to @mondrake - 2730: Corrected duplicate
COMMENT
part in DDL statement thanks to @mondrake
v2.5.12
This release fixes some regressions introduced in OracleDB support in 2.5.11.
Specifically, closing a cursor caused an ORA-01002
exception to be raised
in some scenarios.
Further fixes include:
- support for dropping "in use" databases in OracleDB and SQL Server (must disconnect first)
- corrections in how the last insert ID is fetched on SQL Server
- re-use of parameters bound to an sqlsrv statement via
bindValue()
Total issues resolved: 8
- 2634: Fix fetching last insert ID for sequences on SQL Server
- 2635: Fix date diff test
- 2636: Fix dropping in use databases on SQL Server and Oracle
- 2637: ORA-01002: fetch out of sequence
- 2638: Tear down active transactions in functional test cases
- 2639: Update Version.php
- 2645: DBAL-2637 Fix closing prepared statement cursor with LOB column on Oracle
- 2646: Fix the reuse of a statement on sqlsrv with explicit bindValue()
v2.5.11
This release fixes a number of inconsistencies around prepared statements
when closeCursor()
is called, or when a prepared statement is re-used
multiple times.
Total issues resolved: 5
- 2487: Store results of subsequents statement executions same as of the first one
- 2489: Rebind row values to the statement after freeing result
- 2536: Bind result variables after each execution in order to prevent string truncation
- 2546: Prepared statements become unusable after calling closeCursor() on IBM DB2, Oracle and MS SQL Server.
- 2557: Inconsistent semantics of close cursor
v2.5.10
This release fixes:
- some PHP 5.3 compatibility issues that caused the test suite to fail
for the previous release - index renaming for indexes that had particular assigned options, and
that were being added rather than renamed or recreated under a different
name date
anddatetimetz
OracleDB type introspection: these two types
were incorrectly recognized asdatetime
Total issues resolved: 4
v2.5.9
This release fixes an issue with type information passed to Connection#update()
,
which was incorrectly handled if the updated columns and the identifier columns
had equivalent keys.
Also, the generated current date and time SQL expressions for SQL Server were fixed.
Total issues resolved: 4
- 2511: DBAL Connection::update() - types list does not match the parameter list if fields are used in SET and WHERE clause
- 2586: SQL-Server : issue on getCurrentDateSql()
- 2608: DBAL-2586 Fix current date and time SQL generation on SQL Server
- 2609: DBAL-2511 Fix type list extraction in connection update method
v2.5.8
This release fixes some issues around LIMIT/OFFSET handling in DB2, OracleDB, SQL Server:
- Allowing LIMIT/OFFSET modification without LIMIT on OracleDB
- Allowing LIMIT/OFFSET modification with OFFSET = 0 on DB2
- Avoiding an accidental infinite loop in LIMIT/OFFSET modification on SQL Server
Total issues resolved: 4
v2.5.7
This release fixes some OracleDB and PostgreSQL specific issues.
- Introspecting table columns on OracleDB when using a non-default schema caused SQL error ORA-01427
- SQL parameter expansion was broken when using the
ARRAY[]
expression on PostgreSQL
Total issues resolved: 9
- 2496: Fix parameter list expansion inside PostgreSQL arrays
- 2515: PHP Warning when listing table columns in Oracle
- 2516: #2515 fix schema listing when having identical tables in databases
- 2517: ORA-01427 when listing table columns
- 2518: Fixed ORA-01427 when listing columns
- 2522: OraclePlatform - ORA-01427: single-row subquery returns more than one row
- 2549: Oracle column metadata import fix
- 2584: Doctrine:Schema:Validate leeds to ORA-01427(single-row subquery returns more than one row)
- 2585: OraclePlatform : Add an owner condition to the list table column comment subquery