Skip to content

Commit 3640bbc

Browse files
committed
Deprecate Driver::getSchemaManager() in favor of AbstractPlatform::createSchemaManager()
1 parent 6dbe7ec commit 3640bbc

17 files changed

+135
-0
lines changed

UPGRADE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ awareness about deprecated code.
88

99
# Upgrade to 3.4
1010

11+
## Deprecated `Driver::getSchemaManager()`.
12+
13+
The `Driver::getSchemaManager()` method has been deprecated. Use `AbstractPlatform::createSchemaManager()` instead.
14+
1115
## Deprecated `ConsolerRunner`.
1216

1317
The `ConsoleRunner` class has been deprecated. Use Symfony Console documentation

psalm.xml.dist

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,10 @@
317317
<referencedMethod name="Doctrine\DBAL\Schema\Schema::visit"/>
318318
<referencedMethod name="Doctrine\DBAL\Schema\Sequence::visit"/>
319319
<referencedMethod name="Doctrine\DBAL\Schema\Table::visit"/>
320+
<!--
321+
TODO: remove in 4.0.0
322+
-->
323+
<referencedMethod name="Doctrine\DBAL\Driver::getSchemaManager"/>
320324
</errorLevel>
321325
</DeprecatedMethod>
322326
<DeprecatedProperty>

src/Driver.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public function getDatabasePlatform();
3737
* Gets the SchemaManager that can be used to inspect and change the underlying
3838
* database schema of the platform this driver connects to.
3939
*
40+
* @deprecated Use {@link AbstractPlatform::createSchemaManager()} instead.
41+
*
4042
* @return AbstractSchemaManager
4143
*/
4244
public function getSchemaManager(Connection $conn, AbstractPlatform $platform);

src/Driver/AbstractDB2Driver.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Doctrine\DBAL\Platforms\AbstractPlatform;
1010
use Doctrine\DBAL\Platforms\DB2Platform;
1111
use Doctrine\DBAL\Schema\DB2SchemaManager;
12+
use Doctrine\Deprecations\Deprecation;
1213

1314
use function assert;
1415

@@ -27,9 +28,18 @@ public function getDatabasePlatform()
2728

