Skip to content
### Release Notes for [4.3.0](https://github.com/doctrine/dbal/milestone/165)

### 4.3.0

- Total issues resolved: **3**
- Total pull requests resolved: **103**
- Total contributors: **9**

#### Dependencies,Test Suite

 - [7006: phpunit/phpunit (11.5.15 => 11.5.23)](https://github.com/doctrine/dbal/pull/7006) thanks to @derrabus
 - [6894: PHPUnit 11](https://github.com/doctrine/dbal/pull/6894) thanks to @morozov

#### Deprecation,MariaDB

 - [7000: Deprecate support for MariaDB 10.5](https://github.com/doctrine/dbal/pull/7000) thanks to @derrabus

CI
--

 - [6999: Remove "minimal" dependency setting](https://github.com/doctrine/dbal/pull/6999) thanks to @derrabus

#### Schema Introspection,Test Suite

 - [6995: Rework schema introspection tests that use reflection](https://github.com/doctrine/dbal/pull/6995) thanks to @morozov

#### Platforms,SQL Server

 - [6981: Clean up SQL Server LIKE wildcard characters](https://github.com/doctrine/dbal/pull/6981) thanks to @morozov

#### CI,Test Suite

 - [6980: Remove redundant PHPUnit 11 configuration](https://github.com/doctrine/dbal/pull/6980) thanks to @morozov

#### Schema Definition,Test Suite

 - [6972: Rework tests that create or modify tables](https://github.com/doctrine/dbal/pull/6972) thanks to @morozov

#### Bug,Indexes,Schema Definition

 - [6971: Omit implicit indexes in Table::edit()](https://github.com/doctrine/dbal/pull/6971) thanks to @morozov

#### Columns,Foreign Keys,Indexes,Schema Definition,Tables

 - [6966: Add more TableEditor methods](https://github.com/doctrine/dbal/pull/6966) thanks to @morozov

#### Indexes,Schema Management

 - [6965: Populate indexed column lengths only with non-null values](https://github.com/doctrine/dbal/pull/6965) thanks to @morozov

#### Foreign Keys,Schema Management

 - [6964: Populate foreign key constraint options only with non-default values](https://github.com/doctrine/dbal/pull/6964) thanks to @morozov

#### CI,Dependencies,Deprecation

 - [6962: Require Doctrine Deprecations 1.1.5](https://github.com/doctrine/dbal/pull/6962) thanks to @morozov

#### Primary Keys

 - [6958: Preserve the non-clustered property of the PK constraint](https://github.com/doctrine/dbal/pull/6958) thanks to @morozov

#### Columns,Deprecation,Improvement,Schema Definition

 - [6945: Deprecate Column features and introduce ColumnEditor](https://github.com/doctrine/dbal/pull/6945) thanks to @morozov

#### Columns,SQLite,Schema Introspection,Types

 - [6944: Clean up SQLite column definition parsing](https://github.com/doctrine/dbal/pull/6944) thanks to @morozov

#### Error Handling,Improvement,Schema Definition

 - [6943: Include object name in editor exception messages](https://github.com/doctrine/dbal/pull/6943) thanks to @morozov

#### Columns,Deprecation,Schema Definition,Types

 - [6940: Deprecate "version" column platform option](https://github.com/doctrine/dbal/pull/6940) thanks to @morozov

#### Columns,Deprecation,Improvement,Schema Definition,Types

 - [6939: Introduce JSONB type, deprecate "jsonb" column platform option ](https://github.com/doctrine/dbal/pull/6939) thanks to @morozov

#### Identifiers,Improvement,Schema Definition,Tables

 - [6934: Update TableEditor API](https://github.com/doctrine/dbal/pull/6934) thanks to @morozov

#### Columns,PostgreSQL,Schema Introspection,Types

 - [6933: Simplify Postgres column introspection](https://github.com/doctrine/dbal/pull/6933) thanks to @morozov

#### Columns,MySQL,Schema Introspection,Types

 - [6932: Clean up MySQL column type parsing](https://github.com/doctrine/dbal/pull/6932) thanks to @morozov

#### Columns,SQL Server,Schema Introspection,Types

 - [6931: Clean up SQL Server column type parsing](https://github.com/doctrine/dbal/pull/6931) thanks to @morozov

#### Foreign Keys,Identifiers,Improvement,Indexes,Primary Keys,Schema Definition

 - [6927: Add shorthand name-related methods to schema object editors](https://github.com/doctrine/dbal/pull/6927) thanks to @morozov

 - [6923: Mark classes as read-only, internal and final](https://github.com/doctrine/dbal/pull/6923) thanks to @morozov

#### Schema,Schema Introspection,Static Analysis

 - [6914: Mark identifiers as non-empty strings](https://github.com/doctrine/dbal/pull/6914) thanks to @morozov

#### Documentation,Foreign Keys,Schema Management

 - [6908: fix replacing method name in deprecation message](https://github.com/doctrine/dbal/pull/6908) thanks to @xabbuh

#### Foreign Keys,SQLite,Schema Introspection

 - [6907: Rework foreign key constraint introspection on SQLite](https://github.com/doctrine/dbal/pull/6907) thanks to @morozov

#### Indexes,SQLite,Schema Introspection

 - [6904: Rework index introspection on SQLite](https://github.com/doctrine/dbal/pull/6904) thanks to @morozov

#### Improvement,PHP

 - [6901: Reintroduce PHP 8.2 support](https://github.com/doctrine/dbal/pull/6901) thanks to @derrabus

#### Documentation,Indexes,Schema Comparison

 - [6899: Mark ComparatorConfig::getReportModifiedIndexes() as internal](https://github.com/doctrine/dbal/pull/6899) thanks to @morozov

#### BC Fix,Deprecation,Indexes,Schema Comparison

 - [6890: Introduce ComparatorConfig::withReportModifiedIndexes()](https://github.com/doctrine/dbal/pull/6890) thanks to @morozov and @sbuerk

#### PHP

 - [6889: Require PHP 8.3](https://github.com/doctrine/dbal/pull/6889) thanks to @morozov

#### Indexes,PostgreSQL,Schema Introspection

 - [6887: Rework index column introspection on Postgres](https://github.com/doctrine/dbal/pull/6887) thanks to @morozov

#### Deprecation,Improvement,Indexes,Schema Management

 - [6886: Deprecate Index features and introduce IndexEditor ](https://github.com/doctrine/dbal/pull/6886) thanks to @morozov

#### Bug,Indexes,Schema Management,Tables

 - [6882: Clean up Table::renameIndex() code](https://github.com/doctrine/dbal/pull/6882) thanks to @morozov

#### IBM Db2,Schema Management

 - [6873: Remove DB2Platform:getPreAlterTableIndexForeignKeySQL()](https://github.com/doctrine/dbal/pull/6873) thanks to @morozov

#### Foreign Keys,IBM Db2,Indexes,MySQL,Schema Management,Test Suite

 - [6872: Fix testChangeIndexWithForeignKeys() configuration](https://github.com/doctrine/dbal/pull/6872) thanks to @morozov

#### Deprecation,Improvement,Indexes,Primary Keys,Schema Definition,Schema Management

 - [6867: Introduce PrimaryKeyConstraint](https://github.com/doctrine/dbal/pull/6867) thanks to @morozov

#### Code Style,Primary Keys

 - [6864: Use consistent formatting in PRIMARY KEY DDL](https://github.com/doctrine/dbal/pull/6864) thanks to @morozov

#### Schema Introspection

 - [6854: Clean up schema introspection parsing code](https://github.com/doctrine/dbal/pull/6854) thanks to @morozov

#### Auto-increment,Deprecation,Primary Keys,SQLite,Schema Definition

 - [6849: Deprecate invalid auto-increment column definitions on SQLite](https://github.com/doctrine/dbal/pull/6849) thanks to @morozov

#### Auto-increment,Deprecation,MySQL,Primary Keys,Schema Management

 - [6841: Deprecate auto-increment being dropped with the PK on MySQL](https://github.com/doctrine/dbal/pull/6841) thanks to @morozov

#### Error Handling,Improvement,Static Analysis

 - [6832: Enable PHPStan checks for exceptions](https://github.com/doctrine/dbal/pull/6832) thanks to @morozov

#### Deprecation,Indexes,PostgreSQL,Schema Comparison

 - [6831: Deprecate modified indexes in TableDiff](https://github.com/doctrine/dbal/pull/6831) thanks to @morozov

#### Deprecation,Foreign Keys,Schema Comparison

 - [6827: Deprecate modified foreign keys in TableDiff](https://github.com/doctrine/dbal/pull/6827) thanks to @morozov

#### Deprecation,Identifiers,Platforms

 - [6823: Extract UnquotedIdentifierFolding from AbstractPlatform](https://github.com/doctrine/dbal/pull/6823) thanks to @morozov

#### SQLite,Schema Management

 - [6822: Clean up SQLitePlatform column mapping code](https://github.com/doctrine/dbal/pull/6822) thanks to @morozov

#### Identifiers

 - [6815: Remove AbstractName and mark GenericName as internal](https://github.com/doctrine/dbal/pull/6815) thanks to @morozov
 - [6783: Use InvalidState instead of NameIsNotInitialized](https://github.com/doctrine/dbal/pull/6783) thanks to @morozov

#### Deprecation,Static Analysis

 - [6805: Annotate some internal array shapes](https://github.com/doctrine/dbal/pull/6805) thanks to @morozov

#### Auto-increment,Oracle

 - [6803: Clean up OraclePlatform auto-increment code](https://github.com/doctrine/dbal/pull/6803) thanks to @morozov

#### BC Fix,Indexes

 - [6801: Unmark Index as final](https://github.com/doctrine/dbal/pull/6801) thanks to @morozov

#### Bug,Deprecation,Indexes

 - [6799: Fix false-positive primary key column length deprecation](https://github.com/doctrine/dbal/pull/6799) thanks to @morozov

#### SQL Server,Schema Management

 - [6796: Refactor SQL Server code for calling stored procedures](https://github.com/doctrine/dbal/pull/6796) thanks to @morozov

#### Identifiers,Schema,Schema Management,Test Suite

 - [6794: Accept schema name as object in FunctionalTest::dropAndCreateSchema()](https://github.com/doctrine/dbal/pull/6794) thanks to @morozov

#### Deprecation,Platforms,Schema Management

 - [6788: Mark protected platform and schema manager methods as internal](https://github.com/doctrine/dbal/pull/6788) thanks to @morozov

#### Deprecation,Identifiers,Improvement,Indexes

 - [6787: Introduce IndexedColumn](https://github.com/doctrine/dbal/pull/6787) thanks to @morozov

#### Improvement,PostgreSQL,Schema Comparison,Schema Introspection

 - [6785: feat: support non-libc collations in postgres](https://github.com/doctrine/dbal/pull/6785) thanks to @simPod

#### Identifiers,Tables

 - [6784: Accept OptionallyQualifiedName in TableEditor::setName()](https://github.com/doctrine/dbal/pull/6784) thanks to @morozov

#### Deprecation,Identifiers,Quoting,Schema Definition,Schema Introspection

 - [6769: Introduce Identifier::toNormalizedValue(), deprecate AbstractSchemaManager::_normalizeName()](https://github.com/doctrine/dbal/pull/6769) thanks to @morozov

#### Deprecation,IBM Db2,Identifiers,MySQL,Oracle,Quoting,SQLite,Schema Introspection

 - [6768: Deprecate introspection of unquoted table names with dot](https://github.com/doctrine/dbal/pull/6768) thanks to @morozov

#### Deprecation,Schema Introspection

 - [6755: Deprecate `AbstractSchemaManager::_getPortableTableDefinition()`](https://github.com/doctrine/dbal/pull/6755) thanks to @morozov
 - [6746: Introduce AbstractSchemaManager::getCurrentSchemaName()](https://github.com/doctrine/dbal/pull/6746) thanks to @morozov

#### Improvement,Schema Introspection

 - [6754: Refactor building schema introspection queries](https://github.com/doctrine/dbal/pull/6754) thanks to @morozov

#### Code Style

 - [6752: Use function db2_field_name](https://github.com/doctrine/dbal/pull/6752) thanks to @morozov

#### Improvement,SQLite,Schema Introspection

 - [6745: Remove SQLite "schema emulation" leftovers](https://github.com/doctrine/dbal/pull/6745) thanks to @morozov

#### SQLite,Schema Introspection

 - [6744: Refactor AbstractSchemaManager::fetch*/select*() API](https://github.com/doctrine/dbal/pull/6744) thanks to @morozov

#### Regression,Schema

 - [6739: Implement empty Schema::setName()](https://github.com/doctrine/dbal/pull/6739) thanks to @morozov
 - [6737: Unable to instantiate Schema objects without deprecations](https://github.com/doctrine/dbal/issues/6737) thanks to @xabbuh

#### Bug

 - [6738: Add missing sentence and placeholder.](https://github.com/doctrine/dbal/pull/6738) thanks to @greg0ire

#### Deprecation,Schema

 - [6734: Deprecate usage of Schema as AbstractAsset](https://github.com/doctrine/dbal/pull/6734) thanks to @morozov

#### Foreign Keys,Improvement,Oracle,Schema Introspection

 - [6730: Introspect foreign key constraint deferrability on Oracle](https://github.com/doctrine/dbal/pull/6730) thanks to @morozov

#### Deprecation,Foreign Keys,Improvement,Schema Management

 - [6728: Deprecate ForeignKeyConstraint features and introduce ForeignKeyConstraintEditor](https://github.com/doctrine/dbal/pull/6728) thanks to @morozov

#### Bug,PostgreSQL,Schema Introspection,Schema Management

 - [6718: Fix deferrable/deferred constraint DDL on PostgreSQL](https://github.com/doctrine/dbal/pull/6718) thanks to @morozov

#### Bug,Foreign Keys,PostgreSQL,Schema Definition

 - [6717: Invalid DDL for deferred constraints on PostgreSQL](https://github.com/doctrine/dbal/issues/6717) thanks to @morozov

#### Schema Management

 - [6714: Rename Identifier::toSql() to Identifier::toSQL()](https://github.com/doctrine/dbal/pull/6714) thanks to @morozov

#### Deprecation,Indexes,Schema Definition,Tables

 - [6710: Deprecate Table::columnsAreIndexed()](https://github.com/doctrine/dbal/pull/6710) thanks to @morozov

#### Deprecation,Foreign Keys,Schema Management

 - [6707: Deprecate conversion of RESTRICT to NO ACTION](https://github.com/doctrine/dbal/pull/6707) thanks to @morozov

#### Improvement

 - [6705: Remove final constructor for Type](https://github.com/doctrine/dbal/pull/6705) thanks to @ruudk

#### Deprecation,Foreign Keys,SQLite,Schema Introspection

 - [6701: Deprecate introspection of incomplete SQLite schema](https://github.com/doctrine/dbal/pull/6701) thanks to @morozov

#### Improvement,PHP,oci8

 - [6698: OCI8: Remove PHP 7 compat code](https://github.com/doctrine/dbal/pull/6698) thanks to @derrabus

#### New Feature,PHP,Type Conversion,Type Mapping,Types

 - [6686: Add a `NumberType` that maps to the `BcMath\Number` value object](https://github.com/doctrine/dbal/pull/6686) thanks to @derrabus

#### Deprecation,Improvement,Schema Management

 - [6685: Deprecate UniqueConstraint features and introduce UniqueConstraintEditor](https://github.com/doctrine/dbal/pull/6685) thanks to @morozov
 - [6677: Deprecate mixing qualified and unqualified names](https://github.com/doctrine/dbal/pull/6677) thanks to @morozov
 - [6646: Introduce value objects representing database object names](https://github.com/doctrine/dbal/pull/6646) thanks to @morozov

#### Deprecation,Schema Management

 - [6674: Deprecate AbstractAsset::getQuotedName()](https://github.com/doctrine/dbal/pull/6674) thanks to @morozov
 - [6657: Deprecate AbstractAsset::getShortestName()](https://github.com/doctrine/dbal/pull/6657) thanks to @morozov
 - [6610: Deprecate AbstractAsset::_setName()](https://github.com/doctrine/dbal/pull/6610) thanks to @morozov

#### Deprecation,Indexes,Schema Definition

 - [6671: Deprecate empty index name](https://github.com/doctrine/dbal/pull/6671) thanks to @morozov

#### Deprecation,Namespaces,Schema Definition

 - [6664: Deprecated AbstractAsset namespace-related methods](https://github.com/doctrine/dbal/pull/6664) thanks to @morozov

#### New Feature,Schema Definition,Tables

 - [6660: Introduce table editor](https://github.com/doctrine/dbal/pull/6660) thanks to @morozov

#### Auto-increment,Deprecation,Schema Management,Sequences

 - [6654: Deprecate Sequence::isAutoIncrementsFor()](https://github.com/doctrine/dbal/pull/6654) thanks to @morozov

#### Deprecation,Identifiers,Tables

 - [6635: Deprecate altering table configuration](https://github.com/doctrine/dbal/pull/6635) thanks to @morozov

#### New Feature,QueryBuilder

 - [6621: Add CTE support to select in QueryBuilder](https://github.com/doctrine/dbal/pull/6621) thanks to @nio-dtp

#### Deprecation

 - [6608: Mark Identifier as internal](https://github.com/doctrine/dbal/pull/6608) thanks to @morozov

#### Deprecation,Platforms,Quoting,Reserved Keywords

 - [6607: Deprecate reserved keyword lists](https://github.com/doctrine/dbal/pull/6607) thanks to @morozov

#### Deprecation,Identifiers,Quoting,Reserved Keywords

 - [6592: Deprecate relying on the current implementation of the database object name parser](https://github.com/doctrine/dbal/pull/6592) thanks to @morozov

#### Deprecation,Identifiers,Quoting

 - [6590: Deprecate AbstractPlatform::quoteIdentifier()](https://github.com/doctrine/dbal/pull/6590) thanks to @morozov

#### Columns,Foreign Keys,Improvement,Indexes,Tables

 - [6578: Rename column in indexes and constraints](https://github.com/doctrine/dbal/pull/6578) thanks to @morozov

#### Deprecation,Foreign Keys,Tables

 - [6560: Deprecate Table::removeForeignKey() and ::removeUniqueConstraint()](https://github.com/doctrine/dbal/pull/6560) thanks to @morozov

#### Columns,Deprecation,Foreign Keys,Tables

 - [6559: Deprecate dropping columns referenced by constraints](https://github.com/doctrine/dbal/pull/6559) thanks to @morozov

#### Indexes,Schema Definition

 - [6550: Simplify tracking implicitly created indexes](https://github.com/doctrine/dbal/pull/6550) thanks to @morozov

#### Improvement,Schema

 - [6549: Remove handling unuique constraint column names as associative array](https://github.com/doctrine/dbal/pull/6549) thanks to @morozov

#### New Feature,Schema Comparison

 - [6300: Make column and index renaming configurable](https://github.com/doctrine/dbal/pull/6300) thanks to @ausi