v2.5.13 - Jul 22, 2017

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 postgresql LIKE condition with any pg_ 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 - Feb 8, 2017

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 - Feb 4, 2017

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 - Jan 23, 2017

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 and datetimetz OracleDB type introspection: these two types
    were incorrectly recognized as datetime

Total issues resolved: 4

    2508: Renaming index does not rename the index, but creates new one
    2555: schema generation maps oracledb DATE fields to datetime
    2611: #2508 Pass through index options when renaming index on table
    2612: #2555 Fix date and datetimetz type mapping on Oracle

v2.5.9 - Jan 19, 2017

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 - Jan 17, 2017

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

    2408: Hotfix 2313 infinite loop
    2463: IBM_DB2 platform doesn't handle offset without limit
    2509: Oracle platform ignores OFFSET in case if LIMIT is not specified
    2602: Backport #2408

v2.5.7 - Jan 14, 2017

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

v2.5.6 - Jan 12, 2017

Total issues resolved: 1

    2569: Allow doctrine/common 2.7

v2.5.5 - Sep 9, 2016

    842: Fixed incorrect handling of single quotes in SQL-Strings
    856: MySQL getListTableForeignKeysSQL: use current database if null passed
    861: Check for foreign table name on removed tables foreign key
    862: Quote table and constraint names in drop foreign key / drop constraint SQL
    863: Strip leading slash of databasename from URL
    925: Fixing the command when option is CURRENT_SCHEMA
    1054: DBAL-1114: Problem with drop database on PostgreSQL
    1106: DBAL-1164: Creating SQLite Connections via a URL Does Not Work
    1151: DBAL-1205: getPlaceholderPositions finds placeholders which are actually no placeholder if string contains single quotes
    1183: DBAL-1234: Additional slash in dbname when providing settings as URL without scheme
    2182: DBAL-939: schema update doesnt detect boolean type correctly
    2261: OCI8 - bindValue overwrite previous values
    2262: Issue #2261 - OCI8 Driver PHP 7 - Fix bindValue overwriting other params.
    2267: Pass "path" to pdo-sqlite drivers from DriverManager instead of "dbname"
    2270: SqlitePlatform does not escape table name on truncate
    2275: Quote reserved keywords in TRUNCATE TABLE SQL
    2277: [DBAL-939] Fix reverse engineering boolean type columns on DB2
    2279: Stop using template1 as default database for postgres drivers
    2286: Fix list foreign keys SQL database parameter evaluation
    2287: Fix parsing schemeless connection URLs
    2288: Preserve quotation of old column name in ColumnDiff
    2291: The QueryBuilder::getSQLForSelect() always appends a FROM clause for select queries
    2292: Do not generate FROM clause in QueryBuilder if no tables specified
    2302: when use \Doctrine\DBAL\Schema\Comparator to compare two table schema, has a problem
    2303: Fix another primary key alteration with autoincrement column case on MySQL
    2310: [DB2] Move row number to the end of the field list in query limit/offset modification
    2318: [Oracle] Fix list table columns when using external or OS authentication with Oracle
    2384: Fluent methods in QueryBuilder are now documented as returning $this
    2386: Fix oci driver bindValue overwrite with php7
    2390: Catch Throwable in Connection::transactional()
    2403: fix grammar in DBALException messages
    2428: Modify Limit Query on SQLServer2012 with newline before ORDER BY
    2434: Keep references to bound parameter values in oci8 driver
    2436: MySqlPlatform::getListTableColumnsSQL() is not escaping names
    2440: No parameters passed to logger when executing statement using bindParam
    2442: Escape identifiers in metadata SQL properly when used as string literal
    2443: Track the Values & Types Passed to Statement::bindParam
    2484: Allow usage of symfony/console ^3.0 in dev dependencies
    2497: ResultStatement::fetch() returns null instead of false with mysqli
    2500: Making sure that fetch returns false if nothing is found

v2.5.4 - Jan 5, 2016