2829
/**
2930
* {@inheritdoc}
31+
*
32+
* @deprecated Use {@link DB2Platform::createSchemaManager()} instead.
3033
*/
3134
public function getSchemaManager(Connection $conn, AbstractPlatform $platform)
3235
{
36+
Deprecation::triggerIfCalledFromOutside(
37+
'doctrine/dbal',
38+
'https://github.com/doctrine/dbal/pull/5458',
39+
'AbstractDB2Driver::getSchemaManager() is deprecated.'
40+
. ' Use DB2Platform::createSchemaManager() instead.'
41+
);
42+
3343
assert($platform instanceof DB2Platform);
3444

3545
return new DB2SchemaManager($conn, $platform);

src/Driver/AbstractMySQLDriver.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,19 @@ public function getDatabasePlatform()
132132
/**
133133
* {@inheritdoc}
134134
*
135+
* @deprecated Use {@link AbstractMySQLPlatform::createSchemaManager()} instead.
136+
*
135137
* @return MySQLSchemaManager
136138
*/
137139
public function getSchemaManager(Connection $conn, AbstractPlatform $platform)
138140
{
141+
Deprecation::triggerIfCalledFromOutside(
142+
'doctrine/dbal',
143+
'https://github.com/doctrine/dbal/pull/5458',
144+
'AbstractMySQLDriver::getSchemaManager() is deprecated.'
145+
. ' Use MySQLPlatform::createSchemaManager() instead.'
146+
);
147+
139148
assert($platform instanceof AbstractMySQLPlatform);
140149

141150
return new MySQLSchemaManager($conn, $platform);

src/Driver/AbstractOracleDriver.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Doctrine\DBAL\Platforms\AbstractPlatform;
1111
use Doctrine\DBAL\Platforms\OraclePlatform;
1212
use Doctrine\DBAL\Schema\OracleSchemaManager;
13+
use Doctrine\Deprecations\Deprecation;
1314

1415
use function assert;
1516

@@ -28,9 +29,18 @@ public function getDatabasePlatform()
2829

2930
/**
3031
* {@inheritdoc}
32+
*
33+
* @deprecated Use {@link OraclePlatform::createSchemaManager()} instead.
3134
*/
3235
public function getSchemaManager(Connection $conn, AbstractPlatform $platform)
3336
{
37+
Deprecation::triggerIfCalledFromOutside(
38+
'doctrine/dbal',
39+
'https://github.com/doctrine/dbal/pull/5458',
40+
'AbstractOracleDriver::getSchemaManager() is deprecated.'
41+
. ' Use OraclePlatform::createSchemaManager() instead.'
42+
);
43+
3444
assert($platform instanceof OraclePlatform);
3545

3646
return new OracleSchemaManager($conn, $platform);

src/Driver/AbstractPostgreSQLDriver.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,18 @@ public function getDatabasePlatform()
6464

6565
/**
6666
* {@inheritdoc}
67+
*
68+
* @deprecated Use {@link PostgreSQLPlatform::createSchemaManager()} instead.
6769
*/
6870
public function getSchemaManager(Connection $conn, AbstractPlatform $platform)
6971
{
72+
Deprecation::triggerIfCalledFromOutside(
73+
'doctrine/dbal',
74+
'https://github.com/doctrine/dbal/pull/5458',
75+
'AbstractPostgreSQLDriver::getSchemaManager() is deprecated.'
76+
. ' Use PostgreSQLPlatform::createSchemaManager() instead.'
77+
);
78+
7079
assert($platform instanceof PostgreSQLPlatform);
7180

7281
return new PostgreSQLSchemaManager($conn, $platform);

src/Driver/AbstractSQLServerDriver.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Doctrine\DBAL\Platforms\AbstractPlatform;
1010
use Doctrine\DBAL\Platforms\SQLServer2012Platform;
1111
use Doctrine\DBAL\Schema\SQLServerSchemaManager;
12+
use Doctrine\Deprecations\Deprecation;
1213

1314
use function assert;
1415

@@ -27,9 +28,18 @@ public function getDatabasePlatform()
2728

2829
/**
2930
* {@inheritdoc}
31+
*
32+
* @deprecated Use {@link SQLServerPlatform::createSchemaManager()} instead.
3033
*/
3134
public function getSchemaManager(Connection $conn, AbstractPlatform $platform)
3235
{
36+
Deprecation::triggerIfCalledFromOutside(
37+
'doctrine/dbal',
38+
'https://github.com/doctrine/dbal/pull/5458',
39+
'AbstractSQLServerDriver::getSchemaManager() is deprecated.'
40+
. ' Use SQLServerPlatform::createSchemaManager() instead.'
41+
);
42+
3343
assert($platform instanceof SQLServer2012Platform);
3444

3545
return new SQLServerSchemaManager($conn, $platform);

src/Driver/AbstractSQLiteDriver.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Doctrine\DBAL\Platforms\AbstractPlatform;
1010
use Doctrine\DBAL\Platforms\SqlitePlatform;
1111
use Doctrine\DBAL\Schema\SqliteSchemaManager;
12+
use Doctrine\Deprecations\Deprecation;
1213

1314
use function assert;
1415

@@ -27,9 +28,18 @@ public function getDatabasePlatform()
2728

2829
/**
2930
* {@inheritdoc}
31+
*
32+
* @deprecated Use {@link SqlitePlatform::createSchemaManager()} instead.
3033
*/
3134
public function getSchemaManager(Connection $conn, AbstractPlatform $platform)
3235
{
36+
Deprecation::triggerIfCalledFromOutside(
37+
'doctrine/dbal',
38+
'https://github.com/doctrine/dbal/pull/5458',
39+
'AbstractSQLiteDriver::getSchemaManager() is deprecated.'
40+
. ' Use SqlitePlatform::createSchemaManager() instead.'
41+
);
42+
3343
assert($platform instanceof SqlitePlatform);
3444

3545
return new SqliteSchemaManager($conn, $platform);

src/Driver/Middleware/AbstractDriverMiddleware.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Doctrine\DBAL\Driver\API\ExceptionConverter;
88
use Doctrine\DBAL\Platforms\AbstractPlatform;
99
use Doctrine\DBAL\VersionAwarePlatformDriver;
10+
use Doctrine\Deprecations\Deprecation;
1011

1112
abstract class AbstractDriverMiddleware implements VersionAwarePlatformDriver
1213
{
@@ -36,9 +37,18 @@ public function getDatabasePlatform()
3637

3738
/**
3839
* {@inheritdoc}
40+
*
41+
* @deprecated Use {@link AbstractPlatform::createSchemaManager()} instead.
3942
*/
4043
public function getSchemaManager(Connection $conn, AbstractPlatform $platform)
4144
{
45+
Deprecation::triggerIfCalledFromOutside(
46+
'doctrine/dbal',
47+
'https://github.com/doctrine/dbal/pull/5458',
48+
'AbstractDriverMiddleware::getSchemaManager() is deprecated.'
49+
. ' Use AbstractPlatform::createSchemaManager() instead.'
50+
);
51+
4252
return $this->wrappedDriver->getSchemaManager($conn, $platform);
4353
}
4454

src/Platforms/AbstractMySQLPlatform.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
namespace Doctrine\DBAL\Platforms;
44

5+
use Doctrine\DBAL\Connection;
56
use Doctrine\DBAL\Exception;
67
use Doctrine\DBAL\Schema\ForeignKeyConstraint;
78
use Doctrine\DBAL\Schema\Identifier;
89
use Doctrine\DBAL\Schema\Index;
10+
use Doctrine\DBAL\Schema\MySQLSchemaManager;
911
use Doctrine\DBAL\Schema\Table;
1012
use Doctrine\DBAL\Schema\TableDiff;
1113
use Doctrine\DBAL\TransactionIsolationLevel;
@@ -1280,4 +1282,9 @@ private function getDatabaseNameSQL(?string $databaseName): string
12801282

12811283
return $this->getCurrentDatabaseExpression();
12821284
}
1285+
1286+
public function createSchemaManager(Connection $connection): MySQLSchemaManager
1287+
{
1288+
return new MySQLSchemaManager($connection, $this);
1289+
}
12831290
}

src/Platforms/AbstractPlatform.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Doctrine\DBAL\Platforms;
44

55
use Doctrine\Common\EventManager;
6+
use Doctrine\DBAL\Connection;
67
use Doctrine\DBAL\Event\SchemaAlterTableAddColumnEventArgs;
78
use Doctrine\DBAL\Event\SchemaAlterTableChangeColumnEventArgs;
89
use Doctrine\DBAL\Event\SchemaAlterTableEventArgs;
@@ -16,6 +17,7 @@
1617
use Doctrine\DBAL\Exception\InvalidLockMode;
1718
use Doctrine\DBAL\LockMode;
1819
use Doctrine\DBAL\Platforms\Keywords\KeywordList;
20+
use Doctrine\DBAL\Schema\AbstractSchemaManager;
1921
use Doctrine\DBAL\Schema\Column;
2022
use Doctrine\DBAL\Schema\ColumnDiff;
2123
use Doctrine\DBAL\Schema\Constraint;
@@ -4335,4 +4337,17 @@ public function columnsEqual(Column $column1, Column $column2): bool
43354337

43364338
return $column1->getType() === $column2->getType();
43374339
}
4340+
4341+
/**
4342+
* Creates the schema manager that can be used to inspect and change the underlying
4343+
* database schema according to the dialect of the platform.
4344+
*
4345+
* @throws Exception
4346+
*
4347+
* @abstract
4348+
*/
4349+
public function createSchemaManager(Connection $connection): AbstractSchemaManager
4350+
{
4351+
throw Exception::notSupported(__METHOD__);
4352+
}
43384353
}

src/Platforms/DB2Platform.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
namespace Doctrine\DBAL\Platforms;
44

5+
use Doctrine\DBAL\Connection;
56
use Doctrine\DBAL\Exception;
67
use Doctrine\DBAL\Schema\ColumnDiff;
8+
use Doctrine\DBAL\Schema\DB2SchemaManager;
79
use Doctrine\DBAL\Schema\Identifier;
810
use Doctrine\DBAL\Schema\Index;
911
use Doctrine\DBAL\Schema\TableDiff;
@@ -968,4 +970,9 @@ public function getListTableCommentsSQL(string $table): string
968970
$this->quoteStringLiteral($table)
969971
);
970972
}
973+
974+
public function createSchemaManager(Connection $connection): DB2SchemaManager
975+
{
976+
return new DB2SchemaManager($connection, $this);
977+
}
971978
}

