From 058c448a9bf4c749a7319231696163d93f5cae08 Mon Sep 17 00:00:00 2001 From: Sergei Morozov Date: Wed, 15 Dec 2021 10:11:06 -0800 Subject: [PATCH] Deprecate AbstractPlatform::prefersIdentityColumns() --- UPGRADE.md | 5 +++++ psalm.xml.dist | 9 +++++++++ src/Platforms/AbstractMySQLPlatform.php | 8 ++++++++ src/Platforms/AbstractPlatform.php | 8 ++++++++ src/Platforms/DB2Platform.php | 8 ++++++++ src/Platforms/SQLServerPlatform.php | 8 ++++++++ src/Platforms/SqlitePlatform.php | 8 ++++++++ tests/Functional/WriteTest.php | 2 +- 8 files changed, 55 insertions(+), 1 deletion(-) diff --git a/UPGRADE.md b/UPGRADE.md index 3f5fc6a45f4..8197a7b6e3c 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -220,6 +220,11 @@ Relying on the name of the platform is discouraged. To identify the platform, us The `ServerInfoAwareConnection` and `VersionAwarePlatformDriver` interfaces are deprecated. In the next major version, all drivers and driver connections will be required to implement the APIs aware of the server version. +## Deprecated `AbstractPlatform::prefersIdentityColumns()`. + +Whether to use identity columns should be decided by the application developer. For example, based on the set +of supported database platforms. + ## Deprecated `AbstractPlatform::getNowExpression()`. Relying on dates generated by the database is deprecated. Generate dates within the application. diff --git a/psalm.xml.dist b/psalm.xml.dist index 80a094d4cf2..f63a1c8ef43 100644 --- a/psalm.xml.dist +++ b/psalm.xml.dist @@ -210,6 +210,15 @@ See https://github.com/doctrine/dbal/pull/4966 --> + + + + + + diff --git a/src/Platforms/AbstractMySQLPlatform.php b/src/Platforms/AbstractMySQLPlatform.php index f95d58d29d7..9030f30c3da 100644 --- a/src/Platforms/AbstractMySQLPlatform.php +++ b/src/Platforms/AbstractMySQLPlatform.php @@ -279,11 +279,19 @@ public function getBooleanTypeDeclarationSQL(array $column) /** * {@inheritDoc} * + * @deprecated + * * MySQL prefers "autoincrement" identity columns since sequences can only * be emulated with a table. */ public function prefersIdentityColumns() { + Deprecation::trigger( + 'doctrine/dbal', + 'https://github.com/doctrine/dbal/pulls/1519', + 'AbstractMySQLPlatform::prefersIdentityColumns() is deprecated.' + ); + return true; } diff --git a/src/Platforms/AbstractPlatform.php b/src/Platforms/AbstractPlatform.php index 37b1482140e..198542195fb 100644 --- a/src/Platforms/AbstractPlatform.php +++ b/src/Platforms/AbstractPlatform.php @@ -2914,10 +2914,18 @@ public function getColumnCollationDeclarationSQL($collation) * Whether the platform prefers identity columns (eg. autoincrement) for ID generation. * Subclasses should override this method to return TRUE if they prefer identity columns. * + * @deprecated + * * @return bool */ public function prefersIdentityColumns() { + Deprecation::trigger( + 'doctrine/dbal', + 'https://github.com/doctrine/dbal/pulls/1519', + 'AbstractPlatform::prefersIdentityColumns() is deprecated.' + ); + return false; } diff --git a/src/Platforms/DB2Platform.php b/src/Platforms/DB2Platform.php index 90ba9aa34b2..264ef3f4266 100644 --- a/src/Platforms/DB2Platform.php +++ b/src/Platforms/DB2Platform.php @@ -847,9 +847,17 @@ public function supportsIdentityColumns() /** * {@inheritDoc} + * + * @deprecated */ public function prefersIdentityColumns() { + Deprecation::trigger( + 'doctrine/dbal', + 'https://github.com/doctrine/dbal/pulls/1519', + 'DB2Platform::prefersIdentityColumns() is deprecated.' + ); + return true; } diff --git a/src/Platforms/SQLServerPlatform.php b/src/Platforms/SQLServerPlatform.php index c9e8150ade5..732cb636346 100644 --- a/src/Platforms/SQLServerPlatform.php +++ b/src/Platforms/SQLServerPlatform.php @@ -98,9 +98,17 @@ public function getDateDiffExpression($date1, $date2) * * Microsoft SQL Server prefers "autoincrement" identity columns * since sequences can only be emulated with a table. + * + * @deprecated */ public function prefersIdentityColumns() { + Deprecation::trigger( + 'doctrine/dbal', + 'https://github.com/doctrine/dbal/pulls/1519', + 'SQLServerPlatform::prefersIdentityColumns() is deprecated.' + ); + return true; } diff --git a/src/Platforms/SqlitePlatform.php b/src/Platforms/SqlitePlatform.php index 2775ee49a3d..6d5adda49c8 100644 --- a/src/Platforms/SqlitePlatform.php +++ b/src/Platforms/SqlitePlatform.php @@ -205,9 +205,17 @@ public function getSetTransactionIsolationSQL($level) /** * {@inheritDoc} + * + * @deprecated */ public function prefersIdentityColumns() { + Deprecation::trigger( + 'doctrine/dbal', + 'https://github.com/doctrine/dbal/pulls/1519', + 'SqlitePlatform::prefersIdentityColumns() is deprecated.' + ); + return true; } diff --git a/tests/Functional/WriteTest.php b/tests/Functional/WriteTest.php index 92b7c3eb5e1..944dccdb62f 100644 --- a/tests/Functional/WriteTest.php +++ b/tests/Functional/WriteTest.php @@ -149,7 +149,7 @@ public function testUpdate(): void public function testLastInsertId(): void { - if (! $this->connection->getDatabasePlatform()->prefersIdentityColumns()) { + if (! $this->connection->getDatabasePlatform()->supportsIdentityColumns()) { self::markTestSkipped('Test only works on platforms with identity columns.'); }