Total issues resolved: 3

    2249: Compatibility mis-match? PGSQL_ATTR_DISABLE_PREPARES in v2.5.2 (in a PHP 5.6.16 envt)
    2272: [DBAL-1779] Fix string column type declarations with whitespace on SQLite
    2273: Fix usage of PDO::PGSQL_ATTR_DISABLE_PREPARES for edge case pdo_pgsql setups

v2.5.3 - Dec 25, 2015

Total issues resolved: 2

    818: Rebuild SQLServerPlatform::doModifyLimitQuery again to use a CTE
    2268: #2260 - loosening doctrine/common requirement: allowing 2.6.x

v2.5.2 - Sep 16, 2015

Total issues resolved: 24
Bug

    [DBAL-1115] - [GH-773] Fix quoted identifiers for database creation SQL on SQL Anywhere
    [DBAL-1121] - [GH-777] Make host and server connection parameters optional for sqlanywhere driver
    [DBAL-1128] - [GH-782] Fix: SQLite offset with no limit support
    [DBAL-1132] - [GH-786] Fix removing autoincrement column from a primary key
    [DBAL-1137] - Infinite recursion on non-unique table/join alias in QueryBuilder
    [DBAL-1154] - [GH-806] Fix broken functional test for SQL server
    [DBAL-1169] - [GH-815] Fix for inconsistent use of getSQLDeclaration
    [DBAL-1181] - [GH-822] Fix for bad profiling data, showing an indefinitely long query
    [DBAL-1183] - [GH-823] fix client_encoding setting to support pgbouncer
    [DBAL-1186] - [GH-826] fix incorrect ordering of columns in clustered indexes on sql server
    [DBAL-1189] - [GH-828] rehashed charset implementation to support old versions of postgresql
    [DBAL-1192] - [GH-831] allow hhvm/mysqli failure so poor travis can feel better
    [DBAL-1215] - [GH-844] template1 as default database for PostgreSQL
    [DBAL-1217] - [GH-846] Fix retrieving the database name connected to for SQL Server
    [DBAL-1218] - [GH-847] [DBAL-1217] Fix retrieving the database name connected to for SQL Anywhere
    [DBAL-1220] - [GH-849] Fix dropping database with active connection on PostgreSQL
    [DBAL-1233] - TEXT type in MSSQL should be NVARCHAR(MAX) not VARCHAR(MAX)
    [DBAL-1240] - [GH-864] Fix undefined notices within MasterSlaveConnection
    [DBAL-1260] - [GH-878] Fix call on non-object in ping() with PDO wrapper
    [DBAL-1296] - [GH-903] Override methods for sharding connection

Documentation

    [DBAL-1174] - [GH-817] Fixed a minor typo

Improvement

    [DBAL-1159] - [GH-809] travis: PHP 7.0 nightly added
    [DBAL-1270] - [GH-886] Add test for MariaDB 5.5, 10.0 and 10.1 on Travis

Task

    [DBAL-1299] - [GH-906] [2.5] Fix allowed failures for HHVM + MariaDB builds on Travis

v2.5.1 - 12 January 2015