src/Platforms/OraclePlatform.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
namespace Doctrine\DBAL\Platforms;
44

5+
use Doctrine\DBAL\Connection;
56
use Doctrine\DBAL\Exception;
67
use Doctrine\DBAL\Schema\ForeignKeyConstraint;
78
use Doctrine\DBAL\Schema\Identifier;
89
use Doctrine\DBAL\Schema\Index;
10+
use Doctrine\DBAL\Schema\OracleSchemaManager;
911
use Doctrine\DBAL\Schema\Sequence;
1012
use Doctrine\DBAL\Schema\Table;
1113
use Doctrine\DBAL\Schema\TableDiff;
@@ -1251,4 +1253,9 @@ public function getListTableCommentsSQL(string $table, ?string $database = null)
12511253
$ownerCondition
12521254
);
12531255
}
1256+
1257+
public function createSchemaManager(Connection $connection): OracleSchemaManager
1258+
{
1259+
return new OracleSchemaManager($connection, $this);
1260+
}
12541261
}

src/Platforms/PostgreSQLPlatform.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
namespace Doctrine\DBAL\Platforms;
44

5+
use Doctrine\DBAL\Connection;
56
use Doctrine\DBAL\Schema\Column;
67
use Doctrine\DBAL\Schema\ColumnDiff;
78
use Doctrine\DBAL\Schema\ForeignKeyConstraint;
89
use Doctrine\DBAL\Schema\Identifier;
910
use Doctrine\DBAL\Schema\Index;
11+
use Doctrine\DBAL\Schema\PostgreSQLSchemaManager;
1012
use Doctrine\DBAL\Schema\Sequence;
1113
use Doctrine\DBAL\Schema\TableDiff;
1214
use Doctrine\DBAL\Types\BinaryType;
@@ -1277,4 +1279,9 @@ public function getListTableMetadataSQL(string $table, ?string $schema = null):
12771279
$this->quoteStringLiteral($table)
12781280
);
12791281
}
1282+
1283+
public function createSchemaManager(Connection $connection): PostgreSQLSchemaManager
1284+
{
1285+
return new PostgreSQLSchemaManager($connection, $this);
1286+
}
12801287
}