Total issues resolved: 24
Bug

    [DBAL-1033] - [GH-716] Do not TRIM() parentheses around partial indexe conditions
    [DBAL-1038] - [GH-720] Type json_array is not consistent with NULL values
    [DBAL-1051] - [GH-730] Update index name quoting in MySQL table creation
    [DBAL-1058] - It seems that MSSQL syntax was changed
    [DBAL-1060] - [GH-736] [DBAL-1058] Fix database and namespace introspection for SQL Server
    [DBAL-1062] - upgrade from v2.4.3 to v2.5.0 is forcing recreating Indexes making Doctrine unusable
    [DBAL-1063] - Exceptions from SchemaTool when running with DBAL 2.5.0
    [DBAL-1072] - [GH-741] [DBAL-1051] Quote index name in inline index declaration SQL
    [DBAL-1073] - [GH-742] Take care about mariadb platform
    [DBAL-1087] - [GH-751] Length of fixed string type (char) is ignored on Postgre schema update
    [DBAL-1088] - [GH-752] Fix error handling restore
    [DBAL-1090] - [GH-754] Changing string to fixed string is not recognized in PostgreSQL Platform
    [DBAL-1092] - [GH-756] [DBAL-1062] Fix renaming indexes used by foreign key constraints
    [DBAL-1093] - [GH-757] Fix creating and dropping database on PostgreSQL
    [DBAL-1095] - [GH-759] [DBAL-1095] Fix index introspection on SQL Anywhere
    [DBAL-1097] - [GH-760] [DBAL-1097] Fix foreign key constraint referential action on Oracle
    [DBAL-1100] - [GH-762] PostgreSQL needs explicitly closed connection in functional test
    [DBAL-1102] - [GH-764] [DBAL-1063] Allow defining duplicate indexes on a table
    [DBAL-1109] - unique-constraints names not quoted on create
    [DBAL-1111] - [GH-771] Fix unique index exception handling for an index on multiple columns in PHP 5.4

Documentation

    [DBAL-1075] - [GH-744] Removed non-phpdoc @internal tags
    [DBAL-1078] - [GH-746] minor phpdoc fixes in the platform files

Improvement

    [DBAL-1079] - [GH-747] minor phpdoc fixes in the schema files
    [DBAL-1108] - [GH-769] Allow overriding implicit indexes

v2.5.0 - 4 December 2014

The following list contains the major new features of DBAL:

    Support for SAP Sybase SQL Anywhere versions 10, 11, 12 and 16 (DBAL-475)
    Support for auto-commit=NO on all drivers and platforms. (DBAL-81)
    Refactor exceptions to use common error-codes and exception classes that derive from Doctrine\DBAL\DBALException. (DBAL-407)
    Add support to retry connections with Doctrine\DBAL\Connection#ping() method. (DBAL-275)
    Add INSERT support to QueryBuilder (DBAL-320)
    Add Binary type for VARBINARY support (DBAL-714)
    Add charset and SSL connection support to PostgreSQL (DBAL-567, DBAL-702)
    Add options support for Myqli (DBAL-643)
    Add support for using database uris with the url parameter in DriverManager::getConnection() which supports several forms used by PaaS providers out of the box (DBAL-1050).
    Auto detection of platform to use based on database (DBAL-757)
    Improved SQL Server LIMIT emulation support. (Multiple tickets)
    Improvements to HHVM Support (no full support yet)

v2.4.3 - 16 October 2014

Total issues resolved: 12

    DBAL-760 - Don't return warnings as errors in sqlsrv driver #490
    DBAL-766 - PostgreSQL: Fix statement for getTableWhereClause method #492
    DBAL-759 - Fix driver error while introspecting sequences in SQL Server 2012 #489
    DDC-2883 - DBAL-766 - PostgreSQL: Fix statement for getTableWhereClause method #492
    DBAL-787 - Fix modifying limit/offset for statements with subqueries on SQL Server #512
    DBAL-792 - Fix sqlite autoincrement detection #515
    #625 - Fix pg boolean conversion
    DBAL-950 - Backport #625 - pgsql boolean conversion
    DBAL-951 - Remove duplicate suggest section in composer.json #641
    DBAL-963 - Add close() method in MasterSlaveConnection.php #652
    DBAL-976 - Fix evaluation of NOLOCK table hint on SQL Server #663
    DBAL-1006 - DBAL-717 - DBAL-335 - Fix bug in MasterSlaveConnection with keepSlave option and switch back after transaction #690

v2.4.0 - 7 September 2013

[DBAL-340] - [GH-196] Fixed mini-typo
[DBAL-344] - [GH-200] params not passed from execute to logger
[DBAL-350] - [GH-205] Added exit code for dbal:reserved-words command
[DBAL-355] - [GH-208] Optimize autoload prefix in composer.json
[DBAL-356] - [GH-209] Added query micro-optimization
[DBAL-366] - [GH-218] [MySQL] Fixed bug with comments not adding quotes for
	tables