src/Platforms/SQLServerPlatform.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Doctrine\DBAL\Platforms;
44

5+
use Doctrine\DBAL\Connection;
56
use Doctrine\DBAL\Exception\InvalidLockMode;
67
use Doctrine\DBAL\LockMode;
78
use Doctrine\DBAL\Schema\Column;
@@ -10,6 +11,7 @@
1011
use Doctrine\DBAL\Schema\Identifier;
1112
use Doctrine\DBAL\Schema\Index;
1213
use Doctrine\DBAL\Schema\Sequence;
14+
use Doctrine\DBAL\Schema\SQLServerSchemaManager;
1315
use Doctrine\DBAL\Schema\Table;
1416
use Doctrine\DBAL\Schema\TableDiff;
1517
use Doctrine\Deprecations\Deprecation;
@@ -1696,4 +1698,9 @@ private function shouldAddOrderBy($query): bool
16961698

16971699
return true;
16981700
}
1701+
1702+
public function createSchemaManager(Connection $connection): SQLServerSchemaManager
1703+
{
1704+
return new SQLServerSchemaManager($connection, $this);
1705+
}
16991706
}

src/Platforms/SqlitePlatform.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Doctrine\DBAL\Platforms;
44

5+
use Doctrine\DBAL\Connection;
56
use Doctrine\DBAL\Driver\API\SQLite\UserDefinedFunctions;
67
use Doctrine\DBAL\Exception;
78
use Doctrine\DBAL\Schema\Column;
@@ -10,6 +11,7 @@
1011
use Doctrine\DBAL\Schema\Identifier;
1112
use Doctrine\DBAL\Schema\Index;
1213
use Doctrine\DBAL\Schema\SchemaException;
14+
use Doctrine\DBAL\Schema\SqliteSchemaManager;
1315
use Doctrine\DBAL\Schema\Table;
1416
use Doctrine\DBAL\Schema\TableDiff;
1517
use Doctrine\DBAL\TransactionIsolationLevel;
@@ -1381,4 +1383,9 @@ private function getPrimaryIndexInAlteredTable(TableDiff $diff, Table $fromTable
13811383

13821384
return $primaryIndex;
13831385
}
1386+
1387+
public function createSchemaManager(Connection $connection): SqliteSchemaManager
1388+
{
1389+
return new SqliteSchemaManager($connection, $this);
1390+
}
13841391
}

0 commit comments

Comments
 (0)