[DBAL-370] - [GH-220] Added support for alter table, foreign keys and
	autoincrement detection to Sqlite platform and schema
[DBAL-381] - [GH-227] MySql TEXT and BLOB type declarations
[DBAL-383] - [GH-228] fixed typo for enabling DEFERRED support
[DBAL-396] - [GH-236] DBAL-200 Missing docs for 1 parameter in
	Connection::update
[DBAL-417] - [GH-250] Lightweight export as of doctrine/doctrine2#543
[DBAL-431] - [GH-261] Fix OFFSET without LIMIT cause MySQL syntax error.
[DBAL-432] - [GH-262] Add Symfony Console dependency to composer.json
[DBAL-435] - [GH-264] Allow passing empty arrays as parameters
[DBAL-438] - [GH-266] Removed outdated methods in DatabasePlatformMock.
[DBAL-439] - [GH-267] Add SQLServerPlatform supports schemas
[DBAL-440] - [GH-268] Remove deprecated getShowDatabasesSQL() from Platforms
[DBAL-442] - Break the query building with multiple from parts
[DBAL-445] - [GH-271] added the possibility to use column names as keys for
	the types in Connection::insert()
[DBAL-447] - [GH-272] Refactor SQL Server keyword dictionaries and MsSQL
	leftovers
[DBAL-455] - [GH-278] OraclePlatform sequence naming for primary keys
[DBAL-459] - [GH-282] Add column collation support for SQL Server
[DBAL-460] - [GH-283] Fix SchemaManagerFunctionalTestCase composite foreign
	keys test
[DBAL-462] - [GH-284] Correcting code example
[DBAL-473] - [GH-292] Add length in the OCI8 bindParam
[DBAL-476] - [GH-294] Allow removing column comment on some platforms
[DBAL-478] - [GH-295] Fix ModifyLimitQueryTest
[DBAL-484] - [GH-298] Fix SQL Server default constraints
[DBAL-485] - [GH-299] Fix list SQL Server composite foreign keys
[DBAL-486] - [GH-300] Improve list SQL Server table indexes
[DBAL-494] - [GH-304] Fix for DBAL-442
[DBAL-497] - SQLServerPlatform modifies limit query incorrectly when column
	names start with "from"
[DBAL-498] - [GH-306] [DBAL-497] Fixed SQL Server platform replacing 'FROM' in
	column names during limit
[DBAL-499] - [GH-307] Postgres fix for a possible unavailable dbname
[DBAL-500] - [GH-308] added index flags to schema table
[DBAL-506] - [GH-312] [DBAL-264] Support for UIDs in PostgreSQL
[DBAL-508] - MySqlSchemaManager accessing undefined index tableColumn[comment]
[DBAL-511] - Schema\ColumnDiff incorrect with default varchar value and
	postgresql
[DBAL-520] - [GH-319] Delete unnecessary "use PDO" statement
[DBAL-522] - BC break : executeQuery with an array containing null value(s).
[DBAL-530] - sqlite: foreignKey - definition wrong when tables has
	databasename as prefix
[DBAL-533] - [GH-327] #DDC-2313: QueryBuilder Deep Cloning
[DBAL-539] - [GH-332] [DDC-2470] Use column name instead of alias to modify
	order by clause
[DBAL-549] - [GH-339] Removed an unused method in AbstractPlatform.
[DBAL-568] - [GH-348] Portability wrapper _defaultFetchMode
[DBAL-583] - [GH-360] Don't add 'NOT NULL' to the 'ALTER TABLE' when that
	hasn't changed
Improvement
[DBAL-331] - [GH-192] ExpressionBuilder in and notIn methods
[DBAL-403] - [GH-240] Fix for DBAL-209
